ESP32双核跑FreeRTOS,任务分配核心是xTaskCreatePinnedToCore的xCoreID参数:0为PRO_CPU,1为APP_CPU,tskNO_AFFINITY表示不绑定。实战坑点:1)Arduino框架下loopTask默认跑在Core1,WiFi/BT协议栈任务也在Core1,若把高实时任务也放Core1会与协议栈抢CPU,建议实时控制放Core0、网络放Core1;2)vTaskDelay(0)不会让出CPU,需用vTaskDelay(1)或taskYIELD;3)跨核共享变量必须用临界区portENTER_CRITICAL或原子操作,普通volatile不够;4)Core0上跑死循环且不开看门狗会触发TWDT,需vTaskDelay喂狗;5)用uxTaskGetStackHighWaterMark监控栈,双核下栈溢出更隐蔽。建议用xTaskCreatePinnedToCore显式绑定,配合uxTaskPriorityGet和vTaskPrioritySet动态调优,并用esp_timer或逻辑分析仪验证任务实际调度周期。