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 但收到的数据不是发送的数据, 但是只使用串口同样代码能够实现正常的数据收发。
请教高手这是什么原因? 展开
串口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 但收到的数据不是发送的数据, 但是只使用串口同样代码能够实现正常的数据收发。
请教高手这是什么原因? 展开
4个回答
展开全部
可以参考一下ST的这个文档《管理驱动器使能信号以使用
STM32™的 USART 进行 RS-485 和 IO-Link 通信》 AN3070
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
串口2的发送是DMA1的通道7,接收是DMA1的通道6
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关注这个问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询