OpenEdv-开源电子网

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

求助ucos问题

[复制链接]

23

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2017-3-4
在线时间
35 小时
发表于 2017-3-8 19:21:12 | 显示全部楼层 |阅读模式
1金钱
如图中所说的,某个时刻mytask在执行中,当他执行到延时函数时候,释放CPU控制权,这个时候另一个任务获得CPU控制权。那么第一个任务是释放CPU控制权的之前已经完成延时了吗?这样的延时不是太浪费了吗?如果延时之前释放CPU控制权,那么延时还有什么用?

QQ截图20170308191324.png
QQ截图20170308191324.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-8 21:19:29 | 显示全部楼层
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-3-8 23:53:32 | 显示全部楼层
延时就是让操作系统去帮这个要延时的任务去计时.时间到了就把这个任务就绪.时间没有到就把这个任务或者说线程暂停执行.挂起.
回复

使用道具 举报

3

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2013-12-24
在线时间
28 小时
发表于 2017-3-9 08:47:32 | 显示全部楼层
不是的,任务让出CPU是因为调用了延时函数,如果不调用延时函数是不会主动让出CPU的;不是在延时之前让出的,是在调用延时函数的时刻让出的。
还有一种可能就是被动让出CPU,即被其他高优先级的任务打断执行,被迫让出的。
回复

使用道具 举报

23

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2017-3-4
在线时间
35 小时
 楼主| 发表于 2017-3-9 14:39:29 | 显示全部楼层
wmaxwell 发表于 2017-3-9 08:47
不是的,任务让出CPU是因为调用了延时函数,如果不调用延时函数是不会主动让出CPU的;不是在延时之前让出的 ...

那是不是可以这样理解,调用延时函数的时刻,出让了CPU的控制权,延时由系统的时钟电路相关的部分去完成延时函数的计时。不占用CPU的任何资源。
回复

使用道具 举报

3

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2013-12-24
在线时间
28 小时
发表于 2017-3-9 14:49:05 | 显示全部楼层
转世书生 发表于 2017-3-9 14:39
那是不是可以这样理解,调用延时函数的时刻,出让了CPU的控制权,延时由系统的时钟电路相关的部分去完成 ...

不可以,延时也是占用CPU资源的,
在延时这段时间内,CPU在运行其他任务(可能是空闲任务,也可能是你创建的其他任务),不管是什么时候,CPU都不是空闲的。
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4036
金钱
4036
注册时间
2015-11-14
在线时间
545 小时
发表于 2017-3-9 14:51:22 | 显示全部楼层
这里的延时和裸机的延时有点不同,这里的延时可以利用延时的时间去执行其他任务,就是延时并不是原地等待,而是去执行其他的任务
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-12 22:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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