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