在STM32H743芯片上使用DMA传输数据时,如果出现收不到数据,并且不进入回调函数,基本上是RAM地址映射错误,DMA无法访问目标地址导致的。
问题分析:
通常使用STM32CubeMX生成项目时,程序默认执行地址是从RAM1: 0x20000000
处开始执行,而0x20000000
是DTCM段,DMA无法进行访问,这就导致使用DMA传输时无法读写数据,也无法进入回调。

STM32H7总线
解决办法:
- 方法一:修改项目配置,选择支持DMA访问的AXI SRAM区域作为通用RAM起始地址。
- 方法二:使用
__attribute__((section(".ARM.__at_address")))