UCOSIII学习笔记2:时间片转调度

①时间片轮转调度:

UCOSIII允许在同一优先级下有多个任务。
每个任务执行指定的时间(时间片),然后轮到下一个任务执行,当一个任务不想再运行的时候就可以放弃该任务的时间片(OSTaskCreate函数定义时间片)。

②任务如何被调度和运行:

先判断该任务的时间片是否有剩余,如果有就直接返回不切换;如果没有,就进行切换。每次任务切换后运行的都是处于就绪任务列表OSRdyList[ ]链表头的任务,当这个任务的时间片用完后这个任务就会被放到链表尾,然后再运行新的链表头的任务。

步骤:
1,使能OS_CFG_SCHED_ROUND_ROBIN_EN为1
2,start任务函数中编写OSSchedRoundRobinCfg()函数来使能 UCOSIII 如:OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);
3,start任务函数中编写任务函数中的片转时间属性;

OSTaskCreate((OS_TCB *)&Task2_TaskTCB,
                        (CPU_CHAR *)"task2 task", 
                        (OS_TASK_PTR )task2_task, 
                        (void *)0,
                        (OS_PRIO )TASK2_TASK_PRIO, 
                        (CPU_STK *)&TASK2_TASK_STK[0],
                        (CPU_STK_SIZE )TASK2_STK_SIZE/10,
                        (CPU_STK_SIZE )TASK2_STK_SIZE,
                        (OS_MSG_QTY )0,
                        (OS_TICK )2, //2 个时间片,时间片可通过参数预设
                        (void *)0,
                        (OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, 
                        (OS_ERR *)&err);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值