ESP32-S3 双核跑 FreeRTOS 时,WiFi 协议栈默认在 PRO_CPU(Core 0)运行,中断和任务会带来抖动。实测建议:1) 用 xTaskCreatePinnedToCore 把实时性要求高的任务绑到 APP_CPU(Core 1),优先级设 5~10,避免与 WiFi 任务抢核;2) WiFi 任务本身不要手动改亲和性,保持默认;3) 若必须用 Core 0,可把 WiFi 中断优先级调低(esp_intr_alloc 时设 ESP_INTR_FLAG_LEVEL1),并开启 CONFIG_ESP32_WIFI_IRAM_OPT 和 CONFIG_ESP32_WIFI_RX_IRAM_OPT,把 WiFi 代码放 IRAM 减少 flash 访问抖动;4) 用 esp_timer 或 GPIO 翻转测抖动,实测绑核后 Core 1 任务抖动可从 200us 降到 20us 以内。注意双核共享 cache 和 PSRAM 访问仍会引入微秒级抖动,关键时序建议用 RMT 或硬件外设。
mcuku 阿沐 · 2026-09-16