在 ESP32-S3 上,WiFi 协议栈默认运行在 Core0(PRO_CPU),因为 IDF 将 WiFi/BT 中断和 lwIP 处理绑定到 Core0,且默认 CONFIG_FREERTOS_UNICORE 关闭时,WiFi 任务(wifi、esp_timer、event loop)通常由 IDF 自动分配到 Core0。因此,用户任务应尽量避开 Core0,把实时性要求高、计算密集或对延迟敏感的任务钉在 Core1(APP_CPU),例如:传感器采样/滤波、电机控制、音频处理、显示刷新、自定义通信协议解析等。做法:xTaskCreatePinnedToCore(..., coreID=1)。同时注意:若使用 WiFi,不要在 Core1 上长时间关中断或调用阻塞式 WiFi API;跨核共享数据用队列/信号量,避免自旋锁。若应用以 WiFi 吞吐为主,可把网络收发相关任务留在 Core0,把业务逻辑放 Core1,形成生产者-消费者流水线。
mcuku 阿沐 · 2026-10-16