打印

GD32串口接收溢出

[复制链接]
2337|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 yippeeeeeee 于 2021-3-5 11:10 编辑

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

1614913527(1).jpg (39.73 KB )

中断处理

中断处理

1614913432(1).jpg (89.36 KB )

串口配置

串口配置

使用特权

评论回复
沙发
lanxiao888| | 2021-3-19 18:12 | 只看该作者
同上,我也是这样,我用的是GD32F150C8T6,求解!!!!!!!!!

使用特权

评论回复
板凳
lvben5d| | 2021-3-20 13:27 | 只看该作者
如果是 进入串口接收溢出中断,只能说明 你其他高于串口优先中断执行的代码时间  大于2个串口字节接收时间了!  解决办法一,提高串口接收中断 抢占优先级,前提不影响其他优先级中断处理完成要做的事情 前提下。

使用特权

评论回复
地板
XF453| | 2021-5-19 18:42 | 只看该作者
我也遇到了一样的问题,有小伙伴解决这个问题了嘛,求教

使用特权

评论回复
5
ouyanglei92| | 2021-5-20 09:06 | 只看该作者
可以试试我写的串口收发框架,目前测试比较稳定,我已经在好几个项目中使用了
基于DMA空闲中断接收数据和DMA发送数据
https://gitee.com/awesomeoy/gd32-f303x_serials

使用特权

评论回复
6
XF453| | 2021-5-21 16:53 | 只看该作者
这个问题找到原因了,是因为他flash后32k,取数据有延迟,一旦代码超过一定量,串口部分的代码会被分到后32k的位置,就导致了高波特率中断接收数据时,会出现数据丢失,低波特率接收可能没有问题,把代码放到前面32K的flash,就可以了

使用特权

评论回复
7
AProgrammer| | 2024-8-1 15:06 | 只看该作者
XF453 发表于 2021-5-21 16:53
这个问题找到原因了,是因为他flash后32k,取数据有延迟,一旦代码超过一定量,串口部分的代码会被分到后32 ...

怎么把代码放到前面32K的flash?

使用特权

评论回复
8
qn7a12| | 2024-8-31 11:27 | 只看该作者
确保你的串口配置正确,包括波特率、数据位、停止位、奇偶校验等设置。

使用特权

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

本版积分规则

2

主题

4

帖子

0

粉丝