VxWorks嵌入式系统几种常用的延时方法
发布日期:2021-07-01 01:03:50
浏览次数:2
分类:技术文章
本文共 683 字,大约阅读时间需要 2 分钟。
1 taskDelay taskDelay(n)使调用该函数的任务延时n个tick(内核时钟周期)。该任务在指定的时间内主动放弃CPU,除了taskDelay(0)专用 于任务调度(将CPU交给同一优先级的其他任务)外,任务延时也常用于等待某一外部事件,作为一种定时/延时机制。在没有中断触发时,taskDelay 能很方便地实现,且不影响系统整体性能。例如写数据至EEPROM,EEPROM需要一个内部擦除时间(最大擦除时间为lOms)。以下所提及的一个 tick都假设为16.67 ms(1/60 s)。可以简单地调用taskDelay(2)来保证数据擦写完成。按理说taskDelay(1)就足以保证,为什么需要taskDelay(2)呢? 这正是taskDelay使用的一个缺陷,使用时需要注意。taskDelay(n)表示任务延时至第n个系统时钟到来的时刻,如图1所示。如果在A时刻 调用taskDelay(1)仅延时5 ms,则在B时刻taskDelay(1)就刚好是一个tick周期。可见需要10 ms的延时就必须调用taskDelay(2)才能实现。taskDelay有接近一1个tick的误差存在,taskDelay(n)实际上是延时 (n-1)tick~n tick的时间。延时精度为l/n,延时1s就是taskDelay(60)的误差极限为1.6%,而taskDelay(1)的误差极限将是100%。 使用taskDelay需注意的另外一点是:即使经过n个tick,调用延时的任务也不保证返回执行状态,可能有更高或相同优先级的任务占用了CPU。转载地址:https://mao0514.blog.csdn.net/article/details/21078111 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月09日 12时03分18秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Tiny4412中断介绍
2019-05-01
Tiny4412中断之看门狗
2019-05-01
Tiny4412之外部中断
2019-05-01
Tiny4412MMU内存管理
2019-05-01
c语言之单链表的创建及排序
2019-05-01
Tiny4412模式跳转
2019-05-01
linux内核堆栈
2019-05-01
c语言常见的几种排序方法总结
2019-05-01
linux内核中断之看门狗
2019-05-01
linux模块驱动之led(ioremap)
2019-05-01
linux设备驱动之字符设备驱动模型(2)
2019-05-01
linux设备驱动之字符设备驱动模型(1)
2019-05-01
S3C6410板子移植 Android2.2
2019-05-01
CentOS6.5系统挂载NTFS分区的硬盘
2019-05-01
Tiny4412之串口(Uart)驱动编写
2019-05-01
Tiny4412之重力感应器驱动
2019-05-01
capwap学习笔记——capwap的前世今生(转)
2019-05-01
Linux获取网络接口信息
2019-05-01
capwap学习笔记——初识capwap(二)(转)
2019-05-01
capwap学习笔记——初识capwap(一)(转)
2019-05-01