[STM32F1] STM32串口溢出中断问题

[复制链接]
3717|68
jonas222 发表于 2025-4-10 21:38 | 显示全部楼层
在中断服务函数中,检查溢出标志位(ORE),并在发生溢出时进行相应的处理,例如清除溢出标志位并丢弃当前数据。
loutin 发表于 2025-4-10 22:09 | 显示全部楼层
将接收到的数据暂存到 RAM 中,避免因处理延迟导致溢出。
linfelix 发表于 2025-4-10 22:52 | 显示全部楼层
为串口中断分配较高的优先级,避免被其他中断长期抢占。
AIsignel 发表于 2025-4-11 22:34 | 显示全部楼层
DMA+空闲中断高效,减轻CPU压力,保证串口通信稳定。
IntelCore 发表于 2025-4-12 18:03 | 显示全部楼层
简化代码,减少中断层级,让单片机运行更稳。
kkzz 发表于 2025-4-12 20:11 | 显示全部楼层
使用环形缓冲区              
earlmax 发表于 2025-4-12 20:40 | 显示全部楼层
负载选择合理的波特率(如115200以下),避免数据过载。
i1mcu 发表于 2025-4-12 22:06 | 显示全部楼层
增加数据读取频率,避免缓冲区溢出。
zephyr9 发表于 2025-4-13 09:57 | 显示全部楼层
串口中断未被及时处理可能导致数据丢失。确保中断服务程序迅速响应并处理数据。
sesefadou 发表于 2025-4-13 10:47 | 显示全部楼层
串口中断被阻塞,数据丢失风险增加。
timfordlare 发表于 2025-4-13 11:39 | 显示全部楼层
擦写Flash是一个相对耗时的操作,如果在这个过程中串口接收到了新数据,由于CPU忙于处理Flash擦写,无法及时响应串口中断,也可能导致溢出中断。
elsaflower 发表于 2025-4-13 12:10 | 显示全部楼层
可以使用FIFO缓冲区来暂存接收到的数据,以防止数据丢失。
sesefadou 发表于 2025-4-13 13:07 | 显示全部楼层
溢出中断的发生会导致数据丢失,如果不进行适当的处理,可能会导致程序死机或其他不可预测的行为
sdCAD 发表于 2025-4-13 14:00 | 显示全部楼层
如果串口接收中断被更高优先级的中断打断,且打断时间较长,那么在这段时间内到达的新数据可能会导致溢出中断。同样,如果单片机正在执行耗时的操作,如擦写内部Flash,这也可能导致串口中断无法及时响应,从而引发溢出中断。
hudi008 发表于 2025-4-13 14:32 | 显示全部楼层
在擦写单片机内部Flash时,操作时间较长,可能导致串口中断无法及时响应。如果在这段时间内串口接收到新的数据,而上次接收到的数据还没有被读走,也会产生溢出中断。
phoenixwhite 发表于 2025-4-13 14:52 | 显示全部楼层
避免在串口通信期间执行 Flash 擦写。
modesty3jonah 发表于 2025-4-13 15:18 | 显示全部楼层
优化中断处理逻辑,缩短中断执行时间。
jonas222 发表于 2025-4-13 15:52 | 显示全部楼层
擦写 Flash 操作耗时较长(约 10~50 ms),期间无法响应串口中断。
iyoum 发表于 2025-4-13 16:22 | 显示全部楼层
提升串口中断优先级,避免被低优先级中断打断。
chenci2013 发表于 2025-4-13 16:33 | 显示全部楼层
使用 DMA 接收数据,减少 CPU 干预。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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