打印
[uCOS/RTOS]

写了段代码对结果很不解。关于ucos的。求指导

[复制链接]
1943|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

void Task_Start(void *p_arg)
{
    (void)p_arg;                                                // 'p_arg' 并没有用到,防止编译器提示警告

        OSTaskCreate(Task_LED2,(void *)0,                          //创建任务2
           &task_led2_stk[TASK_LED2_STK_SIZE-1], TASK_LED2_PRIO);

        OSTaskCreate(Task_LED3,(void *)0,                           //创建任务3
           &task_led3_stk[TASK_LED3_STK_SIZE-1], TASK_LED3_PRIO);

    while (1)
    {
        LED1( ON );
        OSTimeDlyHMSM(0, 0,0,300);
        LED1( OFF);   
        OSTimeDlyHMSM(0, 0,0,300);     
    }
}

//任务2
void Task_LED2(void *p_arg)
{
    (void)p_arg;                        
        
    while (1)
    {
        LED2( ON );
        OSTimeDlyHMSM(0, 0,0,300);
        LED2( OFF);
        OSTimeDlyHMSM(0, 0,0,300);        
    }
}

//任务3
void Task_LED3(void *p_arg)
{
    (void)p_arg;      
        
    while (1)
    {
        LED3( ON );
        OSTimeDlyHMSM(0, 0,0,300);
        LED3( OFF);
        OSTimeDlyHMSM(0, 0,0,300);  
       // LED4( ON );
       // OSTimeDlyHMSM(0, 0,0,300);
       // LED4( OFF);
       // OSTimeDlyHMSM(0, 0,0,300);      
    }
}
本来以为led1,2,3会交替闪,结果却是同时亮灭,这是为什么?

优先级是这样的
#define        TASK_LED2_PRIO                        5
#define        TASK_LED3_PRIO                        6

相关帖子

沙发
john_lee| | 2013-12-4 19:15 | 只看该作者
这个结果是正确的

使用特权

评论回复
板凳
神一样的少年|  楼主 | 2013-12-4 19:31 | 只看该作者
john_lee 发表于 2013-12-4 19:15
这个结果是正确的

是不是OSTimeDlyHMSM(0, 0,0,300)在进行任务调度的同时,把调用它的任务从就绪表中清除了?

使用特权

评论回复
地板
星辰yyt| | 2013-12-6 14:29 | 只看该作者
OSTimeDlyHMSM(0, 0,0,300)时该任务可以理解是挂起的状态,会去执行其他就绪的任务直到时间延时结束才会重新执行,所以结果是同时亮灭。

使用特权

评论回复
5
木叶小镇| | 2013-12-9 09:21 | 只看该作者
实际上是有先后顺序的,但是先后顺序时间太短,所以你看不出来。任务2刚挂起,任务三就开始继续执行,此时任务1还在挂起状。想要实现led1,2,3会交替闪,需要在程序里面控制,上面程序是不行的。

使用特权

评论回复
6
20062516| | 2013-12-15 19:34 | 只看该作者
执行到OSTimeDlyHMSM(0, 0,0,300)的时候CPU就去干别的事了(任务调度,去执行别的任务了),CPU可不会傻傻的在那等那个延时结束

使用特权

评论回复
7
fengdingkusong| | 2013-12-16 11:19 | 只看该作者
木叶小镇 发表于 2013-12-9 09:21
实际上是有先后顺序的,但是先后顺序时间太短,所以你看不出来。任务2刚挂起,任务三就开始继续执行,此时 ...

赞一个

使用特权

评论回复
8
xxiao6130| | 2013-12-19 20:26 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

25

帖子

2

粉丝