STM32F107的通用定時器中斷實驗總結
1. STM32F107的通用定時器是指: TIM2、TIM3、TIM4、TIM5、
STM32F107的高階定時器是指: TIM1、TIM8
STM32F107的基本定時器是指: TIM6、TIM7
2. STM32F107的通用定時器(TIM2、TIM3、TIM4、TIM5)的模式有向上計數、向下計數、中央對齊模式。
向上計數模式:計數器從0計數到自動載入值(TIMx_ARR),然後重新從0開始計數並且產生一個計數器溢位事件。
向下計數模式:計數器從自動裝入的值(TIMx_ARR)開始向下計數到0,然後從自動裝入的值重新開始,併產生一個計數器向下溢位事件。
中央對齊模式(向上/向下計數):計數器從0開始計數到自動裝入的值-1,產生一個計數器溢位事件,然後向下計數到1並且產生一個計數器溢位事件;然後再從0開始重新計數。
3. STM32F107的通用定時器的時鐘選擇有多種,一般使用RCC提供的內部時鐘TIMxCLK, 由APB1時鐘分頻提供。
4. 狀態標誌位獲取和清除
FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_tTIM_FLAG);
void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_tTIM_IT);
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_tTIM_IT);
定時器中斷實現步驟:
1. 定時器時鐘使能。 RCC_APB1PeriphClockCmd();
2. 初始化定時器,配置ARR,PSC。 TIM_TimeBaseInit();
3. 開啟定時器中斷,配置NVIC。 void TIM_ITConfig(); NVIC_Init();
4. 使能定時器。 TIM_Cmd();
5. 編寫中斷服務函式。 TIMx_IRQHandler();
1) TIM_TimeBaseStructure.TIM_ClockDivision這一行程式碼是幹嗎的啊
CKD[1:0]
用來遮蔽一些不需要的毛刺的。比如你數字濾波器的頻率為1M,N=8,則頻率大於1MHz/8=125KHz(持續時間小於8us)的脈衝都會被忽略。可以用在按鍵消抖之類的。