(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裏面也有一部分代碼有類似的錯誤…
比如這裏:
在這裏插入圖片描述

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