這一章講的是STM32F103C8T6定時器配置,定時器配置主要要弄懂的是系統主頻多少、你分頻多少、你需要定時多長時間。
我們來做一個簡單的計算。比如說系統的主頻是72M,我們要想得到一個定時時間1S鐘的定時器,我們可以通過修改分頻係數和計數值來確定。這裏我們分頻係數設置爲(7200-1)這裏減1是必須加上的確保計數精確,這樣得到分頻時鐘是10K。我們將計數值設置爲10000(10k)這樣就能配置成功一個1S鐘的定時器。
一、準備工作
1、使用第一章配置好的文件,這裏不多說了。大家也可以用自己配置好的工程文件。
2、準備一塊stm32f103c8t6最小系統核心板。(杜邦線若干)
二、具體操作
1、在Pinout菜單欄下,定時器的選擇與配置。配置如圖
這裏選擇的是TIM1定時器,時鐘源選擇的是內部時鐘。
2、在Clock Configuration菜單欄下,我們要設定外部主時鐘,這裏第一章說過了我們設定時鐘爲72M,根據不同芯片可設置不同主頻。配置如圖
3、在Configuration菜單欄下,點擊Control下的TIM1彈出配置界面,配置如圖
①點擊Parameter Setting菜單欄
②設置分頻係數
③設置計數方式爲增加計數
④設置計數值爲10000
⑤打開自動重載計數值
⑥點擊OK
這裏注意的是要打開NVIC Setting下的 TIM1的更新中斷!
3、生成工程
點擊Project菜單欄選擇Generate code,工程生成完畢。
4、打開MDK工程,工程裏面配置
1)while之前添加定時器中斷打開函數
HAL_TIM_Base_Start_IT(&htim1);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
HAL_TIM_Base_Start_IT(&htim1);
2)在Tim.c添加定時器中斷回調函數
unsigned int LED = 0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim->Instance == htim1.Instance)
{
LED ^= 1;
}
}
編譯下載即可!
5、調試測試
仿真添加監控變量即可看到變量每隔一秒跳轉一次。
這樣定時器中斷配置就完成了!~~~
如有什麼不懂聯繫加QQ羣:1063618791歡迎大家學習交流!
QQ:1320300083