打印
[STM32F1]

STM32cube库如何清楚串口ORE标志?

[复制链接]
1201|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaobq|  楼主 | 2020-12-21 15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用STM32F103单片机做测试,使用串口1,接收和发送数据,如果串口收到数据尚未处理,又有新的数据进入,就会引起ORE(Over Run Error),现在使用stm32cubeMX自动生成的代码,使用HAL库,我不知道如何编写代码,判断ORE标识是否置位,如果置位了,清除这个标志。网上查了资料,不使用HAL库的代码有。看了好几遍stm32f1_ha1_uart.h 和 stm32f1_hal_uart.c,也没能编写出基于Hal库的手动清ORE的代码。
请各位大咖指点一下,不胜感谢!

使用特权

评论回复
沙发
yklstudent| | 2020-12-21 16:04 | 只看该作者
HAL应该本身就有溢出处理,你不放心就找到中断自己再加入判断处理,不过感觉多余了,不如查看是否自己的使用存在问题

使用特权

评论回复
板凳
香水城| | 2020-12-26 22:09 | 只看该作者
对于这个溢出标志的处理,不同系列可能略有差异, 对于F1系列来说,就是通过一个软件操作序列达到对其清零的目的。

即先读一下 USART_SR寄存器,接着读下 USART_DR寄存器, 这个代码不难组织吧。

It is cleared by a software sequence (an read to the
USART_SR register followed by a read to the USART_DR register).

使用特权

评论回复
地板
磨砂| | 2021-1-11 11:22 | 只看该作者
读一下里边的数据就可以啊

使用特权

评论回复
5
晓伍| | 2021-1-11 11:23 | 只看该作者
并不需要手动清除

使用特权

评论回复
6
八层楼| | 2021-1-11 11:24 | 只看该作者
读一下寄存器多简单啊 比手动清除还简单呢

使用特权

评论回复
7
观海| | 2021-1-11 11:28 | 只看该作者
与其在这里纠结 不如写一段收取数据的代码

使用特权

评论回复
8
guanjiaer| | 2021-1-11 11:28 | 只看该作者
进入中断后直接写一个中断处理函数啊

使用特权

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

本版积分规则

171

主题

824

帖子

5

粉丝