STM32CubeMx入門教程(3):定時器的使用

2023-07-11 16:08:26 來源:嵌入式開發始站

導語“ 使用STM32CubeMx 生成初始化定時器代碼,實現定時器特定定時”


(資料圖片僅供參考)

系統要求

?硬件:野火指南者

?軟件 CUbeMX & KEIL

?F103總線系統框圖

項目文件還是在LED,USART 項目的基礎上添加配置代碼。

我們可以看到共8個定時器,TIM1在APB2總線上,其他的在APB1系統總線上。

第二節CubeMx配置

時鐘配置

在CubeMX的時鐘配置中,可以看到,TIM1 和TIM2時鐘是72MHz。

定時器TIME1配置

使能TIME1全局中斷:

TIME2的配置

TIME1 & TIME2 使用內部時鐘源,參數配置的時候通過計算實現1S的定時中斷。

定時:(72000000/(7199+1)/(9999+1))= 1Hz。

可以設置TIME2 定時2S,參數設置為:(72000000/(7199+1)/(19999+1))= 0.5Hz

使能TIME2全局中斷模式:

第三節 MDK代碼編寫

(1)在main.c 中編寫定時器中斷回調函數,我們只需編寫中斷回調函數,不需要直接編寫中斷處理函數。

/* USER CODE BEGIN 4 */void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){   if(TIM1 == htim- >Instance){     HAL_GPIO_TogglePin(LED_G_GPIO_Port,LED_G_Pin);     printf("\\nTIM1 定時1s 時間到\\t\\n");     }     if(TIM2 == htim- >Instance){       HAL_GPIO_TogglePin(LED_G_GPIO_Port,LED_G_Pin);       printf("\\nTIM2 定時2s 時間到\\t\\n");     }}/* USER CODE END 4 */

(2)main主函數的while中為空,使用定時中斷處理應用。

(3)在main.c的主函數初始化代碼區中添加 開始定時函數,打開TIME1 & TIME2的定時器。

/* USER CODE BEGIN 2 */HAL_TIM_Base_Start_IT(&htim1);HAL_TIM_Base_Start_IT(&htim2);  /* USER CODE END 2 */

第四節 效果顯示

總結:(1)cubeMX 定時器的配置很簡單,選擇內部時鐘源,配置定時器定時參數(時間的計算方法套公式就可以),使能定時器中斷。

(2)在應用代碼中使用HALTIMBaseStartIT(&htim1)打開定時器。

編寫定時器定時中斷回調函數實現定時應用:

void HALTIMPeriodElapsedCallback(TIM_HandleTypeDef *htim)

標簽:

上一篇:STM32CubeMx入門教程(4):PWM應用
下一篇:最后一頁