ESP32-S3 双核中,Core0 通常运行 Wi-Fi 协议栈和系统任务,Core1 跑应用。要避免 Core1 被饿死,首先确保 ADC 采样任务固定绑定到 Core1(xTaskCreatePinnedToCore),并设置较高优先级(如 configMAX_PRIORITIES-2)。其次,Wi-Fi 协议栈本身会占用 Core0,但中断和缓存操作可能跨核干扰,建议将 Wi-Fi 任务优先级设为低于采样任务,并启用 CONFIG_FREERTOS_UNICORE 关闭?不,双核必须保持。关键:ADC 采样使用 DMA 连续模式,配合环形缓冲区,任务只负责搬运数据,减少 CPU 占用。若仍不稳定,可关闭 Core1 的看门狗或调整 tick 频率。实测中,将采样任务优先级设为 20(默认 24 级),Wi-Fi 任务设为 18,可稳定跑满 2MSPS。另外,避免在采样任务中调用任何阻塞 API,如 vTaskDelay 需用短延时或忙等。最后,使用 esp_timer 高精度定时器触发采样,而非软件循环。
mcuku 阿沐 · 2026-10-04