日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32----TIM6和TIM7

發布時間:2025/3/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32----TIM6和TIM7 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本定時器TIM6和TIM7

對于STM32來說有8個TIM定時器,TIM1和TIM8為高級定時器、TIM2~5為通用定時器,TIM6和TIM7位基本定時器。他們都是十六位的定時器。
今天說的是TIM6和TIM7基本定時器,它的功能最簡單。有兩個寄存器一個是TIMx_CNT(小跑),另一個是TIMx_ARR(目標)。工作時每來一個時鐘脈沖小跑就加一,直到小跑中的數值和目標中的數值相等,將小跑中的數值清零,進入中斷函數進行相應的處理。可以看到這個過程中比較重要的就是這個時鐘脈沖,脈沖來的快慢對計數有相當大的影響。
考慮時鐘源相關的知識:通常情況下配置AHB=72MHz,APB1的預分頻器的分頻系數為2,剛好PCLK1=36MHz,此時TIMxCLK = (AHB/2)*2=72MHz。對于該TIMxCLK時鐘是TIM2~7的公共時鐘源,TIM1和TIM8則是在APB2.
而對于上面所說的技術脈沖并不是這個TIMxCLK,而是TIMxCLK經過PSC預分頻器之后的。對于PSC預分頻器中的分頻參數是需要我們手動配置的參數的范圍為1-65535.

通過上面的基本定時器的工作過程和時鐘源的相關內容,在基本定時器中主要配置兩個參數,一個是PSC預分頻器的分頻系數,另一個就是TIMxARR的值,該值作為定時器計數的上限值,決定了每次進入中斷的時間。由這兩個值就可計算出進入一次中斷時間t
用于計數的時鐘頻率=TIMxCLKPSC分頻系數+1用于計數的時鐘頻率={\frac{TIMxCLK}{PSC分頻系數+1}}=PSC+1TIMxCLK?
進入一次中斷的時間t=1TIMxCLKPSC分頻系數+1?TIMxARR進入一次中斷的時間t=\frac{1}{\frac{TIMxCLK}{PSC分頻系數+1}}*TIMxARRt=PSC+1TIMxCLK?1??TIMxARR
具體的代碼:

void TIM6_Config(void)//配置TIM6每隔一秒進入一次中斷 {TIM_TimeBaseInitTypeDef tim_s;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);tim_s.TIM_Prescaler = 7199;tim_s.TIM_Period = 9999;TIM_TimeBaseInit(TIM6,&tim_s);TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);TIM_Cmd(TIM6,ENABLE); } void TIM7_Config(void)//配置TIM7每隔1ms進入一次中斷 {TIM_TimeBaseInitTypeDef tim_s;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7,ENABLE);tim_s.TIM_Prescaler = 71;tim_s.TIM_Period = 999;TIM_TimeBaseInit(TIM7,&tim_s);TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE);TIM_Cmd(TIM7,ENABLE); }

在中斷中完成相應的定時任務:

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庫開發實戰指南

總結

以上是生活随笔為你收集整理的STM32----TIM6和TIM7的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。