(xTaskNotify)- assert failed! 错误的修复

今日在测试ESP32代码的时候,使用xTaskNotify发生错误,提示如下:
(xTaskNotify)- assert failed!,然后系统重启。

找了一下原因,在xTaskNotify()之前先打印对应的task_handle,结果是NULL。

if(target_task_handle != NULL){
        xTaskNotify((TaskHandle_t   )target_task_handle,        //接收任务通知的任务句柄
							(uint32_t       )bit_lock_onoff,                
							(eNotifyAction  )eSetBits);
    }else{
        ESP_LOGI("xTaskNotify","NULL pointer");
    }

然后找到创建任务的代码,发现最后一个参数使用了target_task_handle。编译和运行不会报错,但是使用target_task_handle向任务传递消息的时候就不行了。原因是xTaskCreate的handle参数应该使用地址&target_task_handle。修改后问题解决。

ps: esp-idf里面也有一部分代码有类似的错误…
比如这里:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章