当前位置: 首页 > article >正文

【备赛】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;
    关闭定时器;
}


http://www.kler.cn/a/578768.html

相关文章:

  • 10. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Ocelot 网关--认证
  • uniApp实战二:仿今日相机水印功能
  • 猫耳大型活动提效——组件低代码化
  • 服务器数据恢复—raid5阵列中硬盘出现坏道的数据恢复流程
  • Spring Boot启动流程及源码实现深度解析
  • 前端非技术性场景面试题
  • 长上下文 GRPO
  • 基于PyTorch的深度学习5——神经网络工具箱
  • 百货店的诞生与现代商业革命:结合开源AI智能客服、AI智能名片与S2B2C商城小程序的新视角
  • 通过HTML有序列表(ol/li)实现自动递增编号的完整解决方案
  • SpringBatch之ResultSet.next()
  • 基于Canvas和和原生JS实现俄罗斯方块小游戏
  • 【贪心算法】简介
  • el-input-number添加自定义内容class-unit
  • 【算法题】小鱼的航程
  • AWS中使用CloudFront分发位于S3中的静态网站
  • SV学习笔记——数组、队列
  • spring boot+vue项目(免费)
  • es-初体验easy-es时报错:找不到mapper
  • Vue 过滤器 filter(s) 的使用