本人做FreeRTOS任务创建删除实验时,遇到一个问题。代码如下:
//task1任务函数
void task1_task(void *pvParameters)
{
u8 task1_num = 0;
POINT_COLOR = BLACK;
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");
while(1)
{
task1_num++;//任务执行1次加1
LED0 = !LED0;
printf("任务1已经执行:%d次\r\n",task1_num);
if(task1_num == 5)
{
vTaskDelete(Task2Task_Handler);//任务1执行5次后删除任务2
printf("任务1删除了任务2!\r\n");
}
LCD_Fill(6,131,114,313,lcd_discolor[task1_num%14]);//填充区域
LCD_ShowxNum(86,111,task1_num,3,16,0x80);//显示任务执行次数
vTaskDelay(1000);
}
}
当TASK1执行了5次以后,删除了任务2,但是当task1_num到255时,第二次等于5时,系统死机了。
LCD显示:Task1 Run:004,打印信息如下:
任务1已经执行:255次
任务1已经执行:0次
任务1已经执行:1次
任务1已经执行:2次
任务1已经执行:3次
任务1已经执行:4次
任务1已经执行:5次
也就是说,一个任务删除两次,就会死在那里吗?
|