请教关于 HAL库 多串口 DMA接收 的问题

2019-07-20 10:51发布

我参考了网上的UART+IDLE+DMA的例程,使用串口空闲中断实现DMA接收。

串口1单独DMA接收可以实现,串口2单独DMA接收也可以。但是两个串口一起开启DMA接收就会出现:


串口1接收正常,串口2开始接收,串口2无数据,串口1在正常数据后面出现乱码部分。


我猜测:是两路公用一个缓冲区是否需要清缓冲区?还是同一时间只能一个DMA通道可以运行呢?


如何协调才能使多串口DMA接收成功(不需要发送)呢?请各位大神指点一二。(我是用的是STM32F429的板子用的是HAL库)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
l6931639
1楼-- · 2019-07-22 08:55
talenthn 发表于 2017-10-24 16:26
对了,请教一下接收串口数据是用空闲中断好点还是用DMA中断好点呢

各有好处,一般定长的数据直接用dma中断我个人觉得方便些
talenthn
2楼-- · 2019-07-22 12:46
 精彩回答 2  元偷偷看……
hpdell
3楼-- · 2019-07-22 14:13
 精彩回答 2  元偷偷看……
talenthn
4楼-- · 2019-07-22 16:13
hpdell 发表于 2017-10-24 22:13
估计问题貌似就在这里了,

DMA2_Stream2_CHANNEL_4,串口6是DMA2_Stream2_CHANNEL_5

是的是的,昨晚调出来了,确实不能一个stream
talenthn
5楼-- · 2019-07-22 21:15
hpdell 发表于 2017-10-24 22:13
估计问题貌似就在这里了,

DMA2_Stream2_CHANNEL_4,串口6是DMA2_Stream2_CHANNEL_5

感谢感谢
YQ
6楼-- · 2019-07-23 01:41
 精彩回答 2  元偷偷看……

一周热门 更多>