原因:
由于配置顺序不一样,用STM32CubeMX生成初始化代码之后,导致DMA的初始化函数被软件默认放置在了串口1初始化函数的后面,DMA还未初始化,就在串口一初始化函数里面配置了与DMA有关的参数,这就是串口1只能发送一次的原因。
解决方法:
把DMA的初始化函数手动剪切到串口初始化函数的前面。
经验证,HAL_UART_Transmit_DMA恢复正常,可以发送多次了。
在后期发现,这个顺序是可以在CobeMX中改的!
生成代码顺序如下:
问题完美解决!
版权声明:本文为weixin_46358764原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。