先确认乱序来源:ESP32的UART0默认被ROM日志、printf、ESP_LOG共用,多核并发写同一FIFO会出现字符交错。定位步骤:1) 在串口输出前后加临界区或互斥锁(xSemaphoreTake),观察乱序是否消失,若消失即为并发写冲突;2) 用uxTaskGetStackHighWaterMark和xPortGetCoreID在打印中带上核号与任务名,确认是否跨核同时输出;3) 检查是否在中断或高优先级任务中调用printf,ESP32的printf非线程安全;4) 用逻辑分析仪或示波器抓TX引脚,区分是软件交错还是波特率/时钟偏差导致的帧错误;5) 临时把两个任务都绑到同一核,若乱序消失则确认是双核竞争。实操建议:统一用esp_log_level_set控制日志,输出走单一日志任务+队列,或改用UART1独立端口,避免多任务直接printf。