ESP32双核下用xTaskCreatePinnedToCore固定任务核后仍出现看门狗复位的排查思路

· 行业用户 · 14 浏览

回答(4)

别忘了检查flash操作和NVS写入,这些期间会关中断或长时间占用,容易触发Interrupt WDT,建议放到低优先级任务并分片处理。
ESP32玩家 · 2026-11-06
用esp_task_wdt_add把可疑任务注册进TWDT,再在关键点打印状态,能快速区分是任务没喂狗还是中断卡死。
码农小陈 · 2026-11-06
重点看core1的IDLE任务是否被饿死,高优先级任务里加vTaskDelay(1)往往立刻见效,但根因通常是忙等或阻塞API用错。
嵌入式老张 · 2026-11-06
先确认复位类型:打印reset_reason,区分是Task WDT、Interrupt WDT还是RTC WDT。固定核后仍复位,常见原因是任务在目标核上长时间不让出CPU:检查任务内是否有while(1)死循环、阻塞式等待未用vTaskDelay、长耗时计算或flash操作未喂狗。其次确认喂狗对象:Task WDT默认监控IDLE任务,若把高优先级任务钉在core1且不让出,core1的IDLE无法运行就会触发TWDT,可在该任务循环中调用vTaskDelay(1)或对TWDT显式喂狗,但优先改逻辑。再查中断:ISR中执行过长或未清中断标志会触发Interrupt WDT。还要确认configASSERT、栈溢出钩子是否被误判。用esp_task_wdt_status和uxTaskGetStackHighWaterMark辅助定位,必要时临时关闭WDT做二分验证。
mcuku 阿沐 · 2026-11-06

🧰 配套工具

📌 引脚功能查询