STM32
登录
直播中
蒲泛粟
7年用户
954经验值
私信
关注
[问答]
请问stm32串口热拔插以后接收数据出错怎么解决?
开启该帖子的消息推送
STM32
怎么在
单片机
正常运行的时候判断串口硬件是否出错?
STM32
串口热拔插以后接收数据出错怎么解决?
回帖
(1)
韩冬
2021-12-9 11:02:16
最近发现,STM32中断接收完成回调函数在USB转CH340模块带电拔插一次以后会出现异常数据。具体的来说是数据出现一次右移,再出现一次右移,以后每次接受接收到的数据都出现位移。引起这个问题的原因可能是拔掉以后导致STM32串口硬件出错。硬件出错必须要复位才行,那怎么在单片机正常运行的时候怎么判断串口硬件出错呢?
我在网上找了很多的资料,大多数的都出现在处理数据上。不是和我问题很接近的。然后我想在HAL库的串口.c文件中找问题所在。
首先,HAL库的串口库stm32f1xx_hal_uart.c中有明确的表示,注意下方红色字体。
在官方库的介绍中,有详细的讲解,如何使用这些函数,以及出现问题怎么解决,我们只要花点时间去琢磨他还是可以找到问题的关键的。
在stm32f1xx_hal_uart.c文件中的这段话大体意思是;
(+)错误被认为是可恢复的和非阻塞的:传输可以一直进行到结束,但是错误的严重性将由用户评估:这涉及到帧错误、奇偶校验错误或中断模式接收中的噪声错误。然后检索接收到的字符并将其存储在Rx缓冲区中,设置错误代码以允许用户识别错误类型,并执行HAL_UART_ErrorCallback()用户回调。传输在UART上继续进行侧面。如果用户想要中止它,中止服务应该由用户调用。
(+)错误被视为阻塞:传输无法正确完成,是中止了。这个涉及中断模式接收中的超限错误和DMA中的所有错误模式。错误代码被设置为允许用户识别错误类型,并执行HAL_UART_ErrorCallback()用户回调。
出现错误会在HAL_UART_ErrorCallback()函数中处理,这样的话我们在错误回调函数中复位,当检测到硬件错误,就在这里复位。下面添加复位代码:
先关闭中断,再软件复位。可以解决问题。
复位是最简单的方案,当然有的朋友说,我还有其他的任务要处理,不能在此处复位。这样的话我们在错误中断回调函数里重新初始化串口好像也行。但是我没有试验。有感兴趣的朋友可以试一试。
最近发现,STM32中断接收完成回调函数在USB转CH340模块带电拔插一次以后会出现异常数据。具体的来说是数据出现一次右移,再出现一次右移,以后每次接受接收到的数据都出现位移。引起这个问题的原因可能是拔掉以后导致STM32串口硬件出错。硬件出错必须要复位才行,那怎么在单片机正常运行的时候怎么判断串口硬件出错呢?
我在网上找了很多的资料,大多数的都出现在处理数据上。不是和我问题很接近的。然后我想在HAL库的串口.c文件中找问题所在。
首先,HAL库的串口库stm32f1xx_hal_uart.c中有明确的表示,注意下方红色字体。
在官方库的介绍中,有详细的讲解,如何使用这些函数,以及出现问题怎么解决,我们只要花点时间去琢磨他还是可以找到问题的关键的。
在stm32f1xx_hal_uart.c文件中的这段话大体意思是;
(+)错误被认为是可恢复的和非阻塞的:传输可以一直进行到结束,但是错误的严重性将由用户评估:这涉及到帧错误、奇偶校验错误或中断模式接收中的噪声错误。然后检索接收到的字符并将其存储在Rx缓冲区中,设置错误代码以允许用户识别错误类型,并执行HAL_UART_ErrorCallback()用户回调。传输在UART上继续进行侧面。如果用户想要中止它,中止服务应该由用户调用。
(+)错误被视为阻塞:传输无法正确完成,是中止了。这个涉及中断模式接收中的超限错误和DMA中的所有错误模式。错误代码被设置为允许用户识别错误类型,并执行HAL_UART_ErrorCallback()用户回调。
出现错误会在HAL_UART_ErrorCallback()函数中处理,这样的话我们在错误回调函数中复位,当检测到硬件错误,就在这里复位。下面添加复位代码:
先关闭中断,再软件复位。可以解决问题。
复位是最简单的方案,当然有的朋友说,我还有其他的任务要处理,不能在此处复位。这样的话我们在错误中断回调函数里重新初始化串口好像也行。但是我没有试验。有感兴趣的朋友可以试一试。
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32
请问
有带
热
拔
插
的电源接口吗?
2019-10-08
1584
如何解决
STM32
串口
接收
数据
卡死的问题?
2021-12-09
1807
STM32
串口
接收
数据
处理方法是什么
2021-12-03
1089
如何知道
STM32
串口
使用DMA方式完成了
数据
的
接收
呢
2021-11-16
2366
STM32
串口
接收
数据
出现漏接的原因?怎么解决?
2021-12-09
1165
STM32
串口
dma发送
数据
部分字节
出错
得原因?如何解决?
2021-12-09
2586
STM32
串口
接收
和发送
数据
的方法是什么
2021-12-06
1447
STM32
串口
发送
数据
与
接收
数据
浅析
2022-02-18
3352
通过
STM32
串口
向PC
串口
软件不停的发送
数据
怎么终止
接收
?
2020-03-20
3055
请问
stm32
串口
如何
接收
完整的
数据
包?
2021-11-25
827
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分