我們在做嵌入式產品的開發(fā)過程中,有時需要輸出指定數目的脈沖。實現它的方法較多,這里介紹一種利用STM32定時器的單脈沖模式來實現的方法。
STM32定時器的單脈沖輸出功能,其實是定時器輸出比較功能的一個特殊應用。即讓定時器在某個事件觸發(fā)后的一段時間產生指定脈寬的單脈沖信號。
計數器的啟動通常可由從模式控制器控制,可由比較輸出模式或PWM輸出模式來產生波形。通過置位OPM@TIMx_CR1來在下一個更新事件時關閉計數器來實現單脈沖輸出。 

STM32定時器里有個重復計數器TIMx_RCR,當它的值是個非0值N時,計數器不再每次溢出【上溢或下溢】時都產生更新事件,而是當發(fā)生第N+1次溢出時才產生更新事件。如果RCR=0的話,就是每次溢出都產生更新事件。 那么,當把單脈沖輸出模式與RCR寄存器配合使用時,就不難生成指定數目的脈沖個數。此時脈沖個數為TIMx_RCR的值加1。 
在上面原理的基礎上,通過使用STM32定時器的主從模式還可以方便地實現周期性地輸出指定數目的脈沖。 
假如按上圖所示,TIM2與TIM1主從連接,實現周期性的輸出5個脈沖。 TIM2 配置為主 觸發(fā)模式,觸發(fā)TIM1的計數; TIMER1 配置為從 單脈沖輸出模式;TIM1_RCR=4;


關于上述內容的更多細節(jié)可以點擊左下方的”閱讀原文”去下載AN4776,相關應用的參考固件代碼,可以去www.st.com/stm32 搜索X-CUBE-TIMCOOKER下載。整個固件包解壓后的工程目錄如下所示,其中就有上面提到的兩種應用的參考工程代碼。 
|