欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【STM32】STM32CUBEMX系列教程:定时器中断实验

程序员文章站 2022-06-08 19:56:40
...

STM32CUBEMX系列教程之定时器中断实验


环境:
1、STM32CubeMX 5.3
2、Atollic TrueSTUDIO for STM32 9.3.0
3、战舰迷你板(stm32f103rb)


(一)时钟配置

【STM32】STM32CUBEMX系列教程:定时器中断实验
【STM32】STM32CUBEMX系列教程:定时器中断实验

(二)定时器配置

配置为500ms一次中断:
【STM32】STM32CUBEMX系列教程:定时器中断实验
开启定时器中断:
【STM32】STM32CUBEMX系列教程:定时器中断实验

(三)LED灯配置

【STM32】STM32CUBEMX系列教程:定时器中断实验

(四)其他配置及代码生成

【STM32】STM32CUBEMX系列教程:定时器中断实验
【STM32】STM32CUBEMX系列教程:定时器中断实验
生成代码:
【STM32】STM32CUBEMX系列教程:定时器中断实验

(五)代码修改

覆写定时器中断回调函数,使LED0的状态为500ms翻转一次:

/**
  * @brief  Period elapsed callback in non-blocking mode
  * @param  htim TIM handle
  * @retval None
  */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim->Instance == htim3.Instance)
    {
        HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin);
    }
}

注意要使能定时器终端:

HAL_TIM_Base_Start_IT(&htim3);

效果如下图,LED0由定时器控制500ms进行一次状态翻转,LED1由while循环控制1s翻转一次状态:
【STM32】STM32CUBEMX系列教程:定时器中断实验

(六)调试与仿真

【STM32】STM32CUBEMX系列教程:定时器中断实验
ends…