FreeModbus 移植STM32F030上,HAL_UART_Receive()函数死等在UART_WaitOnFlagUntilTimeout()

移植freemodbus,使用的是CubeMX生成的工程, 在测试过程中,发现接收第一个字节后HAL_UART_Receive(),函数死在UART_WaitOnFlagUntilTimeout中。
不知道是和原因。

2016-4-14_11-12-49.png


求大牛分析指正!
已邀请:

admin

赞同来自:

并不是说死在那就是那的问题,要看你这个函数调用之前的部分
调了大半夜,终于调试通了,把UART_WaitOnFlagUntilTimeout函数里面的if(Status == RESET){......}部分全部注释掉即可解决问题,测试Modbus已经收发成功了

makc

赞同来自:

RXNE 一直是零,超时设置太长。 就会如此,不推荐改官方提供的库文件。

sunmetec

赞同来自: 季风-落地窗

我也遇到过类似情况,是在发送HAL_UART_Transmit函数里有时发到一半就不发送了,发现是超时了,可以把Timeout参数根据实际情况设置稍微大一些,就可以避免这个问题。


¤鱼~

赞同来自:

很奇怪,我有一块板子也是死在这个函数里,但是其他板子就没事。

我也遇到同样的问题,请问楼主是怎么解决的?


ee168

赞同来自:

我也是,有时可以,有时不行,咋解释,将探针放到SCL,SDA上有时又成了

要回复问题请先登录注册