OpenEdv-开源电子网

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

FREERTOS 未执行低优先级任务

[复制链接]

14

主题

314

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1115
金钱
1115
注册时间
2011-10-19
在线时间
256 小时
发表于 2019-3-15 17:01:25 | 显示全部楼层 |阅读模式
1金钱
请教大家,我创建了两个任务分别是A,B,其中A的任务优先级最高,B的任务优先级低,正常情况下2个任务都可以正常运行,在某种条件下发现任务高的优先级一直处在运行状态,低优先级的任务根本不执行,有什么办法可以解决吗?我调试排除了以下几种情况,发现还是不能切换到低优先级的任务:
1. A,B任务是否创建成功(已创建成功);
2. A任务是否成功阻塞,调试发现能进入vTaskDelay(5 * portTICK_RATE_MS);这个函数并且判断是否溢出或者未溢出,说明可以进入阻塞状态;
3. A任务是否调用任务切换,taskYIELD()也调用了;
4. A任务堆栈空间加大也不行,

哥们的小店:http://shop103291259.taobao.com
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
发表于 2019-3-15 17:16:39 | 显示全部楼层
出现过类似情况,当时加大堆栈解决了,楼主这种情况暂时没遇到,帮顶!!
回复

使用道具 举报

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2018-5-10
在线时间
9 小时
发表于 2019-3-18 10:30:26 | 显示全部楼层
楼主的问题还是任务A一直占用CPU没有释放,但是按照你的解释任务A调用的delay函数和任务切换函数,有点矛盾。还是花精力在任务A的处理上吧,应该是A一直在处理一个耗时的任务没有释放CPU导致的,或者是任务B持有任务A要获取的资源而造成了任务死锁。还是好好排查下任务A吧。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 22:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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