beacherblack 发表于 2025-4-5 19:37

在串口中断服务函数中仅读取数据并清除标志,复杂逻辑移至主循环。

wilhelmina2 发表于 2025-4-5 22:43

在串口接收中断服务例程中,检查溢出中断标志位(ORE)是否被置位。

rosemoore 发表于 2025-4-6 08:07

        降低波特率、使用 DMA            

i1mcu 发表于 2025-4-8 11:02

当串口接收中断正在处理中时,如果被一个更高优先级的中断打断,并且这个高优先级中断的执行时间较长,那么在串口接收中断被重新激活之前,新的数据可能已经到达并试图覆盖旧数据,从而触发溢出中断。

jkl21 发表于 2025-4-8 14:06

在中断服务函数中,尽快读取接收寄存器中的数据,以避免溢出中断的发生。

fengm 发表于 2025-4-8 17:13

中断处理函数应尽量简洁,避免耗时操作。

timfordlare 发表于 2025-4-9 20:08

即使发生溢出,也应该尝试读取RDR寄存器中的数据,以避免进一步的溢出。

updownq 发表于 2025-4-9 23:08

使用双缓冲机制,将接收到的数据暂存到 RAM 中,待 Flash 操作完成后再处理。

olivem55arlowe 发表于 2025-4-10 02:09

提升串口中断优先级,避免被低优先级中断打断。

sesefadou 发表于 2025-4-10 13:18

高优先级中断打断​            

pentruman 发表于 2025-4-10 15:00

通过优化代码结构、减少不必要的中断嵌套等方式提高系统的整体稳定性。

robertesth 发表于 2025-4-10 15:29

如果使能了溢出中断,可在中断处理函数中检测。

adolphcocker 发表于 2025-4-10 16:39

使用DMA替代中断​            

modesty3jonah 发表于 2025-4-10 18:43

如果检测到溢出中断,应该清除溢出标志位,并采取适当的错误处理措施。

wilhelmina2 发表于 2025-4-10 19:14

当串口接收的数据非常频繁时,如果没有及时处理接收到的数据,接收寄存器可能会在还没有读走上次数据的情况下再次接收到新的数据,从而导致溢出中断。

chenci2013 发表于 2025-4-10 20:09

通过 ​​优化中断优先级​​、​​简化中断服务函数​​、​​使用DMA​​ 及 ​​监控溢出标志​​,可有效降低溢出风险。

mollylawrence 发表于 2025-4-10 20:47

当更高优先级的中断(如定时器、外部中断)长时间占用CPU,导致串口中断无法及时响应。此时,若连续多个字节到达,接收缓冲区溢出。

uiint 发表于 2025-4-10 21:06

增大缓冲区、提高读取频率            

jonas222 发表于 2025-4-10 21:38

在中断服务函数中,检查溢出标志位(ORE),并在发生溢出时进行相应的处理,例如清除溢出标志位并丢弃当前数据。

loutin 发表于 2025-4-10 22:09

将接收到的数据暂存到 RAM 中,避免因处理延迟导致溢出。
页: 1 [2] 3 4
查看完整版本: STM32串口溢出中断问题