在实时操作系统(RTOS)中,时间管理是核心功能之一。无论是任务调度、超时控制,还是周期性事件,延时和计时机制都扮演着至关重要的角色。Zephyr RTOS作为一个轻量级、模块化的开源系统,提供了多种延时与计时实现方案,满足不同应用场景的需求。那么,大家平时都是怎么在MCU程序中实现计时函数、实现延时的呢?
小编先来说说自己的做法,一般在裸机开发中,小编会利用systick中断实现一个ms级中断服务,然后利用这个函数做一些计时相关实现。那么,如果是RTOS的应用场景,那就开心许多了,我们可以直接利用RTOS自带的一些时间函数来实现功能。
刚好小编最近正在做一个关于Zephyr的小项目,那么本期就给大家分享下如何在Zephyr实现相关操作。
方法一:使用内核NPI
#include#include voiddelay_and_print(void) { // 获取当前系统 tick(64位精度) int64_tstart_ticks =k_uptime_ticks(); printk("Start ticks: %lld ", start_ticks); // 延时500ms(线程安全,会触发调度) k_msleep(500); // 获取延时后的tick int64_ tend_ticks =k_uptime_ticks(); printk("End ticks: %lld (Elapsed: %lld) ", end_ticks, end_ticks - start_ticks); }
方法二:忙等待
#include#include voidbusy_delay_print(void) { uint32_tstart =k_cycle_get_32(); printk("Start cycles: %u ", start); // 忙等待10ms(精确但占用 CPU) k_busy_w ait(10*1000);// 参数为微秒 uint32_tend =k_cycle_get_32(); printk("End cycles: %u (Delta: %u) ", end, end - start); }
API说明:

接下来是时间单位转换,有时候我们并不想直接用ticks来表示时间,我们还是想要用时间单位来表示,例如ms,那我们来看看怎么进行tick to ms的转换:
// Tick转毫秒
uint64_tticks_to_ms(uint64_tticks){
return(ticks *1000) /sys_clock_hw_cycles_per_sec();
}
下面是一个实际应用示例:
voidperiodic_task(void)
{
while(1) {
int64_ttick =k_uptime_ticks();
printk("[%lld] Sensor sampling...
", tick);
// 固定频率执行(不受任务执行时间影响)
k_msleep(100- (k_uptime_ticks() - tick));
}
}
K_THREAD_DEFINE(sensor_thread,512, periodic_task,NULL,NULL,NULL,7,0,0);
这样一来我们实现了定时函数,可以根据具体需求选择合适的方案,对于大多数应用场景,`k_msleep()` + `k_uptime_ticks()`的组合就能够满足我们的需求了,推荐大家多多使用。
延时与计时不仅仅是“等待”,它是实时系统稳定运行的基石。Zephyr RTOS通过内核tick、定时器API以及高精度时钟机制,为开发者提供了灵活且高效的时间管理方案。理解这些实现原理,不仅能帮助我们编写更可靠的代码,还能在资源受限的嵌入式环境中实现最佳性能。
未来,随着更多应用对低功耗和高精度的要求,Zephyr的时间管理机制将继续演进,成为嵌入式开发的重要工具。
- 随机文章
- 热门文章
- 热评文章
- 朱婷宣布将在世联赛期间回归中国女排 曾提出退役申请
- 斯坦福大学Aloha团队出新作:“吼你牌”系统让机器人洗盘子更干净
- 5200米!我国最深地热科探井完钻
- 谷歌、英特尔纷纷推AI芯片,科技巨头欲挑战英伟达市场统治
- 美债收益率攀升、鲍威尔转变态度!黄金迎来新一轮挑战还是机会?
- “浙里办”上能买演唱会门票了?记者进行了实测
- 外媒:依靠民主党通过援外法案,美众议长或“付出代价”
- 刘彦春、李晓星、赵蓓,一季度最新调仓情况曝光!
- 超燃!港股尾盘攻势不减,港股互联网ETF(513770)涨近4%!续刷年内新高!
- “五一”假期机票价格飙升 杭州飞云南、海南等热门城市5月2日出发便宜很多
- 南非学者:美国实施贸易保护主义将影响全球经济发展
- 这场技术交易大会干货满满
- 美国多地高校因巴以局势爆发大规模示威,我驻美使馆发提醒
- 1“赛事+”提升城市“流量” 陕西商洛拓经济发展新“赛道”
- 2“五一”临近 持基过节的投资者要注意这几点
- 3华发股份:成功入选“人民优选”品牌 五一黄金周热销30亿
- 4到2027年产业规模达到2000亿元 浙江发布历史经典产业高质量发展计划
- 5钟鼓楼老街区的古都新事
- 6IDC:24Q1全球PC出货量恢复增长 达到疫情前水平
- 7非常危险!女子摔成粉碎性骨折!又是因为洞洞鞋,夏天多人中招……
- 8金税四期试点上线,财税体制改革拉开帷幕!或有资金借道信创ETF基金(562030)逢跌进场布局
- 9初步数据:我国一季度经常账户顺差392亿美元
- 10“发现山西之美”TDC旅游发现者大会举办:共话文旅新生态 邀客体验新玩法
- 11国门“夫妻档” 国庆共坚守
- 12北交所一周审核动态:2家企业更新进展 胜业电气二轮问询回复中称家电头部客户对价格敏感度较低
- 13甘肃白银县域经济:从“一枝独秀”到“多点开花”
- 1小方制药两专利受让信披出错,产品挂网价申报出差池
- 2高考在即,如何拿出最好状态?这份“锦囊”请收好
- 3【央视快评】继续弘扬“爱国、革命”的黄埔精神 为同心共圆中国梦广泛凝心聚力
- 4EBC GROUP平台外汇行情播报|科技股疲态和过热情绪引起不安
- 5父母“上瘾”,凌晨3点都不睡!儿女一查账单惊呆了……
- 6我国最大海上公务执法船“海巡09”巡航惠州港
- 7星环科技:9月10日召开业绩说明会,投资者参与
- 8四川双江口水电站库周交通工程“8·18”较大坍塌事故调查报告公布
- 9红旗天工08正式上市 售价23.98万元起
- 10国证2000指数表现亮眼 景顺长城量化策略助力捕获超额收益
- 112025年华北地区联合招聘活动在京举办
- 12小摩:料宁德时代(03750)股价短期或回调 目标价400港元 维持“增持”评级
- 139月首周港股三大指数收涨 机构对后续持乐观态度,9月首周港股三大指数收涨 机构对后续持乐观态度




