网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

如何在Zephyr RTOS中实现延时和计时函数

时间:2025-12-26 10:32

人气:

作者:admin

标签:

导读:在实时操作系统(RTOS)中,时间管理是核心功能之一。无论是任务调度、超时控制,还是周期性事件,延时和计时机制都扮演着至关重要的角色。Zephyr RTOS作为一个轻量级、模块化的开...

在实时操作系统(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_wait(10*1000);// 参数为微秒


 uint32_tend =k_cycle_get_32();
 printk("End cycles: %u (Delta: %u)
",
     end, end - start);
}

API说明:

d4612c2e-dbab-11f0-8c8f-92fbcf53809c.png

接下来是时间单位转换,有时候我们并不想直接用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的时间管理机制将继续演进,成为嵌入式开发的重要工具。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信