打印
[研电赛技术支持]

浅谈GD32关中断时间对串口接收的影响

[复制链接]
1398|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Zuocidian|  楼主 | 2025-4-12 11:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一般串口接收到2个字节就会溢出错误。编写代码时需注意关中断时间,不能过长,如果大于1~2字节串口接收的时间,会导致串口接收溢出,该条帧命令就会接收不全。
解决方法:
1)设法缩短最长关中断时间,满足关断时间小于1个字节串口接收时间
2)串口波特率改低
3)串口使用FIFO功能,这样接收多个字节也不会溢出错误,直到FIFO满才会溢出错误



————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/lljss1980/article/details/139985654

使用特权

评论回复
沙发
磨砂| | 2025-5-8 09:25 | 只看该作者
若关中断时间超过串口接收1~2字节的时间,会导致串口接收缓冲区溢出

使用特权

评论回复
板凳
晓伍| | 2025-5-8 11:35 | 只看该作者
串口数据接收是连续的,中断关闭期间CPU无法响应串口接收中断,导致数据堆积在缓冲区中无法及时处理

使用特权

评论回复
地板
八层楼| | 2025-5-8 14:06 | 只看该作者
波特率越高,每个字节的接收时间越短。若关中断时间超过此时长,可能遗漏数据

使用特权

评论回复
5
观海| | 2025-5-8 16:33 | 只看该作者
在高波特率下,需更严格地控制关中断时间,或通过降低波特率延长单字节接收时间窗口

使用特权

评论回复
6
guanjiaer| | 2025-5-8 19:11 | 只看该作者
每接收一个字节触发一次中断,要求关中断时间必须小于单字节接收时间,否则会丢失数据

使用特权

评论回复
7
heimaojingzhang| | 2025-5-8 21:41 | 只看该作者
空闲中断(IDLE)+ DMA模式:数据接收由DMA完成,仅在一帧数据接收完成后触发中断。此时关中断时间需小于一整帧数据的接收时间,但DMA可减少CPU负担,降低漏数风险

使用特权

评论回复
8
keaibukelian| | 2025-5-9 09:18 | 只看该作者
超时中断(RT)模式可自定义超时时间,相比空闲中断更灵活,但对关中断时间的要求类似

使用特权

评论回复
9
paotangsan| | 2025-5-9 11:42 | 只看该作者
通过启用串口FIFO功能或结合DMA接收,可缓存更多数据,降低对中断响应时间的敏感度

使用特权

评论回复
10
renzheshengui| | 2025-5-9 14:13 | 只看该作者
在GD32F4系列芯片中,若使用USART0接收数据,且关中断时间超过1~2字节的接收周期,可能导致数据溢出

使用特权

评论回复
11
wowu| | 2025-5-9 16:42 | 只看该作者
可通过缩短临界区代码、优化任务优先级或分频降低波特率来规避问题

使用特权

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

本版积分规则

46

主题

120

帖子

0

粉丝