UCOSIII内嵌信号量的程序死在了任务一的信号量的请求上,请大神指点
void task1_task(void *p_arg)
{
u8 key;
OS_ERR err;
while(1)
{
key = KEY_Scan(0);
if(key==WKUP_PRES)
{
OSTaskSemPost(&Task2_TaskTCB,OS_OPT_POST_NONE,&err); //发送任务二信号量
}
OSTaskSemPend(0,OS_OPT_PEND_BLOCKING,0,&err);
printf("任务一执行\r\n");
OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err);
}
}
//task2任务函数
void task2_task(void *p_arg)
{
OS_ERR err;
u8 num1=0,num2=0;
while(1)
{
OSTaskSemPend(0,OS_OPT_PEND_BLOCKING,0,&err); //等待信号量
printf("任务次数:%d\r\n",Task2_TaskTCB.SemCtr); //显示信号量值
printf("任务2执行\r\n");
num1++;
printf("%d\r\n",num1);
if(num1 == num2+5)
{
num2 = num1;
OSTaskSemPost(&Task1_TaskTCB,OS_OPT_POST_NONE,&err);
}
LED1=~LED1;
OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_HMSM_STRICT,&err); //延时1s
}
}
|