本帖最后由 t200017 于 2010-3-1 19:24 编辑
建立了两个任务TASK1,TASK2,TASK1的优先级高于TASK2,同时建立了一信号量
现在TASK1,TASK2申请信号量
static void TASK1(void *p_arg)
{
while (DEF_TRUE) {
OSSemPend(InfoSem,0,&err);
检测按键KEY1,刷新串口
OSSemPost(InfoSem);
OSTimeDlyHMSM(0, 0, 0, 10);
}
}
static void TASK2(void *p_arg)
{
while (DEF_TRUE) {
OSSemPend(InfoSem,0,&err);
检测按键KEY2,刷新串口
OSSemPost(InfoSem);
OSTimeDlyHMSM(0, 0, 0, 10);
}
}
现在的问题是:在TASK2中加入OSSemPend(InfoSem,0,&err)后,按键1和2都无法对检测做出反应,但去掉TASK2的OSSemPend(InfoSem,0,&err)后,均按键1按键2均能正常检测,请问是什么原因????
另外,什么情况下才需要使用信号量,在上面的程序中去掉TASK1和TASK2的等待信号量对程序都没有影响。。。。UCOS中依靠优先级不是也能保证程序的运行吗??
上述程序需不需要使用信号量? |