初级会员

- 积分
- 80
- 金钱
- 80
- 注册时间
- 2017-7-5
- 在线时间
- 23 小时
|
1金钱
本帖最后由 STM1928 于 2021-1-29 14:52 编辑
STM32F103战舰教程例6-3 UCOSIII时间片轮转调度实验,没做任何修改,直接下载调试,我把串口调试助手的时间戳选项打开了。
出来的每一行后面的时间戳,我根本看不懂。我通过FreeRTOS理解是时间戳调度的意义在于限制相同优先级下的不同任务运行所用时间,一个任务如果时间片用完将立即切换至另一个同优先级的就绪任务,除非该任务主动放弃时间片。
工程设置的task1_task、task2_task的时间片都是10ms,可是我看了每一步输出的时间戳,分析了半天也没找到这些时间节点和10ms有什么关系,即根本没看出任务运行时间达到10ms导致被切换的情况出现,尤其匪夷所思的是task1和task2执行的是for循环,但是时间节点竟然会随机出现几ms的跳变,更不用提任务1输出信息被任务2抢先输出的情况了。
FreeRTOS时间片调度我看懂了,仿真结果基本符合我的分析预期。但是uCOS的时间片调度我完全看不懂。我不清楚相比于FreeRTOS,uCOS对时间片的支持是不是有点儿问题?
|
|