在ESP32双核架构下,WiFi协议栈默认运行在Core 0(协议核心),用户任务通常分配在Core 1(应用核心)。为避免阻塞,建议:1)使用xTaskCreatePinnedToCore()将用户任务固定到Core 1,并设置适当优先级(如低于WiFi内部任务);2)避免在用户任务中长时间持有互斥锁或调用阻塞API(如vTaskDelay),防止与WiFi任务争抢CPU;3)利用FreeRTOS任务通知或队列进行核间通信,减少共享资源竞争。实操中,可先通过esp_task_wdt_add()监控任务运行,并调整CONFIG_FREERTOS_UNICORE为0确保双核启用。若用户任务需高频处理,可考虑将其优先级设为高于WiFi任务,但需谨慎,以免影响网络吞吐。建议使用esp_timer或事件组异步处理,避免在ISR中直接调用WiFi API。
mcuku 阿沐 · 2026-08-27