STM32----TIM6和TIM7
基本定時器TIM6和TIM7
對于STM32來說有8個TIM定時器,TIM1和TIM8為高級定時器、TIM2~5為通用定時器,TIM6和TIM7位基本定時器。他們都是十六位的定時器。
今天說的是TIM6和TIM7基本定時器,它的功能最簡單。有兩個寄存器一個是TIMx_CNT(小跑),另一個是TIMx_ARR(目標)。工作時每來一個時鐘脈沖小跑就加一,直到小跑中的數(shù)值和目標中的數(shù)值相等,將小跑中的數(shù)值清零,進入中斷函數(shù)進行相應(yīng)的處理。可以看到這個過程中比較重要的就是這個時鐘脈沖,脈沖來的快慢對計數(shù)有相當大的影響。
考慮時鐘源相關(guān)的知識:通常情況下配置AHB=72MHz,APB1的預(yù)分頻器的分頻系數(shù)為2,剛好PCLK1=36MHz,此時TIMxCLK = (AHB/2)*2=72MHz。對于該TIMxCLK時鐘是TIM2~7的公共時鐘源,TIM1和TIM8則是在APB2.
而對于上面所說的技術(shù)脈沖并不是這個TIMxCLK,而是TIMxCLK經(jīng)過PSC預(yù)分頻器之后的。對于PSC預(yù)分頻器中的分頻參數(shù)是需要我們手動配置的參數(shù)的范圍為1-65535.
通過上面的基本定時器的工作過程和時鐘源的相關(guān)內(nèi)容,在基本定時器中主要配置兩個參數(shù),一個是PSC預(yù)分頻器的分頻系數(shù),另一個就是TIMxARR的值,該值作為定時器計數(shù)的上限值,決定了每次進入中斷的時間。由這兩個值就可計算出進入一次中斷時間t
用于計數(shù)的時鐘頻率=TIMxCLKPSC分頻系數(shù)+1用于計數(shù)的時鐘頻率={\frac{TIMxCLK}{PSC分頻系數(shù)+1}}用于計數(shù)的時鐘頻率=PSC分頻系數(shù)+1TIMxCLK?
進入一次中斷的時間t=1TIMxCLKPSC分頻系數(shù)+1?TIMxARR進入一次中斷的時間t=\frac{1}{\frac{TIMxCLK}{PSC分頻系數(shù)+1}}*TIMxARR進入一次中斷的時間t=PSC分頻系數(shù)+1TIMxCLK?1??TIMxARR
具體的代碼:
在中斷中完成相應(yīng)的定時任務(wù):
void TIM6_IRQHandler(void) {if(TIM_GetITStatus(TIM6,TIM_IT_Update)!=RESET){GPIO_WriteBit(GPIOA,GPIO_Pin_8,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8)));TIM_ClearITPendingBit(TIM6,TIM_IT_Update);} } void TIM7_IRQHandler(void) {if(TIM_GetITStatus(TIM7,TIM_IT_Update) != RESET){tim7_count++;if(tim7_count == 500){tim7_count = 0;GPIO_WriteBit(GPIOD,GPIO_Pin_2,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_2)));}TIM_ClearITPendingBit(TIM7,TIM_IT_Update);} }STM32庫開發(fā)實戰(zhàn)指南
總結(jié)
以上是生活随笔為你收集整理的STM32----TIM6和TIM7的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: requestmapping配置页面后_
- 下一篇: 博客积分规则 博客等级