GD32串口接收溢出

[复制链接]
2919|8
 楼主| yippeeeeeee 发表于 2021-3-5 11:10 | 显示全部楼层 |阅读模式
本帖最后由 yippeeeeeee 于 2021-3-5 11:10 编辑

最近移植项目使用GD32F130R8T6这款芯片,然后发现移植完成后出口接收一直有接收溢出的问题,虽然做了处理,但是数据丢的太多了;另一个现象是,当代码的数量在35k以内的时候,串口完全没问题,但是代码量一增加,就会丢数据;刚开始怀疑是RAM不够导致的溢出,但RAM的空间还是富余的,以下是串口的配置和中断处理

串口配置

串口配置

中断处理

中断处理
lanxiao888 发表于 2021-3-19 18:12 | 显示全部楼层
同上,我也是这样,我用的是GD32F150C8T6,求解!!!!!!!!!
lvben5d 发表于 2021-3-20 13:27 | 显示全部楼层
如果是 进入串口接收溢出中断,只能说明 你其他高于串口优先中断执行的代码时间  大于2个串口字节接收时间了!  解决办法一,提高串口接收中断 抢占优先级,前提不影响其他优先级中断处理完成要做的事情 前提下。
XF453 发表于 2021-5-19 18:42 | 显示全部楼层
我也遇到了一样的问题,有小伙伴解决这个问题了嘛,求教
ouyanglei92 发表于 2021-5-20 09:06 | 显示全部楼层
可以试试我写的串口收发框架,目前测试比较稳定,我已经在好几个项目中使用了
基于DMA空闲中断接收数据和DMA发送数据
https://gitee.com/awesomeoy/gd32-f303x_serials
XF453 发表于 2021-5-21 16:53 | 显示全部楼层
这个问题找到原因了,是因为他flash后32k,取数据有延迟,一旦代码超过一定量,串口部分的代码会被分到后32k的位置,就导致了高波特率中断接收数据时,会出现数据丢失,低波特率接收可能没有问题,把代码放到前面32K的flash,就可以了
AProgrammer 发表于 2024-8-1 15:06 | 显示全部楼层
XF453 发表于 2021-5-21 16:53
这个问题找到原因了,是因为他flash后32k,取数据有延迟,一旦代码超过一定量,串口部分的代码会被分到后32 ...

怎么把代码放到前面32K的flash?
qn7a12 发表于 2024-8-31 11:27 | 显示全部楼层
确保你的串口配置正确,包括波特率、数据位、停止位、奇偶校验等设置。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

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