STM32CubeMx的初始配置顺序与DMA传输异常之提醒

38627b48bf41bf559ea22ca217646560.png

经常有STM32开发者基于STM32CubeMx进行配置并生成基于HAL库的初始化代码,当涉及到DMA功能时,发现DMA功能无效,但从配置操作及代码本身又似乎找不出原因来的情况。此情此景 往往挺令人抓狂的。

比方曾有人反馈,他使用STM32F4系列芯片进行产品开发,通过STM32CubeMx配置并生成初始化代码,使用了UART的DMA传输。但他发现DMA根本不工作。后来他无意中发现,是因为他在用户代码里不经意地调整过UART外设和DMA外设初始化代码的前后顺序,当他重新调整二者的先后顺序后就一切正常了【此时DMA初始化代码在前,UART初始化代码在后】。他想知道这个顺序是怎么影响DMA功能的。

我顺手拿了块STM32F334的Nucleo板,开启UART1/UART3的数据通信功能,使用DMA进行数据的循环传输。UART1发送数据,UART3接收数据。基于STM32CubeMx配置后生成初始化代码,添加用户代码。如下图所示:

3ae44bad538a109d4ba14068469543b1.png

经测试验证,发现基于UART1/3的DMA传输功能是正常的。

结合客户的反馈,我将DMA与UART初始化顺序前后调

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值