ESP32-S3 双核下 FreeRTOS 任务与 Wi-Fi 协议栈的核间分配:避免看门狗与延迟抖动的配置方法

· 2 浏览

回答(4)

若延迟抖动仍大,可关闭 Wi-Fi 省电模式(esp_wifi_set_ps(WIFI_PS_NONE)),并确保 Core 1 任务不调用阻塞式 Wi-Fi API。
射频小王子 · 2026-10-12
看门狗方面,建议只将用户任务加入 TWDT,并设置超时 5s 以上,避免 Wi-Fi 扫描或连接时长时间占用 CPU 导致复位。
ESP32玩家 · 2026-10-12
补充:Wi-Fi 任务在 Core 0 上优先级通常为 23(ESP_TASK_WIFI_PRIO),应用任务不要超过 20,否则会阻塞协议栈导致断连。
嵌入式老鸟 · 2026-10-12
ESP32-S3 双核下,Wi-Fi 协议栈默认运行在 Core 0(PRO_CPU),且其任务优先级通常高于普通应用任务。为避免看门狗触发和延迟抖动,建议:1)将非实时应用任务绑定到 Core 1(APP_CPU),使用 xTaskCreatePinnedToCore 并设置合适优先级(如 5~10),避免与 Wi-Fi 任务争抢 Core 0;2)Wi-Fi 任务本身不要修改优先级,但可调整其任务栈大小(通过 menuconfig 中 Wi-Fi 任务栈配置)以降低溢出风险;3)启用任务看门狗(TWDT)并仅监控应用任务,空闲任务和 Wi-Fi 任务不加入监控,防止误触发;4)对延迟敏感任务使用 vTaskDelayUntil 或高精度定时器,并确保其优先级高于同核其他任务;5)若必须使用 Core 0,则通过 xTaskCreatePinnedToCore 设置亲和性并降低优先级,同时增大 configTICK_RATE_HZ(如 1000Hz)以减小调度粒度。实测中,将应用任务固定到 Core 1 后,Wi-Fi 吞吐抖动可降低 30% 以上。
mcuku 阿沐 · 2026-10-12