freertos高优先级就绪态任务不执行
主要场景是工程里在中断接收iic信息后将完整一帧数据入队然后在另外的接收任务中出队。同时还有其他任务,但接收任务的优先级最高。现在的问题是在长时间运行后,接收任务不再读出队列数据了,同时中断那边还在接收完整的数据帧尝试入队,但因为接收任务没有出队,所以队列满后也无法再有新数据入队。
通过日志观察到出现问题后的接收任务为Ready态,代码里使用的是抢占式任务调度;所以理论上来说此时优先级最高的处于就绪态的接收任务应该抢占cpu资源被执行。但通过调试器断点方式发现该任务并没有被执行,而其他低优先级任务均被执行。
这个现象并不是一开机就存在,而是在经过长时间(4-6小时)的通信后出现的。并不像因为任务堆栈分配不合理产生的任务不运行问题。请问有没有小伙伴遇到过类似的现象可以提供一个思路,谢谢。