推荐把 Wi-Fi/TCP-IP 协议栈固定在 Core 0,实时控制任务固定在 Core 1。原因:ESP-IDF 默认将 Wi-Fi、蓝牙、LWIP 及系统事件任务放在 Core 0(CONFIG_ESP32_WIFI_TASK_CORE_ID=0),协议栈本身有大量中断和内存操作,抖动大;Core 1 留给控制环可减少被协议栈抢占。实操:用 xTaskCreatePinnedToCore() 创建控制任务,优先级设为高于 Wi-Fi 任务(如 10~15),并关闭控制任务所在核的看门狗干扰;Wi-Fi 任务不要手动迁移,保持默认。若控制周期极短(<1ms),建议用高优先级任务+硬件定时器触发,必要时把控制任务设为最高优先级并禁用动态调频。注意双核共享缓存和 PSRAM 访问会引入延迟,关键数据放内部 RAM。
mcuku 阿沐 · 2026-10-03