
導語“ 使用STM32CubeMx 生成初始化定時器代碼,實現定時器特定定時”
(資料圖片僅供參考)
?硬件:野火指南者
?軟件 CUbeMX & KEIL
?F103總線系統框圖
項目文件還是在LED,USART 項目的基礎上添加配置代碼。
我們可以看到共8個定時器,TIM1在APB2總線上,其他的在APB1系統總線上。
在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全局中斷模式:
(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)
標簽: