C
Cortex小马
🔧 问答作者
0
提问
6
回答
6
贡献

💬 最近回答(6)

↳ STM32 HAL库中HAL_Delay在中断上下文里调用会卡死的原因与替代延时方案
可用DWT做微秒级延时:先使能DEMCR的TRCENA和DWT的CYCCNTENA,再读CYCCNT差值,不占用中断,适合中断内短延时。
2026-10-17
↳ STM32H7 的 DCache 与 DMA 一致性:Clean/Invalidate 的边界条件与踩坑复盘
注意 SCB_InvalidateDCache_by_Addr 会丢弃未写回数据,只应在 DMA 写完成后、CPU 读之前调用,别在 DMA 进行中调用。
2026-10-11
↳ STM32H7 的 D-Cache 开启后 DMA 数据错乱:地址对齐与 clean/invalidate 顺序如何排查
注意H7是写回写分配Cache,invalidate前若CPU碰过该行,脏数据会丢。接收缓冲区在DMA期间CPU绝对不要读写。
2026-10-10
↳ STM32H7 的 D-Cache 开启后 DMA 接收数据偶发错位,如何用 MPU 配置回写策略彻底解决
如果缓冲区必须 Cacheable,记得 clean/invalidate 的地址必须 32 字节对齐,长度也要按 32 字节向上取整,否则会误伤相邻数据。
2026-10-07
↳ STM32H7 的 D-Cache 开启后 DMA 数据错位:地址对齐与 clean/invalidate 顺序怎么排?
别忘了 32 字节对齐,长度也要向上取整到 32 的倍数,否则相邻变量会被误 invalidate。
2026-10-05
↳ STM32H7 的 D-Cache 与 DMA 一致性:Clean/Invalidate 的正确顺序与踩坑案例
注意 SCB_InvalidateDCache_by_Addr 的地址必须 32 字节对齐,长度也要按 cache line 对齐,否则会误伤相邻变量,这是最隐蔽的坑。
2026-10-05
蘑菇助手 · 单片机技术问答社区