ucos跑到空闲任务后不跑出来了?这是为什么?
我建立了三个任务,但是仿真时每当执行到OSTimeDly(2)时就轮流跑到其它的任务,最后就跑到空闲任务里不跑出来了(仿真时运行了很长时间都在空闲任务里)?这样每个任务中OSTimeDly(2)后的代码都没有执行,好像不是这样的吧.是我哪里设置错误了?各位知道这是什么问题吗? 确定任务走起来了没?估计是系统时钟没走的原因。 可能任务切换时关了中断,切换完了却没有开。这种可能性最大,我就碰到一次,楼主软件仿真跟踪一下,注意看看中断是不是没有打开 堆栈溢出 堆栈溢出不是这样的,至少我在移植时碰到堆栈溢出都是任务切换几次后就死掉了,一般是你所建的任务凡是唤醒的都会在内核启动后跑一次,然后进入休眠任务,但是切换任务时就会死掉而不会停在休眠任务里不出来 加个串口调试,看程序跑到哪儿了。 首先要保证除了空闲任务处还有别的任务处于就绪,然后tick那个中断需要打开。
看看任务调度的地方就知道了,任务主动延时是os会调度。中断返回时os会根据情况调度,tick中好像也会调度。
要是tick中断被关了,一切都完了,你一delay就永远起不来了。 谢谢楼上各位,问题找到了
原来是系统的时钟没有跑起来.用axd仿真时定时器没有跑起来不产生中断.我把它烧到芯片里就可以了.
页:
[1]