uC/OS-II任务延时实现解析
需积分: 50 137 浏览量
更新于2024-08-07
收藏 2.52MB PDF 举报
"恢复延时的任务-数字信号处理第二版陈后金主编,uC/OS"
在嵌入式操作系统µC/OS-II中,任务的延时管理是一个关键功能。通过函数`OSTimeDlyResume()`,其他任务可以取消一个任务的延时,使得原本在延时中的任务立刻变为就绪状态。然而,只有当这个任务具有所有就绪任务中的最高优先级时,它才会被调度执行。这涉及到 µC/OS-II 的优先级调度机制,其中高优先级的任务会被优先执行。
程序清单 L5.2 展示了`OSTimeDlyHMSM()`函数的代码,它允许用户通过小时、分钟、秒和毫秒来指定延时。在实际应用中,避免让任务延时过长是明智的,因为这可能导致用户无法及时获取任务状态的反馈,比如计数器的减少或LED的清除。尽管如此,µC/OS-II 允许任务延时长达256个小时,大约是11天。这种长时间的延时通过计算节拍(OS_TICKS)来实现。
`OSTimeDlyHMSM()`首先检查输入参数的有效性,即使没有指定延时,函数也会存在。由于 µC/OS-II 使用节拍作为时间单位,因此需要将用户指定的时间转换为节拍数。计算过程并不高效,主要是为了展示转换的原理。`OS_TICKS_PER_SEC`决定了每秒的节拍数,这个值直接影响到延迟的精确度。例如,如果时钟频率设为100Hz(即10ms/节拍),4ms的延时会被忽略,而5ms的延时相当于10ms。
µC/OS-II 支持的最大延时是65,535个节拍,这是因为任务延时的计数值是16位的。对于超过这个限制的延时,`OSTimeDlyHMSM()`会计算出需要多次超过65,535节拍的部分以及剩余的节拍数。例如,如果时钟频率为100Hz,15分钟的延时会被拆分为两个32,768节拍和一个24,464节拍的延时。函数会先处理剩余节拍,再处理超过最大值的延时次数。
这段内容源自于《数字信号处理》第二版,由陈后金主编,书中涉及的内容主要与嵌入式操作系统µC/OS-II相关,特别是任务延时的管理和计算方法。书中的范例和解释有助于读者理解如何在实践中应用 µC/OS-II 的延时功能。
367 浏览量
117 浏览量
点击了解资源详情
341 浏览量
375 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
229 浏览量
烧白滑雪
- 粉丝: 29
- 资源: 3845
最新资源
- (Qt4.8)Qt QTablewidget分页、翻页
- CMSIS DAP/DAPLink 仿真器 硬件开源/软件开源 支持 JTAG/SWD/虚拟串口 替代jlink、stlink-电路方案
- pdksh-5.2.14-37.el5_8.1.i386
- Codewars:Codewars中的编码实践
- 桌面下落文字程序源代码
- NSGraph-开源
- ImageMagick-7.0.11-0.tar.gz
- company-box:带有图标的公司前端
- Grader
- glove.6B(词向量).zip
- 基于HTML实现的仿好孩子育儿网discuz手机wap社区网站模板(css+html+js+图样).zip
- 4-20ma转RS485,模拟量转RS485数字采集模块资料.zip
- 如意网络验证系统1.71 php全功能【易语言】DLL接口板
- 40个圣诞图标 .xd .ai .sketch素材下载
- PebbleMagic8Ball:卵石时间魔术8球
- sai