关于ucos3的例程中的问题

2019-10-16 03:37发布

这是一个操作lcd和串口的任务:void task1_task(void *p_arg)
{
        u8 task1_num=0;
        OS_ERR err;
        CPU_SR_ALLOC();
        p_arg = p_arg;
       
        POINT_COLOR = BLACK;
        OS_CRITICAL_ENTER();
        LCD_DrawRectangle(5,110,115,314);        
        LCD_DrawLine(5,130,115,130);               
        POINT_COLOR = BLUE;
        LCD_ShowString(6,111,110,16,16,"Task1 Run:000",0);
        OS_CRITICAL_EXIT();
        while(1)
        {
                task1_num++;       
                printf("aaaaaaaaa%d ",task1_num);
                if(task1_num==5)
                {
                        OSTaskDel((OS_TCB*)&Task2_TaskTCB,&err);
                        printf("aaaaaaaaaaaaa ");
                }
                LCD_Fill(6,131,114,313,lcd_discolor[task1_num%14]);
                LCD_ShowxNum(86,111,task1_num,3,16,0x00);       
                OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_HMSM_STRICT,&err);
        }
}


在没进入while(1)中前,操作LCD画图,用了OS_CRITICAL_ENTER()和OS_CRITICAL_EXIT(),LCD作为临界资源,应该这样子操作,那么为什么在while(1)中操作LCD
就没有使用进入和退出临界代码呢?
还有操作串口应该也要加这个进入和退出临界代码吧?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。