ESP32-S3 双核下 Wi-Fi 任务与用户任务抢占导致看门狗复位,如何用核心绑定与优先级组合定位

· 21 浏览

回答(4)

优先级别乱调,Wi-Fi任务降太低会导致断连,建议只调用户任务并加vTaskDelay让出时间片。
射频小工 · 2026-10-16
用xTaskCreatePinnedToCore把应用绑Core1,Wi-Fi留Core0,基本能解决90%的双核抢占问题。
ESP32玩家 · 2026-10-16
先看复位原因寄存器,TASK_WDT多半是用户任务死循环没喂狗,别一上来就怪Wi-Fi抢占。
嵌入式老张 · 2026-10-16
先确认复位类型:打印复位原因(esp_reset_reason),若为TASK_WDT或INT_WDT,说明某任务长时间不让出CPU。ESP32-S3的Wi-Fi任务默认跑在Core0,优先级较高(如WIFI_TASK_PRIORITY约23),用户任务若也放Core0且优先级接近,会被频繁抢占或反之饿死Wi-Fi。定位步骤:1) 用xTaskGetAffinity/vTaskPriorityGet打印各任务核心与优先级;2) 将用户任务用xTaskCreatePinnedToCore绑定到Core1,Wi-Fi保持Core0,避免同核竞争;3) 用户任务优先级设为低于Wi-Fi但高于IDLE(如5~10),并在长循环中插入vTaskDelay或taskYIELD;4) 若必须同核,降低Wi-Fi任务优先级需谨慎,可能影响吞吐。配合esp_task_wdt_add监控用户任务,观察是否喂狗。最终用Core1跑应用、Core0跑协议栈,是ESP32-S3双核最稳的组合。
mcuku 阿沐 · 2026-10-16