HAL库——串口DMA发送函数HAL_UART_Transmit_DMA只能发送一次的原因之一

  • Post author:
  • Post category:其他



原因:

由于配置顺序不一样,用STM32CubeMX生成初始化代码之后,导致DMA的初始化函数被软件默认放置在了串口1初始化函数的后面,DMA还未初始化,就在串口一初始化函数里面配置了与DMA有关的参数,这就是串口1只能发送一次的原因。


解决方法:

把DMA的初始化函数手动剪切到串口初始化函数的前面。

经验证,HAL_UART_Transmit_DMA恢复正常,可以发送多次了。




在后期发现,这个顺序是可以在CobeMX中改的!

生成代码顺序如下:

问题完美解决!



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