在STM32F4系列(Cortex-M4,无L1 Cache,但有可选的外部SDRAM或内部SRAM的Cache?实际F4无Cache,但若使用外部存储器或DMA与CPU共享数据,需注意总线一致性问题。F4无Cache,但若使用DMA双缓冲,需确保缓冲区地址对齐(32字节)且使用__ALIGN_BEGIN,并禁用编译器优化或使用volatile。若涉及外部存储器(如SDRAM),需配置MPU为非缓存(或写-through)区域。实操建议:1)将双缓冲区定义为全局数组并加__attribute__((aligned(32)));2)在DMA传输前调用__DSB()和__ISB()确保指令同步;3)若使用外部RAM,在MPU中设置该区域为Normal, Non-cacheable;4)传输完成后,使用DMA中断标志确认数据就绪,再读取缓冲区。
mcuku 阿沐 · 2026-08-27