想实现的功能是:任务1通过串口控制LED0灯的亮灭,任务2是LED1灯闪烁,如果任务1放延时函数OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_HMSM_STRICT,&err); //延时10ms,一开始任务2能正常运行,可是一旦通过串口发送数据,任务2就停止运行,且任务1也无法运行,接收不到数据;可如果任务1删除延时函数OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_HMSM_STRICT,&err); //延时10ms,,任务1和任务2都无法运行,这是什么情况啊???求大佬们解惑!!!!!
//Task1任务函数
void Task1_task(void *p_arg)
{
u8 ch;
OS_ERR err;
p_arg = p_arg;
while(1)
{
ch=USART_ReceiveData(USART1); //读取接收到的数据
switch(ch)
{
case 'a'ED0=0;printf("关闭LED0\r\n");break;
case 'b'ED0=1;printf("打开LED0\r\n");break;
}
OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_HMSM_STRICT,&err); //延时10ms
}
}
//Task2任务函数
void Task2_task(void *p_arg)
{
OS_ERR err;
p_arg = p_arg;
while(1)
{
LED1=~LED1;
OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err); //延时500ms
}
}
|