FantasyG 发表于 2019-11-19 13:42:30

STM32F030HAL库串口4接收假死

芯片:STM32F030CCT6
库版本:STM32Cube_FW_F0_V1.11.0

问题:UART4,接收阻塞模式几分钟后无法收到数据。

代码如下:
HAL_UART_Transmit(&SENSOR_UART, SENSOR_TxBuf, sizeof(SENSOR_TxBuf), 50);
if(HAL_UART_Receive(&SENSOR_UART, SENSOR_RxBuf, sizeof(SENSOR_RxBuf), 200) == HAL_OK)
{

}
else
{

}
目前解决方案:
在接收结束后,加上初始化函数。
MX_USART4_UART_Init();
竟然在签到界面看到自己帖子了。。。问题原因的确如板凳所说,标志位没清。如下图所示,ORE标志位未清除。


注:UART1用的是中断方式收发,没有问题。



toofree 发表于 2019-11-20 14:44:47

如果初始化就能正常的话,那就有可能是该清的状态没有清除。

DOUBLE222222 发表于 2019-11-20 09:26:32

条件不足,请完善:lol:lol:lol:lol

tanic 发表于 2019-11-20 17:22:44

不要做全双工操作,具体可见
参见 拙文
http://blog.csdn.net/suxingtian/article/details/86526746

butterflyspring 发表于 2019-11-27 17:26:28

查询的方式比较单纯,对逻辑要求较高,只能说明工作原理,但对实际应用适用能力不强。通常用中断或者DMA方式的比较多,而且HAL库对可能出现的标志位都已经做了判断和处理的:)
页: [1]
查看完整版本: STM32F030HAL库串口4接收假死