🔥作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生,研究方向无线联邦学习 🎬擅长领域:驱动开发,嵌入式软件开发,BSP开发 ❄️作者主页:一个平凡而乐于分享的小比特的个人主页 ✨收录专栏:UCOS-III,本专栏为UCOS-III学习记录 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖
时间片:同等优先级任务轮流地享有相应的运行时间(可设置),在UCOSIII中,一个时间片就等于SysTick 中断周期
eg:

运行条件:
运行过程如下:
注意:
时间片相关API函数介绍:
void OSSchedRoundRobinCfg (CPU_BOOLEAN en, //是否使能时间片调度,OS_TRUE使能,OS_FALSE失能
dflt_time_quanta OS_TICK, //默认的时间片长度
OS_ERR *p_err //指向接收错误代码变量的指针
)注意:使用时间片调度需把宏 OS_CFG_SCHED_ROUND_ROBIN_EN 置1
一种建立在时钟节拍上,对操作系统任务的运行实现时间,进行管理的一种系统内核机制
实际延迟时间取决于系统时钟节拍的频率:OS_CFG_TICK_RATE_HZ
时间管理相关API函数介绍:
void OSTimeDly( OS_TICK dly, //任务延时的系统时钟节拍数
OS_OPT opt, //延时选项
OS_ERR * p_err //指向接收错误代码变量的指针
)OPT选项介绍:
OS_OPT_TIME_DLY | 任务延时的结束时刻为 OSTickCtr = OSTickCtr + dly |
|---|---|
OS_OPT_TIME_TIMEOUT | 任务延时的结束时刻为 OSTickCtr = OSTickCtr + dly |
OS_OPT_TIME_MATCH | 任务延时的结束时刻为 OSTickCtr = dly(绝对时间) |
OS_OPT_TIME_PERIODIC | 任务延时的结束时刻为 OSTickCtr = OSTCBCurPtr -> TickCtrPrev+dly |
void OSTimeDlyHMSM( CPU_INT16U hours, //任务延时的小时数
CPU_INT16U minutes, //任务延时的分钟数
CPU_INT16U seconds, //任务延时的秒数
CPU_INT32U milli, //任务延时的毫秒数
OS_OPT opt, //延时选项
OS_ERR * p_err ) //指向接收错误代码变量的指针使用该函数须将宏 OS_CFG_TIME_DLY_HMSM_EN 置1
OPT选项介绍:
OS_OPT_TIME_HMSM_STRICT | 延时时间参数严格按照实际的时间格式 任务延时的小时数(0~99) 任务延时的分钟数(0~59) 任务延时的秒数(0~59) 任务延时的毫秒数(0~999) |
|---|---|
OS_OPT_TIME_HMSM_NON_STRICT | 延时时间参数无需严格按照实际的时间格式 任务延时的小时数(0~999) 任务延时的分钟数(0~9999) 任务延时的秒数(0~65535) 任务延时的毫秒数(0~4294967295) |
OS_OPT_TIME_DLY | 任务延时的结束时刻为 OSTickCtr = OSTickCtr + dly |
OS_OPT_TIME_TIMEOUT | 任务延时的结束时刻为 OSTickCtr = OSTickCtr + dly |
OS_OPT_TIME_PERIODIC | 任务延时的结束时刻为 OSTickCtr = OSTCBCurPtr -> TickCtrPrev + dly |
OS_OPT_TIME_MATCH | 任务延时的结束时刻为 OSTickCtr = dly |
void OSTimeDlyResume( OS_TCB * p_tcb, //指向任务控制块的指针
OS_ERR * p_err //指向接收错误代码变量的指针
) 使用该函数须将宏 OS_CFG_TIME_DLY_RESUME_EN 置1
OSTimeDly() 和 OSTimeDlyHMSM() 的区别
注意:OSTimeDly() 和 OSTimeDlyHMSM() 功能类似,OSTimeDly() 是周期延时,OSTimeDlyHMSM() 是相对延时

