OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10921|回复: 4

ucos时间片轮转调度例程,对时间片的一些理解问题

[复制链接]

6

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2019-4-13
在线时间
14 小时
发表于 2019-11-25 22:44:38 | 显示全部楼层 |阅读模式
1金钱
刚刚看了原子哥ucos关于时间片轮转调度,对于例程有一些疑惑。在原子哥的视频里,创建任务时,如果时间片的数不够(是1或2)的时候,就会在串口打印出现一些问题。在例程中,每个任务连续打印5次,自定义的字符串。我的疑问是当时间片为2时候,也有10ms一个时间执行一次任务,按理说应该是足够的(因为我看了一下连续打印5次到串口没有用到延时之类的函数,按理说是一瞬间,应该比10ms短),为什么会出现执行时间不足,不能完整打印完字符串,是什么在制约它。而且时间片再短(为1时),每个任务都还是执行断开打印出来都是”task1:“和“1234/r/n”这样隔开,为什么呢,不能是“task1:12”和“34/r/n”这样随机断开呢,原因又是什么。

任务函数的代码

任务函数的代码

当时间片设置过小时,串口打印的数据

当时间片设置过小时,串口打印的数据

时间片数设置

时间片数设置
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-9-4
在线时间
8 小时
发表于 2020-5-5 13:27:52 | 显示全部楼层
我也写过你一样的程序,时间片给很长也同样断开,有个很奇怪的现象,把printf里面加个%d,取i的值,时间片给够的话,能正常打印。但同样的我还是没解决这样的问题,建议尽量不使用相同优先级写程序。容易发生错误。
回复

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2019-12-27
在线时间
27 小时
发表于 2020-5-19 09:43:03 | 显示全部楼层
(OS_TICK          )0,        //当使能时间片轮转时的时间片长度,为0时为默认长度,你设置为3是时间片整体为3MS不是三个时间片时间片太短导致任务没有完成就进行时间片轮转调度启用下一个任务,加长时间片保证整个任务完成,建议你看看UCOS开发手册6.1.1章节和6.3.3章节

如有不对情指正。
回复

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2016-5-4
在线时间
19 小时
发表于 2021-5-6 10:47:23 | 显示全部楼层
帮顶!
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2019-12-4
在线时间
7 小时
发表于 2021-7-24 13:34:54 | 显示全部楼层
同问,帮顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表