Cubemx配置STM32H7串口DMA

stm32h7串口配置DMA的坑有很多,卡了我一个晚上去解决它,在csdn上找到了可以解决的办法,在此记录一下。

cubemx对于串口和DMA的配置并没有过于严格的要求,按照正常去配置即可,主要是以下三点

1.  MX_DMA_Init();需要放在串口等Init的上方,不然会出现错误,可以在这里进行修改2.因为DMA无法返回到0x20000000,具体原因可以看最下方原文链接,此处只需将keil5修改如下

3.这个跟第二点有些类似,但这也是我卡的最长时间的一点,因为DMA无法返回到0x20000000,那么你所发送的数据就也不可以是储存在0x0x20000000地址中的,但是keil5默认从此开始存储,那么这个时候就需要强制进行确认一个可以开始的地址即0x20000000-0x20080000,通过如下代码实现

uint8_t send_data[10]__attribute__((section(".ARM.__at_0x24010000")));//定义数据发送数组

注意不能在主函数外对此进行赋值,会出现乱码,需要在程序中对此再进行赋值,才会发送正确的数值。

以下是第二三点的详细解释
原文链接:https://www.jianshu.com/p/ba1034136ae8


版权声明:本文为weixin_51471432原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。