学习日记——定时器中断(2020.2.11)

配置定时器中断TIM2

1、STM32CubeMX配置定时器TIM2,选择内部 时钟源即可。
2、STM32CubeMX配置LED引脚测试定时器。
在这里插入图片描述

配置定时器时钟

• 定时器时间=1/(时钟频率/预分频/计数周期),TIM2的时钟由APB1提供。
• 本实验APB1提供的时钟为20MHz,预分频为2000,计数周期为10000,通过以上公式:定时 器=1/(20M/2000/10000)=1。同时配置中断,即1s产生一次中断。

在这里插入图片描述

设置参数

1、配置预分频为2000-1
2、设置计数周期为10000-1
3、配置使能中断
在这里插入图片描述
在这里插入图片描述

生产工程前的设置

工程的保存路径须是 英文路径,否则生成工程时某 个文件会丢失,即在编译的时 候发现启动文件丢失,添加进 来就可以了。
在这里插入图片描述
在这里插入图片描述

代码编写说明

1、定义TIM2定时器产生时间为1S的定时中断;
2、在中断回调函数中点亮LED灯。
3、在主函数中添加延时函数,查看是否对定时器中断有影响。
4、调用函数有:
//启动定时器中断函数
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
//定时器中断回调函数,实现1s进入回调函数一次。
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef htim);
//电平自动翻转函数,用于点亮LED灯
void HAL_GPIO_TogglePin(GPIO_TypeDef
GPIOx, uint16_t GPIO_Pin);
//使用延时函数来测试定时器中断
void HAL_Delay(uint32_t Delay);

代码编写实现

主函数内触发中断在执行循环语句
HAL_TIM_Base_IT(&htim2);//触发TIM2中断定时器
while(1)
{
HAL_Delay(8000);//用于测试LED闪烁是否受延时影响
}
调用周期函数,定时1s中断,实现1s闪烁的效果。
/USER CODE BEGIN4/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim)
{
HAL_GPIO_Togglepin(LED_GPIO_Port,LED_Pin);//LED电平自动翻转
}
/USER CODE END 4/

效果展示

在这里插入图片描述
在这里插入图片描述

发布了10 篇原创文章 · 获赞 0 · 访问量 307

猜你喜欢

转载自blog.csdn.net/quanqueen/article/details/104329671
今日推荐