欢迎光临散文网 会员登陆 & 注册

使用Cubemx 串口dma传输失败发现的cubemx巨坑

2023-03-24 20:28 作者:不姓崔的依拓答辩  | 我要投稿

最近使用cubemx开发stm32f103c8t6工程,使用串口dma接收航模遥控器的ibus信号,但是读取串口dma时老是失败,由于代码是从之前一个已经调通的工程里复制过来的,我坚信我写的代码是没问题的,经过两个工程的对比调试,发现问题出现在cubemx生成的工程模板中。


不好使的工程,cubemx初始化部分的函数如下:

不好使的工程,dma初始化在uart后面


可以发现,其中DMA初始化在UART初始化后面,由于uart初始化需要一部分dma的信息,如果uart初始化的时候dma尚未初始化,将出现问题。


但问题在于这个bug好像是随机出现的,我另外几个工程dma初始化均在uart之前,比如这个:

另一个好使的工程,如果我用i2c2搭配dma,我猜这个工程也不好使

有点离谱,现在我的解决方案就是在这一长串初始化前面自己补一个dma初始化函数,这样无论他生成的是正的还是反的,最终都不影响使用,而且dma重复初始化也没有任何问题,否则,每次他生成出来无法使用的工程,都需要手操把这两个函数换一下位置,我现在的写法如下:

在最上面手动加上dma初始化


最后翻了翻稚晖君的工程,人家的每个工程生成的都没什么问题,可能与cubemx版本有关,我的cubemx使用的是6.5.0,这是能打开稚晖君以往工程的最后一个版本,另外,网上有一位老哥使用6.3.0版本也遇到了同样的问题,望周知。

https://blog.csdn.net/ricefat609/article/details/119620557

使用Cubemx 串口dma传输失败发现的cubemx巨坑的评论 (共 条)

分享到微博请遵守国家法律