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

基于Systick系统滴答定时器的延时时间计算

介绍一套嵌入式系统中常用的非阻塞延时 / 超时判断工具宏:

#define SysTime() HAL_GetTick() //ms级别 #define SysTimeDiff(new, old) ((new) - (old)) #define SysTimeDiffCurrent(oldTime) SysTimeDiff(SysTime(), (oldTime)) #define SysTimeHasPast(oldTime, pastTime) (SysTimeDiffCurrent((oldTime)) > (pastTime)) //大于号成立为1,不成立为0

解释:

1.获取当前系统时间(以毫秒为单位)。

SysTime()是一个宏,直接调用 STM32 HAL 库的HAL_GetTick()函数,该函数返回自系统启动以来经过的毫秒数,所以注释标注单位为ms

2.计算两个时间点之间的时间差。

接收两个时间参数new(较新的时间)和old(较旧的时间),返回new - old的差值,单位同样是毫秒。注意:这里利用了无符号整数溢出特性,即使new发生溢出(比如从最大值回到 0),减法结果依然能得到正确的时间差。

3.计算从某个过去时间点到当前时间的时间差。

接收一个过去的时间oldTime,内部调用SysTime()获取当前时间,再用SysTimeDiff()计算差值,等价于当前时间 - oldTime

4.判断从oldTime到当前是否已经过去了指定时长。

先通过SysTimeDiffCurrent(oldTime)得到从oldTime到现在的毫秒数;再将这个差值与pastTime(需要等待的毫秒数)做比较;如果差值大于pastTime,返回真(非 0),表示已经超时;否则返回假(0),表示还没到时间。

例子1:

uint32_t start = SysTime(); // 记录开始时间 while(1) { if(SysTimeHasPast(start, 1000)) { // 判断是否过去1秒 // 1秒到了,执行任务 break; } // 这里可以做其他事情,不会阻塞 }

例子2:

//解释:当某个状态出现时,状态指示灯1s反转一次 static uint32_t g_FlashLedErrTime_light = 0; if(g_signflag != 0) //判断某个标志位是否为0 , 不为0进入 { if(g_FlashLedErrTime_light == 0) //若是第一次进来 { g_FlashLedErrTime_light = SysTime(); //记录一下当前运行时间 } else //不是第一次进来 { if(SysTimeHasPast(g_FlashLedErrTime_light, 1*1000)) //判断标志位不为0时,距离上次进入时间是否为1S { g_FlashLedErrTime_light = SysTime(); //若大于1S,记录当前最新系统运行时间 ToggleGpio_ERR(); //1s反转一次状态指示灯。 } } }
http://www.jsqmd.com/news/491761/

相关文章:

  • 2025房建首选品牌揭晓!空气能行业里谁上榜了? - 博客湾
  • SI2318 场效应管参数详解
  • 选对自动获客软件,少走弯路!AI 招财兔实测体验
  • 2026年NMN十大品牌权威榜单|抗衰健康热门品牌深度测评与选购指南 - 速递信息
  • 从 1000 行巨型组件到可维护前端:某内部平台踩坑实录(福袋代码版)
  • 2026天津优质国际高中推荐:天津比较好的国际高中择校指南 - 品牌2026
  • 2026 年弱电机电工程行业标杆企业深度解析 —— 以四川远瞻赢实业集团有限公司为核心 - 深度智识库
  • 2026年上海雅思机构怎么选?三个维度深度解析 - 资讯焦点
  • Fast-DDS 性能优化分析报告
  • 十大眼霜推荐榜!女士眼霜哪个牌子的效果好?2026精准解决眼周问题首选这款 - 资讯焦点
  • LeetCode热题100 N 皇后
  • 2026净肤保湿沐浴露实测:告别油腻假滑,5款高口碑闭眼入 - 资讯焦点
  • 2026年种植体品牌深度测评:五大主流品牌全维度对比分析 - 资讯焦点
  • 我把 Cursor 换成了 Trae:7天深度体验后,这3个功能让我回不去了
  • 2026上海B2B企业出海:推荐5家靠谱的Facebook推广获客服务商与海外社媒代运营公司(附带联系方式) - 品牌2025
  • 2026美白去口臭牙膏选购指南!市面上去牙渍牙膏推荐哪款?亮齿护龈选它 - 资讯焦点
  • 好影教育是正规机构吗? - 资讯焦点
  • AI临终牧师:记录废弃算法最后的“忏悔“
  • AD 极坐标操作方式
  • 2026美国投资移民中介排名及行业机构解析 - 品牌排行榜
  • 微信也能定时发消息了?这个隐藏功能,很多人都不知道!
  • 2026市场总监必看:客户精细化运营怎么选系统?附5大盘点 - 纷享销客智能型CRM
  • 模型预测控制专题(九)—— 进一步优化的方向
  • 2026宠物玩具橡胶制品生产厂家实力之选,尼可高分子以技术赋能产品 - 资讯焦点
  • 无人机视角建筑损坏程度识别分割数据集labelme格式865张6类别
  • 对标国际标准:上海昂林等国产厂家在全自动硫化物分析仪领域的突破 - 品牌推荐大师1
  • 2026北京美研申请留学中介哪家好?超全筛选攻略来啦! - 资讯焦点
  • 探索基于Matlab的齿轮 - 轴 - 轴承系统含间隙非线性动力学模型
  • 好影教育的师资怎么样? - 资讯焦点
  • 别再手动调 Prompt 了!这款国产神器让 AI 输出质量提升 300%!免费开源!