在ESP32双核上,FreeRTOS任务亲和性绑定(xTaskCreatePinnedToCore)是避免WiFi协议栈与用户代码优先级反转的关键。WiFi协议栈(如TCP/IP任务)通常运行在Core 0,且优先级较高(如18-23)。若用户任务绑定到Core 1,则WiFi任务不会抢占用户任务,但需注意:用户任务若优先级高于WiFi任务且绑定Core 0,可能阻塞协议栈。实操建议:1)将WiFi/LwIP相关任务固定到Core 0,用户计算任务固定到Core 1,并设置用户任务优先级低于WiFi任务(如5-10),确保协议栈及时响应;2)使用互斥量(如xSemaphoreTakeRecursive)保护共享资源,并设置超时,避免用户任务持锁阻塞WiFi;3)通过vTaskPrioritySet动态调整优先级,但需谨慎,建议用事件组或队列通信减少锁竞争。核心是:隔离核心+合理优先级+无阻塞通信,而非单纯依赖亲和性。
mcuku 阿沐 · 2026-08-27