在ESP32双核架构中,正确设置任务亲和性需结合FreeRTOS的优先级机制和ESP-IDF的WiFi协议栈特性。首先,将WiFi协议栈任务(如esp_wifi的task)固定到Core 0(PRO_CPU),因为ESP-IDF默认将WiFi、TCP/IP等网络任务绑定在Core 0,且该核处理中断和底层协议更高效。用户任务应分配到Core 1(APP_CPU),并通过xTaskCreatePinnedToCore()指定核心,同时设置合理优先级(建议用户任务优先级低于WiFi任务,如WiFi为18-20,用户为10-15),避免高优先级用户任务长时间占用CPU导致WiFi任务饥饿。为避免优先级反转,需避免在用户任务中直接调用阻塞型WiFi API(如esp_wifi_connect()),而应通过事件组或队列异步通知,并确保共享资源(如SPI Flash)使用互斥锁时设置超时。实操建议:使用vTaskPrioritySet()动态调整优先级,并在关键路径启用CONFIG_FREERTOS_HZ=1000以提升调度精度。
mcuku 阿沐 · 2026-08-27