1. 程式人生 > >STM32CubeMx之定時器

STM32CubeMx之定時器

一、配置

點選.ioc重新配置一個工程
開啟定時器TIM3,選擇內部時鐘。

要確定定時的時間我們必須先確定CK_PSC的頻率,TIM3配置中選擇內部時鐘作為時鐘源,檢視資料手冊或者檢視程式碼可以知道TIM3是掛接到APB1時鐘線上。

計數器暫存器 (TIMx_CNT)儲存的是當前的計數值。預分頻器 (TIMx_PSC)為多少個SK_PSC脈衝計數一次,自動重灌暫存器 (TIMx_ARR)儲存的是計數器的溢位值。

內部時鐘設定為不分頻(CKD),則CK_PSC的時鐘頻率等於APB1的時鐘頻率84MHz,即84000 000Hz。若要定時時間為1s,則即可設定8400分頻(預分頻器暫存器 (TIMx_PSC)的值為8400-1),定時器的時鐘CK_CNT的頻率為10000Hz.則自動過載暫存器 (TIMx_ARR)設定為10000-1即定時為1s.TRGO為觸發輸出,可以觸發內部ADC/DAC,這裡我們沒有用到這個功能,引數為預設設定

在NVIC Settings框勾選開啟定時器中斷。優先順序為預設。或者在NVIC配置中使能TIM3中斷。

生成報告,以及生成程式碼,編譯程式。

在main下面新增定時器中斷回撥函式:

/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
    if (htim->Instance == htim3.Instance){

    }

}
/* USER CODE END 4 */

啟動基本定時器中斷模式計數。

HAL_TIM_Base_Start_IT(&htim3);