打印
[STM32F1]

STM32串口溢出中断问题

[复制链接]
楼主: ccook11
手机看帖
扫描二维码
随时随地手机跟帖
21
在串口中断服务函数中仅读取数据并清除标志,复杂逻辑移至主循环。

使用特权

评论回复
22
wilhelmina2| | 2025-4-5 22:43 | 只看该作者
在串口接收中断服务例程中,检查溢出中断标志位(ORE)是否被置位。

使用特权

评论回复
23
rosemoore| | 2025-4-6 08:07 | 只看该作者
        降低波特率、使用 DMA              

使用特权

评论回复
24
i1mcu| | 2025-4-8 11:02 | 只看该作者
当串口接收中断正在处理中时,如果被一个更高优先级的中断打断,并且这个高优先级中断的执行时间较长,那么在串口接收中断被重新激活之前,新的数据可能已经到达并试图覆盖旧数据,从而触发溢出中断。

使用特权

评论回复
25
jkl21| | 2025-4-8 14:06 | 只看该作者
在中断服务函数中,尽快读取接收寄存器中的数据,以避免溢出中断的发生。

使用特权

评论回复
26
fengm| | 2025-4-8 17:13 | 只看该作者
中断处理函数应尽量简洁,避免耗时操作。

使用特权

评论回复
27
timfordlare| | 2025-4-9 20:08 | 只看该作者
即使发生溢出,也应该尝试读取RDR寄存器中的数据,以避免进一步的溢出。

使用特权

评论回复
28
updownq| | 2025-4-9 23:08 | 只看该作者
使用双缓冲机制,将接收到的数据暂存到 RAM 中,待 Flash 操作完成后再处理。

使用特权

评论回复
29
olivem55arlowe| | 2025-4-10 02:09 | 只看该作者
提升串口中断优先级,避免被低优先级中断打断。

使用特权

评论回复
30
sesefadou| | 2025-4-10 13:18 | 只看该作者
高优先级中断打断​              

使用特权

评论回复
31
pentruman| | 2025-4-10 15:00 | 只看该作者
通过优化代码结构、减少不必要的中断嵌套等方式提高系统的整体稳定性。

使用特权

评论回复
32
robertesth| | 2025-4-10 15:29 | 只看该作者
如果使能了溢出中断,可在中断处理函数中检测。

使用特权

评论回复
33
adolphcocker| | 2025-4-10 16:39 | 只看该作者
使用DMA替代中断​              

使用特权

评论回复
34
modesty3jonah| | 2025-4-10 18:43 | 只看该作者
如果检测到溢出中断,应该清除溢出标志位,并采取适当的错误处理措施。

使用特权

评论回复
35
wilhelmina2| | 2025-4-10 19:14 | 只看该作者
当串口接收的数据非常频繁时,如果没有及时处理接收到的数据,接收寄存器可能会在还没有读走上次数据的情况下再次接收到新的数据,从而导致溢出中断。

使用特权

评论回复
36
chenci2013| | 2025-4-10 20:09 | 只看该作者
通过 ​​优化中断优先级​​、​​简化中断服务函数​​、​​使用DMA​​ 及 ​​监控溢出标志​​,可有效降低溢出风险。

使用特权

评论回复
37
mollylawrence| | 2025-4-10 20:47 | 只看该作者
当更高优先级的中断(如定时器、外部中断)长时间占用CPU,导致串口中断无法及时响应。此时,若连续多个字节到达,接收缓冲区溢出。

使用特权

评论回复
38
uiint| | 2025-4-10 21:06 | 只看该作者
增大缓冲区、提高读取频率              

使用特权

评论回复
39
jonas222| | 2025-4-10 21:38 | 只看该作者
在中断服务函数中,检查溢出标志位(ORE),并在发生溢出时进行相应的处理,例如清除溢出标志位并丢弃当前数据。

使用特权

评论回复
40
loutin| | 2025-4-10 22:09 | 只看该作者
将接收到的数据暂存到 RAM 中,避免因处理延迟导致溢出。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则