《嵌入式应用技术》课件——第7讲 UCOSIII时间片轮转调度.pdf
《嵌入式技术应用》课程
uCOSIII操作系统学习
适用平台:STM32F10x
主讲教师:杜锋
UCOSIII时间片轮转调度
目录
Contents
1
UCOSIII时间片轮转调度器
2
UCOSIII时间片轮转调度相关函数
3知识目标
UCOSIII时间片轮转调度实验
了解知道
掌握了解
掌握理解
掌握
1.UCOSIII时间片轮转调度器
时间片轮转调度器
◆时间片轮转调度器用于时间片轮转调度;
◆调度器为函数OS_SchedRoundRobin();
◆此函数由OSTimeTick或者OS_IntQTask()调用;
◆函数在文件os_core.c中定义;
2.UCOSIII时间片轮转调度相关函数
OSSchedRoundRobinCfg()函数
◆使用UCOSIII的时间片轮转调度:
●将宏OS_CFG_SCHED_ROUND_ROBIN_EN置1
●调用函数OSSchedRoundRobinCfg()
◆函数OSSchedRoundRobinCfg(),函数原型如下:
voidOSSchedRoundRobinCfg(CPU_BOOLEANen,
OS_TICKdflt_time_quanta,
OS_ERR*p_err)
2.UCOSIII时间片轮转调度相关函数
OSSchedRoundRobinYield()函数
◆当一个任务想要放弃本次时间片的时候,就可以调用该函数,函数原型如下:
voidOSSchedRoundRobinYield(OS_ERR*p_err)
◆函数OSSchedRoundRobinYield()使用示例如下:
voidTask(void*p_arg)
{
OS_RRerr;
while(1)
{
……
OSSchedRoundRobinYield(err);
…..
}
}
3.UCOSIII时间片轮转调度实验
时间片轮转调度实验
◆设计3个任务:
start_task
task1_task
task2_task
◆任务start_task用于创建task1_task和task2_task,创建完成以后就删除掉自身;
◆task1_task和task2_task具有同样优先级;
◆采用时间片轮转调度;
◆task1_task和task2_task在LCM1602各自区域显示运行次数;
◆试验步骤:
●设置宏OS_CFG_SCHED_ROUND_ROBIN_EN为1,
●调用函数OSSchedRoundRobinCfg()开启时间片轮转调度功能,并且设置时间片长度。
●编写任务函数
3.UCOSIII时间片轮转调度实验
时间片轮转调度视频
课程回顾
Cour