DMA UART 485接口 发送数据缺少字节

2019-07-21 00:14发布

程序使用DMA发送,开发送中断, 中断里关485发送. 结果发现发送出去的字节少了并且最后一个字节不对.
以为DMA中断已经发生,代表数据已发送完成,马上关485发送, 但数据还要经过UART外设, 不要忽略这个.  
解决问题的办法就是在中断里检测UART发送完成标志. 然后再关485发送. 数据就能通讯正常.
                while(!USART_GetFlagStatus(USART3, USART_FLAG_TC))
                {               
                }
                USART_ClearFlag(USART3,USART_FLAG_TC);

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
东方赤那
1楼-- · 2019-07-21 06:01
觉得有用,请支持一下
aozima
2楼-- · 2019-07-21 08:26
 精彩回答 2  元偷偷看……
yklstudent
3楼-- · 2019-07-21 14:18
 精彩回答 2  元偷偷看……
人去搂空
4楼-- · 2019-07-21 17:31
支持!谢谢分享!
东方赤那
5楼-- · 2019-07-21 21:58
aozima 发表于 2019-6-10 11:36
楼主的方向是对的,但是在中断里面延时一个字符是不建议的。
可以使用TC中断。

原来的程序是做的延时 , 能用,  但总觉得不对头, 找到了问题的根源

一周热门 更多>