关于STM32的串口溢出中断

发布者:Jinghua6666最新更新时间:2017-11-06 来源: eefocus关键字:STM32  串口  溢出中断 手机看文章 扫描二维码
随时随地手机看文章

之前遇到奇怪的问题:

 

串口中断处理函数中加了溢出中断处理:

if(USART_GetITStatus(USART1,USART_IT_ORE) != RESET)  //产生溢出中断

{

       Utemp = USART_ReceiveData(USART1);           //扔掉接收的数据

       USART_ClearITPendingBit(USART1, USART_IT_ORE);      //清溢出中断标志位

}

参考手册ISR寄存器:


位 3 ORE: 溢出错误

在RXNE=1 的的条件下(也就是上次数据还没有读走),串口接收寄存器又接收好

了一个字节的数据并准备往RDR 寄存器去转移的时候,会由硬件将这个位置1。

由软件向USART_ICR 寄存器的ORECF 位写1,可以清除这个标志。

如果USART_CR1 寄存器中的RXNEIE 位或EIE 位是1,就会产生中断请求。

0: 没有溢出错误

1: 检测到溢出错误



CR1中的RXNEIE已经使能,实际溢出发生时keil中观察ORE的确被置位为1。

然鹅,,,,,,,,

就算ORE置位为1,这个if语句也不通过。。。。。






后来网上找到这句话:

“ORE中断只能使用USART_GetFlagStatus(USART1, USART_FLAG_ORE) 读到(没有使能USART_IT_ERR中断时)”

惊奇的发现还有USART_GetFlagStatus可以用!


USART_GetITStatus(USART1,USART_IT_ORE)这个函数在USART_IT_ERR未使能时并不能正确ORE的正确状态!!!!!!

可以使用USART_GetFlagStatus(USART1,USART_FLAG_ORE)读取,或者初始化时使能USART_IT_ERR。关于USART_IT_ERR在库函数中的定义:

(##) USART_IT_ERR: specifies the interrupt source for Error interrupt   (Frame error, noise error, overrun error)

 

 

补充一下这俩函数的区别(看库函数更直接):

IT主要就是与中断相关的,检查USART中断产生与否,当USART发送完成后会有USART_IT_TC中断,因此可以用来判断,而USART_GetFlagStatus是USART标志位设置与否,其中就有发送完成标志位USART_Flag_TC所以也可用来判断。而最终都是操作ISR寄存器


关键字:STM32  串口  溢出中断 引用地址:关于STM32的串口溢出中断

上一篇:STM32学习——内存管理
下一篇:STM32定时器之定时时间

推荐阅读最新更新时间:2024-03-16 15:43

STM32定时器触发ADC的时序话题
在STM32芯片的ADC应用中,我们往往会利用定时器来触发ADC的启动转换,而能够触发ADC转换的定时器事件往往有多个,有时我们可能很关注这些定时器事件在触发ADC时有哪些时序上的差别。下面以STM32G4芯片为例,来大致聊聊该话题。 这里选择TIM1来触发ADC。我们从手册或CubeMx配置界面不难看到可用来触发ADC的定时器事件可以是定时器TRGO信号和通道CC事件/信号,而TRGO可能来自定时器的使能动作、定时器的更新事件、通道输出比较事件、通道比较输出参考信号以及编码时钟。 这里先重点就Update事件、通道OCx信号和OCxREF信号作为TRGO来触发ADC,看看相应的触发时间点在哪里。 另外,作为ADC的外部触
[单片机]
<font color='red'>STM32</font>定时器触发ADC的时序话题
一种导致STM32重新上电后不工作的原因
【使用环境】 编译器:KEIL5.20 硬件:STM32F429 软件:FreeRTOS 【问题描述】 编译后烧录运行正常,重新上电无反应 【问题分析】 1. 在任务中使用了非系统延时 --非系统延时导致系统阻塞, 详看 2. 外设驱动初始化问题 --有些外设在重新上电后初始化失败,导致错误或是卡在此处 如MPU6050就需要在初始化前加入一定延时,不然再次初始化会失败 如GT811触摸芯片复位准备时长需要50ms 3. 配置为外部中断的GPIO悬空导致 --由于该引脚为悬空状态,且该引脚配置为中断模式,在上电时无法确定该引脚的电平状态,导致初始化瞬间产生一个边沿跳变,而进入中断,此时系统还未初始化完毕,导致中断服务程
[单片机]
STM32微控制器的可靠串口通信技术研究
引言 STM32F107微控制器是意法半导体推出的高性能32位以CortexM3为内核的面向工业控制的处理器。该处理器内部通过一个多层的AHB总线构架相连,其内部集成了丰富的外设,如USART、SPI、ADC等等。另外,STM32F107处理器还提供多达80个通用I/O接口,如此丰富的资源使STM32系列微控制器能够很理想地用于工业控制。本文设计出一种基于STM32F107的可靠串口通信设计方案,可以完成STM32F107处理器和PC机以及其他串口之间的可靠通信 。 1 串口通信的实现 1.1 硬件设计 STM32F107处理器的通用同步异步通信单元(USART)提供 5个独立的异步串行接口,并且都能工作在中断和DMA模式
[单片机]
<font color='red'>STM32</font>微控制器的可靠<font color='red'>串口</font>通信技术研究
STM32学习笔记-RCC
调试芯片:STM32F103CBT6 外部晶振:4MHz 初次学习ST须知: STM芯片的所有片上外设都需要手动设置时钟 概念: 三种不同的时钟源可被用来驱动系统时钟(SYSCLK): HSI振荡器时钟:由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比HSE晶体振荡器短。然而,即使在校准之后它的时钟频率精度仍较差。(所以通常不用与提供SYSCLK) HSE振荡器时钟:高速外部时钟信号,由HSE外部晶体/陶瓷谐振器(较常用)或者HSE用户外部时钟两种方式产生 PLL时钟:时钟源输入,内部PLL可以用来倍频HSI RC的输出时
[单片机]
STM32开发 -- 打开网址测试脚本编写
一、CURL软件 1、CURL简介 CURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。 cURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。 curl还支持SSL认证、HTTP POST、HTTP PUT、FTP上传, HTTP form based upload、proxies、HTTP/2、cookies、用户名+密码认证
[单片机]
<font color='red'>STM32</font>开发 -- 打开网址测试脚本编写
STM32 USB软件移植注意事项 及硬件接线注意
移植了个自定义HID USB程序到STM32开发板上,成功运行,但是最近自己做的板子上(用的是F103C8T6)就不行,死活没有反应。经过几番调试终于发现问题,以下做个小结: 1.一定要保证USB时钟是48MHZ; 使用PLL作系统时钟SCLK;而USB时钟只能是SCLK的1分频或者1.5分频,要得到48MHZ的USB时钟,则SCLK只能为48MHZ或者72MHZ;由于我是用的内部晶振8MHZ,PLL时钟最大是8MHZ Div2 再倍频16 也就是最大只能到64MHZ,所以只能配成48MHZ才能满足要求;如果使用外部晶振,PLL可以直接倍频HSE 而不用Div2; 2.注意中断向量名称; 由于我使用的是Keil 里
[单片机]
stm32 独立看门狗时钟配置
独立看门狗的时钟源为40k,分频因子最大为256 //初始化独立看门狗 5秒钟 //prer:分频数:0~7(只有低3位有效!) //分频因子=4*2^prer.但最大值只能是256! //rlr:重装载寄存器值:低12位有效,最大只能是4096 //时间计算(大概):Tout=40K/((4*2^prer)*rlr)值. void IWDG_Init(u8 prer,u16 rlr) { IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* Register write functions allow dogs*/ IWDG_SetPrescaler(IWDG_Prescaler_25
[单片机]
瑞萨e2studio----串口获取数据通过SPI存储于W25Q128外部flash
1.概述 本篇文章主要介绍如何使用e2studio对瑞萨进行spi配置,同时移植stm32上的W25Q128到瑞萨上,同时通过对该FLASH进行读写操作,验证是否正确。 2.硬件准备 首先需要准备一个开发板,这里我准备的是芯片型号 R7FA2L1AB2DFL 的开发板。 3.新建工程 4.工程模板 5.保存工程路径 6.芯片配置 本文中使用R7FA2L1AB2DFL来进行演示。 7 7.工程模板选择 8.SPI配置 点击Stacks- New Stack- Driver- Connectivity- SPI Driver on r_spi。 9.S
[单片机]
瑞萨e2studio----<font color='red'>串口</font>获取数据通过SPI存储于W25Q128外部flash
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved