任務(wù):定時(shí)閃爍指示燈
任務(wù)目標(biāo):掌握 CubeMX 軟件配置定時(shí)器實(shí)現(xiàn)定時(shí)功能的方法。
任務(wù)內(nèi)容:控制開(kāi)發(fā)板上的指示燈LED每隔1s閃爍。
任務(wù)實(shí)現(xiàn):
使用的STM32芯片是STM32F407ZET6
第一步:設(shè)置高速時(shí)鐘,設(shè)置LED
第二步:配置TIM10時(shí)鐘為100MHz,故可以設(shè)置預(yù)分頻系數(shù)PSC為9999,自動(dòng)重載值系數(shù)ARR為9999,這樣定時(shí)時(shí)間剛好為1s。
注意: 預(yù)分頻系數(shù) PSC 和自動(dòng)重載值 ARR 的取值,以不超過(guò)它們的計(jì)數(shù)范圍為準(zhǔn)TIMx_PSC為16位寄存器,PSC的最大值為65 535。ARR 的值由定時(shí)器的位數(shù)決定:對(duì)于16位定時(shí)器,ARR的最大值為 65 535;對(duì)于32位定時(shí)器,ARR 的最大值為232-1=4 294 967 295。
查閱STM32F407手冊(cè)知道,TIM10掛在APB2總線上。
第三步:切換到NVIC標(biāo)簽頁(yè),使能TIM10的全局中斷。
注意:定時(shí)器 10的全局中斷和定時(shí)器 1 的更新中斷共享同一個(gè)中斷通道。
第四步:不設(shè)置中斷優(yōu)先級(jí),而是使用默認(rèn)的中斷優(yōu)先級(jí)。
第五步:生成代碼。
配置代碼:
生成MDK工程后,進(jìn)行應(yīng)用程序的編寫(xiě)。CubeMX 軟件將自動(dòng)生成定時(shí)器10的句柄htim10,以及初始化函數(shù)MX_TIM10_Init()。完成定時(shí)器10的初始化之后,調(diào)用定時(shí)器中斷方式啟動(dòng)函數(shù)HAL_TIM_Base_Start_IT()使能定時(shí)器10的更新中斷并啟動(dòng)定時(shí)器運(yùn)行。在主程序的 while(1)循環(huán)中不進(jìn)行任何操作,指示燈的閃爍任務(wù)由更新中斷回調(diào)函數(shù)完成。
以中斷方式使能定時(shí)器10的更新中斷并啟動(dòng)定時(shí)器運(yùn)行。
用來(lái)清除更新中斷標(biāo)志,避免定時(shí)器一啟動(dòng)就進(jìn)入更新中斷
/* USER CODE BEGIN 2 */
// 清除更新中斷標(biāo)志,避免定時(shí)器一啟動(dòng)就進(jìn)人更新中斷
__HAL_TIM_CLEAR_IT(&htim10,TIM_IT_UPDATE);
HAL_TIM_Base_Start_IT(&htim10); //在中斷方式下啟動(dòng)定時(shí)器 10
/* USER CODE END 2 */
中斷回調(diào):
/* USER CODE BEGIN 4 */
/**
? * @brief? Period elapsed callback in non-blocking mode
? * @param? htim TIM handle
? * @retval None
? */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
? /* Prevent unused argument(s) compilation warning */
? if(htim -> Instance ==TIM10) //判斷發(fā)生更新中斷的定時(shí)器
?????? {
????????????? HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_9);
?????? }
? /* NOTE : This function should not be modified, when the callback is needed,
??????????? the HAL_TIM_PeriodElapsedCallback could be implemented in the user file
?? */
}
/* USER CODE END 4 */
運(yùn)行結(jié)果文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-755254.html
將程序編譯鏈接,生成可執(zhí)行代碼,通過(guò) ST-Link 仿真器下載到開(kāi)發(fā)板上??梢杂^察到: 指示燈LED的狀態(tài)每隔 1s 翻轉(zhuǎn)一次。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-755254.html
到了這里,關(guān)于【學(xué)習(xí)記錄】STM32利用定時(shí)器中斷實(shí)現(xiàn)定時(shí)閃爍指示燈的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!