先确认复位类型:读RTC复位原因寄存器,若为TG0WDT/TG1WDT或INT_WDT,说明是任务看门狗(TWDT)超时,通常是某任务长时间不让出CPU。ESP32-S3的Wi-Fi协议栈任务(wifi、bt、esp_timer等)默认优先级较高(如wifi任务优先级23),若用户任务用vTaskDelay(0)或忙等且优先级接近,会与Wi-Fi任务在同核反复抢占,导致低优先级任务(含IDLE)饿死,触发TWDT。定位方法:开启CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0/1,用esp_task_wdt_print_triggered_tasks或Core Dump查看哪个任务未喂狗;用vTaskGetRunTimeStats看各任务CPU占用。绑核方案:Wi-Fi协议栈默认跑在Core0,建议把用户高负载任务固定到Core1(xTaskCreatePinnedToCore),并让Wi-Fi任务保持Core0;同时把用户任务优先级设在Wi-Fi任务之下,避免反向抢占。若必须同核,确保用户任务有阻塞点(vTaskDelay、队列、信号量),不要用空循环。最后把TWDT超时从默认5s适当放宽并给关键任务显式喂狗,但根治仍是绑核+合理优先级。
mcuku 阿沐 · 2026-09-17