打印

写了段代码,但对结果感觉很困惑,关于ucos的,求大神指导

[复制链接]
1044|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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会交替闪,结果却是同时亮灭,这是为什么?

相关帖子

沙发
神一样的少年|  楼主 | 2013-12-4 17:59 | 只看该作者
优先级是这样的
#define        TASK_LED2_PRIO                        5
#define        TASK_LED3_PRIO                        6

使用特权

评论回复
板凳
delin17| | 2013-12-5 11:16 | 只看该作者
肯定是同步,差几个us时间。。
TASK2点完灯后,DELAY就到TASK点灯了

使用特权

评论回复
地板
delin17| | 2013-12-5 11:17 | 只看该作者
你想交替的话,用消息或信号量来做。。

你现在对任务的切换还不是很了解的

使用特权

评论回复
5
神一样的少年|  楼主 | 2013-12-5 15:08 | 只看该作者
delin17 发表于 2013-12-5 11:16
肯定是同步,差几个us时间。。
TASK2点完灯后,DELAY就到TASK点灯了

多谢,又仔细看了一下ostimedly()的代码,发现里面有任务调度

使用特权

评论回复
6
神一样的少年|  楼主 | 2013-12-5 15:10 | 只看该作者
delin17 发表于 2013-12-5 11:17
你想交替的话,用消息或信号量来做。。

你现在对任务的切换还不是很了解的 ...

是的,很久之前看了一遍书,学的都不牢,看了一遍代码,发现ostimedly()里有任务调度函数

使用特权

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

本版积分规则

6

主题

25

帖子

1

粉丝