__STATIC_INLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize){ #if defined...
addr : 操作的地址一定要是32字节对齐的。dsize :一定要是32字节的整数倍 应该是DMA接收后做无效化而不是DMA接收前作无效化。
But I am/was calling SCB_InvalidateDCache_by_Addr not SCB_CleanDCache_by_Addr either before or after starting/finishing DMA, see two scenarios above. The zeroing of the buffers almost certainly causes a dirty cache, which perhaps is confused by Invalidate not Clean? The buffers are ...
最土的方法,M7的CACR的Bit 2置1,强制WT,试试看。就不用Clean DCache了,改用DMB/DSB命令或者...
STM32H7SCB_InvalidateDCache_by_Addr,SCB_CleanDCache_by_Addr注意 addr : 操作的地址一定要是32字节对齐的。dsize :一定要是32字节的整数倍 应该是DMA接收后做无效化而不是DMA接收前作无效化。