ucosiii时间管理

1.OSTimeDly() 函数
当我们需要对一个任务进行延时操作的时候就可以使用这个函数,函数原型如下。
void OSTimeDly (OS_TICK dly,OS_OPT opt,OS_ERR *p_err)
dly : 指定延时的时间长度,这里单位为时间节拍数。
opt 指定延迟使用的选项,有四种选项。
OS_OPT_TIME_DLY 相对模式
OS_OPT_TIME_TIMEOUT OS_OPT_TIME_DLY 一样
OS_OPT_TIME_MATCH 绝对模式

OS_OPT_TIME_PERIODIC 周期模式
p_err : 指向调用该函数后返回的错误码
“相对模式”在系统负荷较重时有可能延时会少一个节拍,甚至偶尔差多个节拍,在周期
模式下,任务仍然可能会被推迟执行,但它总会和预期的“匹配值”同步。因此,推荐使用“周
期模式”来实现长时间运行的周期性延时。
“绝对模式”可以用来在上电后指定的时间执行具体的动作,比如可以规定,上电
N 秒后
关闭某个外设。


OSTimeDlyHMSM()函数
我 们 也 可 调 用

我 们 也 可 调 用 OSTimeDlyHMSM() 函 数 来 更 加 直 观 的 来 对 某 个 任 务 延 时 ,
OSTimeDlyHMSM() 函数原型如下:
void OSTimeDlyHMSM (CPU_INT16U hours, // 需要延时的小时数
CPU_INT16U minutes, // 需要延时的分钟数
CPU_INT16U seconds, // 需要延时的秒数
CPU_INT32U milli, // 需要延时的毫秒数
OS_OPT opt, // 选项
OS_ERR *p_err)
hours
minutes
seconds
milli
前面这四个参数用来设置需要延时的时间,使用的是:小时、分钟、秒和毫
秒这种格式,这个就比较直观了,这个延时最小单位和我们设置的时钟节拍频率
有关,比如我们设置时钟节拍频率
OS_CFG_TICK_RATE_HZ 200 的话,那么
最小延时单位就是
5ms
opt 相比 OSTimeDly()函数多了两个选项 OS_OPT_TIME_HMSM_STRICT
OS_OPT_TIME_HMSM_NON_STRICT,其他四个选项都一样的。
使用
OS_OPT_TIME_HMSM_NON_STRICT 选项的话将会检查延时参数,
hours 的范围应该是 0~99minutes 的范围应该是 0~59seconds 的范围为 0~59
milli的范围为 0~999
使用
OS_OPT_TIME_HMSM_NON_STRICT 选项的话, hours 的范围为 0~999
minutes 的范围为 0~9999seconds 的范围为 0~65535mili 的范围为 0~4294967259
p_err 调用此函数后返回的错误码

  其他有关时间函数

OSTimeDlyResume()函数

一 个 任 务 可 以 通 过 调 用 这 个 函 数 来 “ 解 救 ” 那 些 因 为 调 用 了

一 个 任 务 可 以 通 过 调 用 这 个 函 数 来 “ 解 救 ” 那 些 因 为 调 用 了 OSTimeDly() 或 者
OSTimeDlyHMSM() 函数而进入等待态的任务,函数原型如下:
void OSTimeDlyResume (OS_TCB *p_tcb,OS_ERR *p_err)
p_tcb : 需要恢复的任务的任务控制块。
p_err : 指向调用这个函数后返回的错误码。
2 OSTimeGet() OSTimeSet() 函数
OSTimeGet() 函数用来获取当前时钟节拍计数器的值。 OSTimeSet() 函数可以设置当前时钟
节拍计数器的值,这个函数谨慎使用。


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值