您的位置 首页 开关

STM32单片机的USART接纳数据问题解决方案

STM32单片机的USART接收数据问题解决方案-先使用USART中断函数接收数据,判断是否接收到每帧数据的起始标记字符。如果接收到就关闭USART中断,然后开启DMA用于后续串口数据的接收。但是出现一个问题是每帧数据的起始标记为:A5 4A 05 00 00 40 81

先运用USART中止函数接纳数据,判别是否接纳到每帧数据的开端符号字符。假如接纳到就封闭USART中止,然后敞开DMA用于后续串口数据的接纳。可是呈现一个问题是每帧数据的开端符号为:A5 4A 05 00 00 40 81

然后敞开DMA传输后所接纳收到的第一个数据为0x81,也便是开端标志字符的最终一个数据。

形成这样问题的原因是:

在USART初始化时运用了函数:USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);

尽管此刻DMA没有被使能,可是硬件上现已开端做DMA传输检测了。

解决办法:

将函数:USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);从串口初始化函数中删除去,然后和使能DMA传输函数放在一同。这样就成功解决问题了。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/346468.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部