UCOSii(三)——时间管理

本文详细介绍了UCOSii操作系统中的时间管理,包括时钟节拍、任务延时函数OSTimeDly及其原理,如何结束任务延时以及系统时间的获取与设置。时钟节拍作为任务调度的基础,其频率影响系统开销;OSTimeDly允许任务延时,但需注意延时单位;OSTimeDlyResume用于提前结束任务延时;系统时间通过32位计数器记录,可通过OSTimeGet和OSTimeSet操作。
摘要由CSDN通过智能技术生成

一、时间管理

1.1 时钟节拍

UCOSii通过时钟节拍OSTimeTick()来定期进行任务调度,一般来说这个频率是10-100HZ,频率越高,系统的开销也就越大。

1.2 任务延时函数

OSTimeDly()

任务可以调用OSTimeDly()来对自身延时一段时间。延时时,任务被挂起。任务被延时的时间必须是时钟节拍的倍数。与延时有关的变量在上一片文章里提到的Tcb结构体中。

Tcb.OSTCBDly表示任务自己延时挂起的时间。

这样,当任务调用OSTimeDly()来进行延时时,该函数会修改修改OSTCBDly的值,把要延时的次数写入该变量,最后进行任务调度即可。

每次时钟节拍发生的时候,OSTCBDly的值都会被减去一,当该值为0的时候,内核就会把它放入就绪队列。

NOTE: 当调用OSTimeDly(1)只延时一个时钟节拍的时候,由于任务可能运行在一个时钟节拍的中后期,此时经过不到半个时钟节拍的时间,OSTCBDly的值就会被修改。因此,如果用户的应用程序至少得延时一个节拍,必须要调用 OSTimeDly(2),指定延时两个节拍。

来看一下OSTimeDly()的原型:

void OSTimeDly (INT16U ticks)
{
    if (ticks > 0) {
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值