void Task_T3(void *p_arg)
{
(void) p_arg;
while(1)
{
Test_Log(T3_dev,KeyOpen);
T2Bt(Task_T3_ID,1,1); //发送测试结束。
printf("%s","Task_T3 ing\n");
OSTimeDlyHMSM(0, 0, 0, 100);
}
}
程序跑起来不对劲,逻辑有问题。一是在死循环里面也就是任务里面写了return!在单片机里面是不能return的 必须死循环
2就是上面的逻辑有问题,死循环里面搞一个死循环不对!
效果就是里面的死循环结束以后,出来,外面是死循环,一会儿又进到这里面去了。
正确的做法是葫芦行的 一个循环后面再来一个。
void Task_T1(void *p_arg)
{
u8 res=0;
(void) p_arg;
res=Test_Log(T1_dev,KeyOpen);//测试门内按键开门//死在里面 直到结束 异常提前返回
T2Bt(Task_T1_ID,KeyOpen,res);
res=Test_Log(T1_dev,CardOpen);//测试刷卡开门 //死在里面 直到结束 异常提前返回
T2Bt(Task_T1_ID,CardOpen,res);
while(1)
{
printf("%s","Task_T1 finished\n");
OSTimeDlyHMSM(0, 0, 0, 500);
}
}