[STM32F1] 串口中断偶尔丢字节,怀疑环形缓冲区逻辑有问题

[复制链接]
1558|52
海滨消消 发表于 2025-11-13 22:46 | 显示全部楼层
用DMA+串口空闲中断接收,减少中断频率。
豌豆爹 发表于 2025-11-13 22:47 | 显示全部楼层
建议提供具体代码片段
ljxh401 发表于 2025-11-14 00:55 | 显示全部楼层
定义数组长度256,然后一个字节变量作为位置计数,就***不会错了
buf[cnt++]=USART1->DR
sdlls 发表于 2025-11-14 20:14 | 显示全部楼层
串口线接触不良、电平匹配错误、电源噪声干扰,导致接收数据出现毛刺,串口硬件误判为无效数据,未触发接收中断
linfelix 发表于 2025-11-15 16:07 | 显示全部楼层
若读写指针的修改未通过临界区保护,多线程访问时可能出现指针错乱
phoenixwhite 发表于 2025-11-15 16:39 | 显示全部楼层
读写指针未用取模运算,导致越界访问或死锁
vivilyly 发表于 2025-11-15 16:52 | 显示全部楼层
缓冲区大小不足或主程序读取不及时
pmp 发表于 2025-11-15 20:58 | 显示全部楼层
替代单字节中断,通过 DMA 自动搬运数据,空闲中断触发批量处理
vivilyly 发表于 2025-11-17 12:39 | 显示全部楼层
首要怀疑对象,尤其是你自己实现的环形缓冲区。
alvpeg 发表于 2025-11-17 13:23 | 显示全部楼层
排查串口中断配置与硬件问题              
mnynt121 发表于 2025-11-17 14:37 | 显示全部楼层
在写入前检查缓冲区剩余空间,若满则丢弃旧数据或暂停接收。
lzmm 发表于 2025-11-17 18:00 | 显示全部楼层
在主循环中定期检测溢出标志并复位
earlmax 发表于 2025-11-17 18:52 | 显示全部楼层
缓冲区“满”时未做保护,直接覆盖
hudi008 发表于 2025-11-17 20:43 | 显示全部楼层
串口接收中断优先级配置不当              
houjiakai 发表于 2025-11-17 21:48 | 显示全部楼层
写指针和读指针的更新顺序、逻辑出错,比如先更新指针再写入数据,或者判断空/满条件有误
10299823 发表于 2025-11-17 22:41 | 显示全部楼层
根据数据速率和突发长度,合理增大缓冲区
jackcat 发表于 2025-11-18 19:49 | 显示全部楼层
ISR中执行耗时操作会延长中断响应时间,增加丢字节风险。
louliana 发表于 2025-11-18 21:16 | 显示全部楼层
若缓冲区设计过小,高频数据或突发数据易导致溢出。
benjaminka 发表于 2025-11-18 22:02 | 显示全部楼层
当串口接收数据速率超过主循环处理速度时,缓冲区可能被填满,后续数据被丢弃。
elsaflower 发表于 2025-11-18 22:37 | 显示全部楼层
串口中断优先级低于其他高频率中断,导致响应延迟
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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