PICTURE 发表于 2008-5-22 21:30:08

ucos跑到空闲任务后不跑出来了?这是为什么?

我建立了三个任务,但是仿真时每当执行到OSTimeDly(2)时就轮流跑到其它的任务,最后就跑到空闲任务里不跑出来了(仿真时运行了很长时间都在空闲任务里)?这样每个任务中OSTimeDly(2)后的代码都没有执行,好像不是这样的吧.是我哪里设置错误了?各位知道这是什么问题吗?

while_1 发表于 2008-5-23 00:44:54

确定任务走起来了没?
估计是系统时钟没走的原因。

yangsen 发表于 2008-5-23 08:25:03

可能任务切换时关了中断,切换完了却没有开。这种可能性最大,我就碰到一次,楼主软件仿真跟踪一下,注意看看中断是不是没有打开

halloween 发表于 2008-5-23 08:35:43

堆栈溢出

yangsen 发表于 2008-5-23 08:42:14

堆栈溢出不是这样的,至少我在移植时碰到堆栈溢出都是任务切换几次后就死掉了,一般是你所建的任务凡是唤醒的都会在内核启动后跑一次,然后进入休眠任务,但是切换任务时就会死掉而不会停在休眠任务里不出来

friendljy 发表于 2008-5-23 08:46:20

加个串口调试,看程序跑到哪儿了。

zllfdd 发表于 2008-5-23 09:52:40

首先要保证除了空闲任务处还有别的任务处于就绪,然后tick那个中断需要打开。

看看任务调度的地方就知道了,任务主动延时是os会调度。中断返回时os会根据情况调度,tick中好像也会调度。

要是tick中断被关了,一切都完了,你一delay就永远起不来了。

PICTURE 发表于 2008-5-25 20:12:29

谢谢楼上各位,问题找到了
原来是系统的时钟没有跑起来.用axd仿真时定时器没有跑起来不产生中断.我把它烧到芯片里就可以了.
页: [1]
查看完整版本: ucos跑到空闲任务后不跑出来了?这是为什么?