ShaoKn 发表于 2012-4-29 20:33:21

uCOS启动后三个任务依次执行一遍,跑到空闲任务不能跳出

最近在S3C44B0公板上移植uCOS真是问题多多.
昨天解决了下面这个问题
[求助]S3C44B0移植uCOS出问题困扰了很多天
http://www.ourdev.cn/thread-5470488-1-1.html
但新的问题又来了.

如题,我创建了三个任务(Task1,Task2,Task3),分别如下:
void
Task1(void *i)
{
    for (;;)
    {
        LED0(1);   //灯0亮
        OSTimeDly(500);
        LED0(0);   //灯0灭
        OSTimeDly(500);
   }
}

void
Task2(void *i)
{
    for (;;)
    {
        LED1(1);  //灯1亮
        OSTimeDly(1000);
        LED1(0);  //灯1灭
        OSTimeDly(1000);
   }
}

void
Task3(void *i)
{
    for (;;)
    {
        LED2(1);  //灯2亮
        OSTimeDly(2000);
        LED2(0);  //灯2灭
        OSTimeDly(2000);
   }
}

现在的问题是:OSStart()后,任务1,2,3依次执行了一部分.就是仅仅灯0,1,2分别点亮了,但没有熄灭.调试发现
当灯2亮后进入OSTimeDly(2000); 程序然后依次进入voidOS_TaskStat (void *parg),再voidOS_TaskIdle (void *parg).
最后在空闲任务中一直无法跳出.

实在不知道哪里出了问题,特来万能的坛请教,先谢谢大家了.

aozima 发表于 2012-4-29 21:00:11

没有心跳。

ShaoKn 发表于 2012-4-29 21:04:21

哈哈 我正在找没有心跳的原因

ShaoKn 发表于 2012-4-29 23:32:14

把有关系统时钟的寄存器查了个遍,发现原来是rTCNTB0给的初值太小,导致系统一直进中断,心跳太快了!
这个问题算是解决了.肯定还有下集...

hbchf 发表于 2012-6-4 17:24:41

持续关注

abnerle 发表于 2012-6-4 20:41:02

ShaoKn 发表于 2012-4-29 23:32 static/image/common/back.gif
把有关系统时钟的寄存器查了个遍,发现原来是rTCNTB0给的初值太小,导致系统一直进中断,心跳太快了!
这个 ...

rTCNTB0给的初值太小?
什么意思,楼主解释一下,我也遇到类似问题了

谢谢

ShaoKn 发表于 2012-6-4 21:14:34

abnerle 发表于 2012-6-4 20:41 static/image/common/back.gif
rTCNTB0给的初值太小?
什么意思,楼主解释一下,我也遇到类似问题了



我用定时器0产生定时中断为系统提供时钟节拍,但定时中断太频繁是不行的。uC/OS-II时钟节拍在10Hz~100Hz,即定时中断应为10ms~100ms.

ShaoKn 发表于 2012-6-4 21:19:49

hbchf 发表于 2012-6-4 17:24 static/image/common/back.gif
持续关注

毕业设计已做完,就是一个简单的uC/OS-II移植,创建了三个任务,驱动TFT画线写字等。
还是有很多问题,但是懒得再往下做了。
页: [1]
查看完整版本: uCOS启动后三个任务依次执行一遍,跑到空闲任务不能跳出