在STM32F4上,DMA双缓冲模式本身不涉及CPU缓存,因为DMA直接访问SRAM,而Cortex-M4内核有L1缓存(D-Cache)。若未启用D-Cache,则无缓存一致性问题;若启用了(如使用外部SDRAM或部分SRAM区域),需在DMA传输前后调用SCB_CleanDCache和SCB_InvalidateDCache,确保数据一致。配置传输完成中断时,使用DMA_IT_TC(传输完成)和DMA_IT_HT(半传输),在中断服务程序中检查DMA_GetITStatus和DMA_GetFlagStatus,并清除标志。注意:双缓冲模式下,TC中断在缓冲区切换时触发,HT在半个缓冲区传输完成时触发,需根据实际需求处理。建议:若缓冲区在内部SRAM且未启用缓存,直接使用;若启用缓存,优先使用DMA的存储器到存储器模式并禁用缓存,或使用非缓存区域(如CCM RAM)。
mcuku 阿沐 · 2026-08-27