这是一个操作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
就没有使用进入和退出临界代码呢?
还有操作串口应该也要加这个进入和退出临界代码吧?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>