STM32/STM8技术论坛
直播中

偶偶你

4年用户 3经验值
擅长:嵌入式技术
私信 关注
[问答]

LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原

请教大神,该往哪方面排查,溢出我通过打断点方式触发,后验证可以清除标志,恢复接收![Snipaste_2024-10-29_17-15-12.png]Snipaste_2024-10-29_17-15-12.pngSnipaste_2024-10-29_17-16-01.png

回帖(1)

郑成枝

2024-10-30 17:04:05
从您的描述来看,您在使用LL库F030进行串口通信时遇到了一个串口停止运行的问题。这个问题可能与硬件、软件或配置有关。以下是一些建议,帮助您排查和解决这个问题:

1. 硬件检查:
   - 检查串口1的硬件连接是否正常,包括数据线、电源线和地线。
   - 检查串口1的设备是否正常工作,可以尝试更换设备进行测试。

2. 软件检查:
   - 检查串口1的配置是否正确,包括波特率、数据位、停止位和校验位等。
   - 检查串口1的中断配置是否正确,包括中断优先级和中断服务程序。

3. 溢出处理:
   - 您提到已经通过打断点方式触发溢出处理,可以尝试在中断服务程序中添加溢出处理代码,以确保在溢出发生时能够正确清除标志并恢复接收。

4. 软件优化:
   - 检查串口1的接收缓冲区是否足够大,以防止溢出。
   - 检查串口1的发送缓冲区是否足够大,以防止发送数据时阻塞。
   - 检查串口1的接收和发送函数是否正确处理数据,包括数据校验和错误处理。

5. 串口485问题:
   - 检查串口485的设备是否正常工作,可以尝试更换设备进行测试。
   - 检查串口485的配置是否正确,包括波特率、数据位、停止位和校验位等。
   - 检查串口485的中断配置是否正确,包括中断优先级和中断服务程序。

6. 系统资源:
   - 检查系统资源是否足够,包括CPU占用率、内存使用率等。
   - 检查是否有其他任务占用了过多的系统资源,导致串口1无法正常工作。

7. 调试和日志:
   - 在串口1的接收和发送函数中添加调试信息,以便于排查问题。
   - 在中断服务程序中添加日志信息,以便于排查溢出处理是否正确。

通过以上步骤,您应该能够找到导致串口1停止运行的原因,并采取相应的措施进行解决。希望这些建议对您有所帮助!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分