【备赛】stm32如何实现定时器延时/解决定时器中断刚开启就进中断的问题
问题描述
背景是我想要按键按下之后,开启定时器,此时开始计时,计时5秒后执行操作。
相当于想起到一个延时的作用。
但是问题是,我刚按下就给我操作执行了,这不是我想要的延时效果。
解决方案
在初始化之后,清除中断标志位。
MX_TIM3_Init();
__HAL_TIM_CLEAR_IT(&htim3, TIM_IT_UPDATE);//清除中断标志位
然后在中断回调函数里面写相关的操作就可以了。
记得最后关闭定时器。(如果你只想只执行一次)。
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
//TIM3
if(htim == &htim3)
{
//相关的操作
HAL_TIM_Base_Stop_IT(&htim3);
}
}
具体应用
比如你想按下按按键之后,开启LED,延时5秒后关闭。
提前设置定时器时间
按键函数
{
执行操作:
开启LED;
开启定时器;
}
定时器中断回调函数
{
关闭LED;
关闭定时器;
}