OpenEdv-开源电子网

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

FreeRTOS内核优先级的疑惑

[复制链接]

20

主题

89

帖子

2

精华

高级会员

Rank: 4

积分
576
金钱
576
注册时间
2014-8-3
在线时间
18 小时
楼主
发表于 2017-2-6 17:43:57 | 显示全部楼层
376262974 发表于 2017-2-6 16:17
有个问题就是,我创建两个任务,一个优先级高一个优先级低,然后运行,高优先级运行完不会自动运行低优先 ...

你要是在高优先级的任务里不在适当位置进行任务调度的话,当然会一直占用着CPU不会去执行低优先级的任务。可以在适当的位置加入vTaskDelay等。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

89

帖子

2

精华

高级会员

Rank: 4

积分
576
金钱
576
注册时间
2014-8-3
在线时间
18 小时
2#
发表于 2017-2-8 22:12:46 | 显示全部楼层
376262974 发表于 2017-2-7 09:08
也就是说,他不会自动让出CPU使用权。
比如说扫地和拖地,扫地优先级高就一直扫,不会扫完自动去拖
如 ...

一个任务就是一个死循环,所以那个扫地没有扫完一说,要么你在任务的代码里把事情完成后调用delete删掉任务,或者用suspend挂起任务。要么你加入适当的delay,这些都会引发任务调度,让低优先级待命任务可以获取CPU使用权。加入delay的话,在延时结束后,这个扫地任务会再扫一次。
回复

使用道具 举报

20

主题

89

帖子

2

精华

高级会员

Rank: 4

积分
576
金钱
576
注册时间
2014-8-3
在线时间
18 小时
3#
发表于 2017-2-8 22:14:18 | 显示全部楼层
376262974 发表于 2017-2-7 09:08
也就是说,他不会自动让出CPU使用权。
比如说扫地和拖地,扫地优先级高就一直扫,不会扫完自动去拖
如 ...

FreeRTOS里同等优先级的会分时运行, 也就是说如果扫地和拖地会分别运行一个Tick,轮流着来。如果uCOS的话,就不会有同等优先级了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-10-3 23:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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