OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5934|回复: 13

使用串口接收数据一直出现溢出中断,导致固定顺序的数据接收之后不准确

[复制链接]

4

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-5-8
在线时间
7 小时
发表于 2017-5-21 11:03:18 | 显示全部楼层 |阅读模式
1金钱
我要接收传感器处理好的数据   数据时按着顺序发送的   不知道为什么每次接收中断的产生都伴随着溢出中断的出现   我调试发现USART->SR  =0XF8,意味着RXNE和ORE都置1了,
    我最开始认为  我的中断程序量太庞大   接着我把  数据处理放到我的MAIN中   中断程序里就几条语句   还是发现有溢出  而且每次都是出现的溢出中断

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-5-8
在线时间
7 小时
 楼主| 发表于 2017-5-21 11:04:21 | 显示全部楼层
发问题的时候不知道怎么发不了图   我这里附上我的中断程序 (之前写的比较庞大的) QQ截图20170521105633.png
回复

使用道具 举报

0

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
184
金钱
184
注册时间
2014-12-22
在线时间
39 小时
发表于 2017-5-21 15:32:28 | 显示全部楼层
缓存加大也不行吗
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-5-21 18:37:26 | 显示全部楼层
中断服务函数太长了吧?
回复

使用道具 举报

4

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-5-8
在线时间
7 小时
 楼主| 发表于 2017-5-22 09:31:11 | 显示全部楼层
QQ截图20170522092249.png 我把数据处理放到我的主函数里之后还是不行   而且我的中断里只进行了判断    应该运行时间不长,,我硬件仿真得到的结果是  中断溢出位总是置1   奇怪的是我调试进入清除溢出中断语句下一步   居然没清除掉   所以每次接受数据都有溢出中断产生   实在是想不透
回复

使用道具 举报

4

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-5-8
在线时间
7 小时
 楼主| 发表于 2017-5-22 09:32:13 | 显示全部楼层
希望原子哥能  帮我解决下   卡在这个问题上几天了
回复

使用道具 举报

4

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-5-8
在线时间
7 小时
 楼主| 发表于 2017-5-22 09:34:28 | 显示全部楼层
正点原子 发表于 2017-5-21 18:37
中断服务函数太长了吧?

QQ截图20170522092249.png 我把数据处理放到我的主函数里之后还是不行   而且我的中断里只进行了判断    应该运行时间不长,,我硬件仿真得到的结果是  中断溢出位总是置1   奇怪的是我调试进入清除溢出中断语句下一步   居然没清除掉   所以每次接受数据都有溢出中断产生   实在是想不透
回复

使用道具 举报

4

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-5-8
在线时间
7 小时
 楼主| 发表于 2017-5-22 09:35:01 | 显示全部楼层
yklstudent 发表于 2017-5-21 20:54
中断中使用printf,楼主真是人才

我不用 也是不行啊  一直有中断溢出
回复

使用道具 举报

4

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-5-8
在线时间
7 小时
 楼主| 发表于 2017-5-22 09:37:31 | 显示全部楼层
so 发表于 2017-5-21 15:32
缓存加大也不行吗

你的意思是指  我定义的接受数据的数组吗??还是说硬件里的配置
回复

使用道具 举报

1

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2017-5-10
在线时间
55 小时
发表于 2017-5-22 12:53:38 来自手机 | 显示全部楼层
最好是定义一个全局数组和一个标志变量,中断里面只负责把串口接受到的数据存放到数组里,存满了通过标志位通知主程序进行打印处理。再就是要是调试的时候要是外设还在不停的发送的话估计也会持续溢出
回复

使用道具 举报

4

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-5-8
在线时间
7 小时
 楼主| 发表于 2017-5-22 17:09:09 | 显示全部楼层
cromarti 发表于 2017-5-22 12:53
最好是定义一个全局数组和一个标志变量,中断里面只负责把串口接受到的数据存放到数组里,存满了通过标志位 ...

外设一直处于不挺的发送,波特率为9600, 一般9600的波特率 发送,我中断程序只要不是特别庞大,应该都没有什么问题 啊,,,现在情况是我接受的数据从第一个字节开始就出现溢出
回复

使用道具 举报

4

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-5-8
在线时间
7 小时
 楼主| 发表于 2017-5-22 17:10:23 | 显示全部楼层
fanfan 发表于 2017-5-22 17:09
外设一直处于不挺的发送,波特率为9600, 一般9600的波特率 发送,我中断程序只要不是特别庞大,应该都没 ...

你的意思是让我把接收到的数据放到主函数里面去处理,我这样做了,还是溢出
回复

使用道具 举报

1

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2017-5-10
在线时间
55 小时
发表于 2017-5-22 22:14:42 来自手机 | 显示全部楼层
fanfan 发表于 2017-5-22 17:09
外设一直处于不挺的发送,波特率为9600, 一般9600的波特率 发送,我中断程序只要不是特别庞大,应该都没 ...

我是说调试的时候溢出的可能原因是因为外设不停的发送但是你接受到第一个字节的时候已经发送了很多字节。可以在调试模式下用串口调试助手手动一个个字节发送再在中断里面看看是不是还是溢出
回复

使用道具 举报

1

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2017-5-10
在线时间
55 小时
发表于 2017-5-22 22:16:07 来自手机 | 显示全部楼层
fanfan 发表于 2017-5-22 17:10
你的意思是让我把接收到的数据放到主函数里面去处理,我这样做了,还是溢出

把改过的程序发上来看看,不庞大但是特别占时间也可能出这种问题的……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-21 00:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表