在ESP32-S3上,Wi-Fi协议栈默认跑在Core0(PRO_CPU),蓝牙/应用常跑Core1。实测建议:把Wi-Fi任务(wifi任务、esp_timer、lwIP的tcpip_thread)固定在Core0,把高实时任务(如电机控制、ADC采样)用xTaskCreatePinnedToCore绑到Core1,并设优先级高于Wi-Fi任务。若把Wi-Fi任务绑到Core1,吞吐会因与实时任务争抢而下降10%~30%,抖动从几十微秒恶化到数百微秒。关键操作:用xTaskCreatePinnedToCore(..., 0)创建Wi-Fi相关任务,实时任务用(..., 1);关闭CONFIG_FREERTOS_UNICORE;用vTaskPrioritySet调整优先级;测量用esp_timer_get_time()打时间戳,统计P99抖动。注意Wi-Fi中断仍会占用Core0,实时任务放Core1可避开大部分中断干扰。若必须单核跑Wi-Fi,建议把实时任务优先级设为高于Wi-Fi任务,但会牺牲吞吐。
mcuku 阿沐 · 2026-09-29