OpenEdv-开源电子网

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

STM32F407使用UCOSIII运行四个任务一段时间后部分任务异常挂起,求解答!!!

[复制链接]

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2016-4-2
在线时间
22 小时
发表于 2017-7-12 18:54:28 | 显示全部楼层 |阅读模式
1金钱
STM32F407使用UCOSIII运行四个任务一段时间后最低优先级及次最低优先级任务不再响应,调试发现两个任务的任务控制块内Task_State均为0。
详细现象描述如下,我使用UCOSIII运行四个任务,1.GPS解码任务(优先级7,周期100ms)、2.按键扫描任务(优先级6,周期20ms)、3.主界面任务(优先级5,周期100ms)、4.各任务堆栈检测任务(优先级10,周期5s)。正常开机启动后按键及屏幕显示均正常响应,GPS解码任务也正常处理,使用串口打印输出各任务堆栈情况,然后运行一段时间后(时长不定),突然GPS解码任务就无法正常进入了,同时堆栈检测任务也不打印输出,使用仿真调试发现这两个任务均无法进入(采用打断点方式),然后通过堆栈打印发现各任务的堆栈均足够,不存在任务堆栈溢出的情况,在另外两个任务中打断点均能正常停下来。

异常点说明:仿真调试窗口下,我查看GPS解码和堆栈检测的任务控制块,发现Task_State均为0,0不就代表任务处于就绪态嘛,怎么就运行不进去呢?


有遇到此问题的大神吗,能不能给点建议,非常感谢。

最佳答案

查看完整内容[请看2#楼]

问题找到了,昨天晚上在坛里看了看大家讨论IIC在UCOS运行下是否需要放到临界段来进行处理的问题,然后今天联想到我使用了硬件IIC驱动OLED,然后在OLED写数据时加入临界段处理,现在一切正常,应该还是任务在调用OLED时出现调度,导致一直读取不到返回状态,导致卡死,不知道大家有没有好的方法来避免这类问题,欢迎大家讨论,说说自己的看法。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2016-4-2
在线时间
22 小时
 楼主| 发表于 2017-7-12 18:54:29 | 显示全部楼层
问题找到了,昨天晚上在坛里看了看大家讨论IIC在UCOS运行下是否需要放到临界段来进行处理的问题,然后今天联想到我使用了硬件IIC驱动OLED,然后在OLED写数据时加入临界段处理,现在一切正常,应该还是任务在调用OLED时出现调度,导致一直读取不到返回状态,导致卡死,不知道大家有没有好的方法来避免这类问题,欢迎大家讨论,说说自己的看法。
回复

使用道具 举报

16

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
171
金钱
171
注册时间
2013-12-4
在线时间
43 小时
发表于 2017-7-12 19:39:02 | 显示全部楼层
处于就绪态的任务不一定运行啊,是不是它前面的任务一直处于就绪态和运行态呢,导致它没办法进入运行态。一般把界面任务的优先级设置为最低。
回复

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2016-4-2
在线时间
22 小时
 楼主| 发表于 2017-7-12 20:36:07 | 显示全部楼层
尚磊12323 发表于 2017-7-12 19:39
处于就绪态的任务不一定运行啊,是不是它前面的任务一直处于就绪态和运行态呢,导致它没办法进入运行态。一 ...

其他两个任务正常的在调度,而且都会定期的主动释放掉CPU的使用权,我不理解的是怎么任务运行着就进不去了,我仔细想了想,GPS解码的时候会先申请堆空间用来进行解码操作,解码完成后进行释放,我的堆设置为0X1000,正常情况下肯定是足够使用了,我觉得堆溢出的可能性也不大,主要是不清楚堆溢出会有什么后果,(修改了程序的其他部分导致出错,那应该进hardfault呀)。对于你的建议,我考虑将GPS解码优先级放到最高,然后依次是按键和主界面,看看还会不会有这种现象,多谢啦。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 16:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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