现在我的这个项目有14个任务,包括空闲任务。网络可以通讯了,但当运行到一定的时间(有可能是几个小时也有可能只是几十分钟)系统就挂起了。其表现在:只在空闲任务中运行,其它的任务不能运行。这个时候定时中断还是有的。但是如果我把网线拔掉,那就一直可以运行。 我使用仿真器调试时发现: 虽然现在运行的时空闲任务,但是OSPrioCur的值不是空闲任务的优先级,而是我另外的一个任务的优先级(网络任务)。这使得在调度时OSPrioCur的值和OSPrioHighRdy的值相等而不发生调度。 我手动地把OSPrioCur改成空闲任务的优先级,那系统又可以调度了,但是过不就又出现这种情况。 我原来怀疑是堆栈空间不够,但是我不管把网络任务的那几个任务的堆栈设成多大,这个问题都存在。而且我通过串口打印堆栈的使用情况,都没有发现有溢出。 请问各位大哥,有没有谁遇到这样的问题。或者给个建议说说这问题出在那里? |