STM32l072cz单片机串口USART发生错误接收不到数据

2019-07-14 14:25发布

这两天在做LoRa透传模块,发现USART2用起来有问题,不清楚是我哪里没配置好:
现象:
      我接收的数据包最大57个字节,所以我用HAL_UART_Receive(&Sensor_UartHandle,receive_tab,64,50);去固定收64字节,50ms的timeout时间,但每次都是接收正确几包数据后,就出错了,一旦USART发生错误了,就再也接收不到数据了:
从图中可以看出:
前面的3包数据没问题,第四包就没收完整了,到了第5包就只收了一个字节,后面再也收不到数据了,
我也在时时读此USART的错误状态:
uart_status = HAL_UART_GetError(&Sensor_UartHandle);
但是从打印来看,根本就没有错误发送,就是*pData++ = (uint8_t)(huart->Instance->RDR & (uint8_t)uhMask);读不到数据。
我自然的想到修改timeout时间,从50改到500,情况依旧,在网上看到有人不停的去初始化USART,我就在每次接收一次之后就去init下此USART,我以30ms一包的频率往芯片里发也没问题了。
不知道各位遇到这样的问题没,究竟是什么原因导致串口收不到数据呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
yijun362
1楼-- · 2019-07-14 22:05
你可以看一下HAL_UART_Receive的返回值,这或许能告诉你一些信息
60user142
2楼-- · 2019-07-15 03:11
我从50ms到500ms都试过,现象是一样的。
60user142
3楼-- · 2019-07-15 04:50
yijun362 发表于 2019-1-23 07:37
你可以看一下HAL_UART_Receive的返回值,这或许能告诉你一些信息

这个没用,永远是timeout.

一周热门 更多>