比如像如下代码,在函数执行完vTaskDelete(xHandleTaskLED1)之后,xHandleTaskLED1还是非空的,为什么呢
//初始化任务句柄
static TaskHandle_t xHandleTaskLED1 = NULL;
static TaskHandle_t xHandleTaskBeep = NULL;
//创建任务
static void AppTaskCreate(void)
{
xTaskCreate(vTaskLed1, /* 任务函数名 /
"Task Led1", / 任务名,字符串形式,方便调试 /
512, / 栈大小,单位为字,即4个字节 */
(void )&task_led3, / 任务形参 /
1, / 优先级,数值越大,优先级越高 /
&xHandleTaskLED1); / 任务句柄 */
xTaskCreate(
vTaskBeep,
"Task Beep",
512,
NULL,
2,
&xHandleTaskBeep);
}
//在任务beep中删除led任务
void vTaskBeep(void pvParameters)
{
/ 任务都是一个无限循环,不能返回 /
while(1)
{
BEEP_ON;
/ 阻塞延时,单位ms */
vTaskDelay( 20 );
BEEP_OFF;
vTaskDelay( 500 );
if(xHandleTaskLED1!=NULL)
vTaskDelete(xHandleTaskLED1);
}
}