STM32为什么不能实现485和DMA的数据收发?

代码因为字数限制简单贴一点串口2加了max485:USART_ITConfig(USART2,USART_IT_IDLE,ENABLE);USART_Cmd(USART2... 代码因为字数限制简单贴一点

串口2加了max485:

USART_ITConfig(USART2, USART_IT_IDLE , ENABLE);
USART_Cmd(USART2, ENABLE);
DMA配置通道4发送,5接收:

DMA_ITConfig(DMA1_Channel4, DMA_IT_TC, ENABLE);
USART_DMACmd(USART2, USART_DMAReq_Tx, ENABLE);
DMA_Cmd(DMA1_Channel4, ENABLE);
DMA_ITConfig(DMA1_Channel5, DMA_IT_TC, ENABLE);
USART_DMACmd(USART2, USART_DMAReq_Rx, ENABLE);
DMA_Cmd(DMA1_Channel5, ENABLE);
中断函数:配置了USART2_IRQHandler,DMA1_Channel4_IRQHandler,DMA1_Channel5_IRQHandler。
实际测试中通过串口调试助手发送11,22,33,44,55 但收到的数据不是发送的数据, 但是只使用串口同样代码能够实现正常的数据收发。

请教高手这是什么原因?
展开
 我来答
time云天空
推荐于2018-04-01 · 超过32用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:55.1万
展开全部
485有一个使能端!每次要切换电平才可以正常的收发数据,而串口不用。
就好比一根水管,串口的的DMA数据像水流,485芯片就是水龙头,你必须先打开水阀水才能流出去
兵蚁突击
2019-07-22
知道答主
回答量:11
采纳率:0%
帮助的人:3.2万
展开全部

可以参考一下ST的这个文档《管理驱动器使能信号以使用
STM32™的 USART 进行 RS-485 和 IO-Link 通信》 AN3070

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
铁马本心
2019-10-24
知道答主
回答量:1
采纳率:0%
帮助的人:692
展开全部
串口2的发送是DMA1的通道7,接收是DMA1的通道6
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
查晓筠0i5
2015-04-17 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4976万
展开全部
关注这个问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式