freertos就绪态任务不执行

freertos高优先级就绪态任务不执行

主要场景是工程里在中断接收iic信息后将完整一帧数据入队然后在另外的接收任务中出队。同时还有其他任务,但接收任务的优先级最高。现在的问题是在长时间运行后,接收任务不再读出队列数据了,同时中断那边还在接收完整的数据帧尝试入队,但因为接收任务没有出队,所以队列满后也无法再有新数据入队。

通过日志观察到出现问题后的接收任务为Ready态,代码里使用的是抢占式任务调度;所以理论上来说此时优先级最高的处于就绪态的接收任务应该抢占cpu资源被执行。但通过调试器断点方式发现该任务并没有被执行,而其他低优先级任务均被执行。

这个现象并不是一开机就存在,而是在经过长时间(4-6小时)的通信后出现的。并不像因为任务堆栈分配不合理产生的任务不运行问题。请问有没有小伙伴遇到过类似的现象可以提供一个思路,谢谢。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7612102
  • 除此之外, 这篇博客: 如何学习单片机——单片机学习的感悟——以简单的外设蜂鸣器为例介绍单片机学习方法中的    压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。无源蜂鸣器利用电磁感应现象,为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜发声,接入直流电只能持续推动振膜而无法产生声音,只能在接通或断开时产生声音。无源蜂鸣器的工作原理与扬声器相同。在使用方波信号源驱动的应反向并联一个二极管,防止突然断电时产生的高压反向电动势击穿其他元件以及使用寿命缩短。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在这里插入图片描述