请教关于 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条回答
lanlzp
1楼-- · 2019-07-20 14:42
你自己不也是说了吗,是两路公用一个缓冲区导致的问题,解决办法时分开使用各自存储
Sun_Fly
2楼-- · 2019-07-20 17:39
是不是通道弄错了,看看串口1 2你配置的是几通道
talenthn
3楼-- · 2019-07-20 18:48
 精彩回答 2  元偷偷看……
talenthn
4楼-- · 2019-07-20 23:47
 精彩回答 2  元偷偷看……
talenthn
5楼-- · 2019-07-21 04:54
talenthn 发表于 2017-10-23 14:53
这个我也不确定

主要是HAL跟标准库的差别挺大的,HAL的没有自定义接收地址的地方,貌似得调用HAL_UART_Receive_DMA(huart,USART1_RX_BUF,USART_REC_LEN);这个函数才能接收
呵呵呵开西寨
6楼-- · 2019-07-21 09:14
 精彩回答 2  元偷偷看……

一周热门 更多>