[STM32L0] UART长时间通信后缓冲区状态异常,像是累积了隐性错误

[复制链接]
548|18
周半梅 发表于 2025-11-17 07:14 | 显示全部楼层 |阅读模式
这段时间跑串口数据比较密集,开始几个小时都正常,但到了后面接收缓冲区偶尔会卡住,好像状态机在半途中停住。我尝试过清标志位、软复位、调波特率,现象有缓和但不彻底,让我怀疑是某个细节被我忽略了。
Clyde011 发表于 2025-11-17 07:20 | 显示全部楼层
长时间通信很容易暴露边界 bug,你再多跑几组不同频率试试。
公羊子丹 发表于 2025-11-17 07:21 | 显示全部楼层
你看看有没有出现溢出错误,我以前就是溢出后状态一直怪怪的。
 楼主| 周半梅 发表于 2025-11-17 07:22 | 显示全部楼层
状态机停住一般和时序相关,我会建议再抓下波形确认一下。
帛灿灿 发表于 2025-11-17 07:23 | 显示全部楼层
有没有 DMA?如果用 DMA 的话,有时候会漏掉某些边界情况。
童雨竹 发表于 2025-11-17 07:24 | 显示全部楼层
我之前被线材质量坑过,时间长了 CRC 老是对不上。
万图 发表于 2025-11-17 07:25 | 显示全部楼层
这类现象加个冗余校验挺能帮助定位问题的。
Wordsworth 发表于 2025-11-17 07:26 | 显示全部楼层
你试试间隔性重置接收缓存,看是否会改善。
Bblythe 发表于 2025-11-17 07:27 | 显示全部楼层
也有可能是你主循环处理不过来,导致缓存长期没清干净。
Pulitzer 发表于 2025-11-17 07:28 | 显示全部楼层
有没有可能是外部设备发包间隔不稳定,把 MCU 弄乱了。
Uriah 发表于 2025-11-17 07:30 | 显示全部楼层
之前我通过缩短中断响应时间解决过类似的小概率卡死。
flycamelaaa 发表于 2025-11-18 16:55 | 显示全部楼层
可能是隐性错误标志未完全清除
flycamelaaa 发表于 2025-11-18 16:55 | 显示全部楼层
强制读取所有状态标志
jcky001 发表于 2025-11-18 17:55 | 显示全部楼层
启用溢出保护
onlycook 发表于 2025-11-18 18:56 | 显示全部楼层
若在中断服务例程中未及时清除接收标志,或处理时间过长,可能导致后续中断丢失或延迟。
powerantone 发表于 2025-11-18 19:57 | 显示全部楼层
优先级冲突?其他高优先级中断可能阻塞 UART 中断,导致数据接收不连续。
probedog 发表于 2025-11-18 20:57 | 显示全部楼层
UART中断优先级要高于非关键任务,但低于实时性要求更高的中断
solty 发表于 2025-11-18 21:58 | 显示全部楼层
锁定 UART 时钟,禁用未使用的外设复用
spicy 发表于 2025-11-18 22:59 | 显示全部楼层
切换至 DMA 接收模式,减少 CPU 负载并提高数据吞吐稳定性。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

198

主题

6548

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部
0