[研电赛技术支持] 浅谈GD32关中断时间对串口接收的影响

[复制链接]
 楼主| 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 | 显示全部楼层
波特率越高,每个字节的接收时间越短。若关中断时间超过此时长,可能遗漏数据
观海 发表于 2025-5-8 16:33 | 显示全部楼层
在高波特率下,需更严格地控制关中断时间,或通过降低波特率延长单字节接收时间窗口
guanjiaer 发表于 2025-5-8 19:11 | 显示全部楼层
每接收一个字节触发一次中断,要求关中断时间必须小于单字节接收时间,否则会丢失数据
heimaojingzhang 发表于 2025-5-8 21:41 | 显示全部楼层
空闲中断(IDLE)+ DMA模式:数据接收由DMA完成,仅在一帧数据接收完成后触发中断。此时关中断时间需小于一整帧数据的接收时间,但DMA可减少CPU负担,降低漏数风险
keaibukelian 发表于 2025-5-9 09:18 | 显示全部楼层
超时中断(RT)模式可自定义超时时间,相比空闲中断更灵活,但对关中断时间的要求类似
paotangsan 发表于 2025-5-9 11:42 | 显示全部楼层
通过启用串口FIFO功能或结合DMA接收,可缓存更多数据,降低对中断响应时间的敏感度
renzheshengui 发表于 2025-5-9 14:13 | 显示全部楼层
在GD32F4系列芯片中,若使用USART0接收数据,且关中断时间超过1~2字节的接收周期,可能导致数据溢出
wowu 发表于 2025-5-9 16:42 | 显示全部楼层
可通过缩短临界区代码、优化任务优先级或分频降低波特率来规避问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

213

帖子

0

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

70

主题

213

帖子

0

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