疑問1:在使用STM32通用或高級定時器的比較輸出時,如果采用中心對齊計數模式做PWM輸出,并使用比較事件作為ADC的觸發啟動。那么,在一個完整的計數周期內,可能發生2次比較事件,想知道如何確定使用哪次比較事件進行觸發呢?換句話說,是否可以對比較事件進行選擇配置?答案是肯定的。
下圖是采樣中央對齊計數模式,PWM mode 1的PWM輸出情形。ARR=8,CCR=4.
在上面的應用情況下,比較事件可能發生在CNT與CCR第一次匹配時,即發生在向上計數階段,也可能發生在CNT與CCR第二次匹配時,即發生在向下計數階段。到底發生在哪個階段,取決于相關控制寄存器的配置,這里跟寄存器TIMx_CR1中CMS控制位有關。
從該寄存器CMS控制位的描述不難看出,在計數器使用中心對齊計數模式做比較輸出時,比較事件的發生是可以選擇的。可以僅僅發生在向上計數階段或向下計數階段,也可以配置為上下兩個計數階段都產生比較事件。這點可以結合上面圖形的箭頭提示加以認知和理解。【CcxIF為相應通道的比較事件標志位】
疑問2:有人反饋,在定時器的溢出中斷里打斷點時,發現更新中斷標志無法被清零,可用戶在中斷服務程序中實實在在的有對更新事件標志實施清零操作。
其實,并不是沒法對更新事件標志清零,這只是種誤解。原因是盡管此時客戶在清零操作后的代碼處打上了斷點,但由于定時器并沒有停止計數,如果再加上溢出周期較短。程序剛做完清除操作并停止在定時器中斷服務程序斷點后,由于定時器還在持續計數而產生新的溢出更新事件,令更新事件標志再次被置位,這樣給人以更新事件標志沒法被清零的錯覺。
對于調試狀態下定時器的計數動作是可以軟件配置選擇的,即當程序運行到斷點后,定時器是繼續計數還是暫停下來可用戶軟件配置決定,【這里的定時器不僅僅指常規定時器,還包括看門狗】。
具體到上面案例,如果希望在斷點處計數器暫時不要計數,我們可以軟件上做相應配置。這里涉及到寄存器DBGMCU_CR,讓相關定時器在調試狀態遇到斷點時暫停計數。
-
STM32
+關注
關注
2266文章
10871瀏覽量
354791 -
定時器
+關注
關注
23文章
3237瀏覽量
114467
原文標題:stm32定時器應用中的2個疑問
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論