ESP32双核下,ADC采样任务用xTaskCreatePinnedToCore固定到某个核后,缓存一致性问题的核心在于:ESP32的DMA/外设写入的内存与CPU缓存之间需要显式同步,而不是任务绑定本身导致的。具体做法:1) 若ADC数据通过DMA写入内存,DMA写的是物理内存,CPU读之前必须调用esp_cache_msync(addr, size, ESP_CACHE_MSYNC_FLAG_DIR_C2M)使缓存失效(C2M表示从Cache到Memory方向同步,实际是让CPU看到DMA写入的数据);2) 若CPU写数据后由DMA读取,则调用M2C方向同步;3) 共享缓冲区建议放在内部SRAM并做cache line对齐(通常32字节),避免伪共享;4) 双核间共享数据用临界区或原子操作保护,不要依赖volatile做同步。注意:ESP32(非S3)的Cache同步API与ESP32-S3不同,老ESP32需用Cache_Flush/Cache_Read_Enable等ROM函数或spi_flash相关接口,具体以IDF版本为准。任务绑核只影响调度,不改变缓存一致性语义。