我用ucos建立了2个任务,任务1的优先级为2,任务2的优先级为3.
新建了一个信号量,初始值为1.
哪位能给你解惑一下:
1、任务1输出3,信号量发出后,为什么任务2没有执行呢?而是任务1把4和0输出,且把自己挂起后才执行任务2呢?
2、任务1把自己挂起时,那时信号量为1,他的优先级比任务2的高(任务2已经就绪,任务1也就绪了呀),应该是任务1继续
执行的,为什么任务2却执行了?
下面是串口输出的语句:下面3行特意做了换行,原本这里是没有换行的。
012534067
8129534067
8129534067
[mw_shl_code=c,true]/*****************************任务1*****************************************/
static void Task1 (void *p_arg)
{
INT8U err;
while(1)
{
printf("0");
OSSemPend( sem, 0, &err );
printf("1");
OpenLED; //打开LED
printf("2");
OSTimeDlyHMSM(0,0,0,100);
printf("3");
OSSemPost( sem );
printf("4");
}
}
/********************************任务2**************************************/
static void Task2 (void *p_arg)
{
INT8U err;
while(1)
{
printf("5");
OSSemPend( sem, 0, &err );
printf("6");
CloseLED; //关闭LED
printf("7");
OSTimeDlyHMSM(0,0,1,0);
printf("8");
OSSemPost( sem );
printf("9");
}
}[/mw_shl_code]
|