你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

利用中断的方式接收串口数据会发生溢出错误的问题

[复制链接]
Jeasonnnn 提问时间:2018-5-25 11:13 /
由于手上项目用的STM32L072的芯片,所有只能使用Cube库来写代码,利用软件配置好串口的各项参数后,使用串口中断的方式收发数据,发数据是正常的,但是在接收数据的时候总是会出现溢出错误,找遍了网上的解决办法也没找到问题,希望大神指导一下。

我在main一开始就只配置了时钟和串口,然后HAL_UART_Receive_IT(&huart1,uart1_rx_buf,1)。在回调函数中也同样开启一个字节的接收中断,而每次只能收到一次中断,由于ORE错误,所有进不去回调函数,因此收不到数据,不知道什么原因引起的,还请论坛里的大神指导一番。

下面贴出代码

main

main

push使用的是串口1,发送数据没有问题

串口配置.png
这是我出口的初始化函数

中断入口.png
中断入口,每次从这里跳进去的时候,串口的RXNE标志就被清了

溢出错误.png
这是进不去回调的溢出错误




收藏 评论10 发布时间:2018-5-25 11:13

举报

10个回答
huangxuejia-292 回答时间:2018-5-25 14:11:44
1 中断程序(不仅仅是串口)要响应所有中断。不要只响应接收中断,其他错误中断也要处理,否则会频繁进入中断造成假死。
2 STM32串口只有一个硬件BUF,个人认为是硬伤。115200波特率的情况下,大家算下一个字节是多少us?
只要串口中断被卡主住这么长时间不处理,就造成溢出。
3 把中断优先级提高、用DMA、人工优化。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

xiajintaord 回答时间:2018-5-25 11:52:05
按你的说法 “中断入口,每次从这里跳进去的时候,串口的RXNE标志就被清了”
应该是下图中第二种情况了 RXNE = 0
ORE.png

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

andeyqi 回答时间:2018-5-25 12:56:53
串口ore.PNG

可以参照上面分方式清除ORE标志,读取一次串口的DR寄存器,ORE flag就会被清除。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

andeyqi 回答时间:2018-5-25 13:13:41
  楼主可以参考这个文档,应该对你有帮助。

USART中断方式接收无响应问题的一种情况及其处理方法 (1).pdf

下载

336.94 KB, 下载次数: 170, 下载积分: ST金币 -1

Jeasonnnn 回答时间:2018-5-25 15:47:26
andeyqi 发表于 2018-5-25 12:56
可以参照上面分方式清除ORE标志,读取一次串口的DR寄存器,ORE flag就会被清除。
...

但是在USART1_IRQHandler中调用串口HAL_UART_IRQHandler的时候RXNE会自动被清除,也会造成进不去回调。       我发现在USART1_IRQHandler中不管执行什么操作RXNE都会被自动清除,都还没有去读RDR的内容它就自己清零了,到底是为什么呢
Jeasonnnn 回答时间:2018-5-25 16:17:08
xiajintaord 发表于 2018-5-25 11:52
按你的说法 “中断入口,每次从这里跳进去的时候,串口的RXNE标志就被清了”
应该是下图中第二种情况了 RX ...

但是都还没去读RDR寄存器它就自动被清了,导致我后面接收不了数据
xiajintaord 回答时间:2018-5-25 16:55:48
Jeasonnnn 发表于 2018-5-25 16:17
但是都还没去读RDR寄存器它就自动被清了,导致我后面接收不了数据

两种方法:
1、把中断优先级提高;
2、用 DMA(推荐)
andeyqi 回答时间:2018-5-25 17:17:22
Jeasonnnn 发表于 2018-5-25 15:47
但是在USART1_IRQHandler中调用串口HAL_UART_IRQHandler的时候RXNE会自动被清除,也会造成进不去回调。   ...

根据描述在应该是确定产生了ORE事件,开启了ORE中断了吗?进入中断时RXNE是为1的,之后变变为0,是这个现象吗?代码中是否开启了别的中断,响应时间比较长的?
feixiang20 回答时间:2018-5-26 00:36:09
提高中断级后看看数组是不是溢出,看看中断代码有没有问题

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版