1、UCOSIII时间片轮转调度
时间片轮转调度器用于时间片轮转调度,为函数OS_SchedRoundRobin(),
此函数由OSTimeTick或者OS_IntQTask()调用,函数在文件os_core.c中定义。
2.1、OSSchedRoundRobinCfg()函数:
如果我们想要使用UCOSIII的时间片轮转调度的话不仅要将宏OS_CFG_SCHED_ROUND_ROBIN_EN置1,还需要调用函数OSSchedRoundRobinCfg(),函数原型如下器
void OSSchedRoundRobinCfg (CPU_BOOLEAN en,
OS_TICK dflt_time_quanta,
OS_ERR *p_err)
2.2、OSSchedRoundRobinYield()函数:
当一个任务想要放弃本次时间片的时候,就可以调用该函数,函数原型如下:
void OSSchedRoundRobinYield (OS_ERR *p_err)
函数OSSchedRoundRobinYield()使用示例如下:
void Task(void *p_arg)
{
OS_RR err;
while(1)
{
……
OSSchedRoundRobinYield(&err);
…..
}
}