stm32F030C8单片机串口利用USART_IT_IDLE接收完整的一帧

发布者:DelightWish123最新更新时间:2018-12-10 来源: eefocus关键字:stm32F030C8  单片机  串口  一帧 手机看文章 扫描二维码
随时随地手机看文章

USART_IT_RXNE寄存器是在没接收到一个字节时产生中断,而USART_IT_IDLE寄存器是在接收到完整一帧后产生中断,即接收完一个字节在一个字节的时间内再无接收的话就会产生中断


下面是源码:


void USART1_Config(void)

GPIO_InitTypeDef GPIO_InitStructure;  

USART_InitTypeDef USART_InitStructure; //定义串口初始化结构体

NVIC_InitTypeDef NVIC_InitStruct;

  

RCC_AHBPeriphClockCmd(USART1_GPIO_RCC, ENABLE); //使能GPIOA的时钟

RCC_APB2PeriphClockCmd(USART1_RCC, ENABLE);//使能USART的时钟

GPIO_PinAFConfig(USART1_GPIO_PORT, USART1_TX_GPIO_PinSource, GPIO_AF_1);//配置PA9成第二功能引脚  TX

GPIO_PinAFConfig(USART1_GPIO_PORT, USART1_RX_GPIO_PinSource, GPIO_AF_1);//配置PA10成第二功能引脚 RX 


/*USART1_TX ->PA9 USART1_RX ->PA10*/   

GPIO_InitStructure.GPIO_Pin = USART1_TX|USART1_RX;   //选中串口默认输出管脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //定义输出最大速率

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//定义管脚9的模式

GPIO_Init(USART1_GPIO_PORT, &GPIO_InitStructure); //调用函数,把结构体参数输入进行初始化    


/*串口通讯参数设置*/

USART_InitStructure.USART_BaudRate = UART1_BaudRate;//9600; //波特率

USART_InitStructure.USART_WordLength = USART_WordLength_8b; //数据位8位

USART_InitStructure.USART_StopBits = USART_StopBits_1;  //停止位1位

USART_InitStructure.USART_Parity = USART_Parity_No;   //校验位 无

USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无流控制

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;   //使能接收和发送引脚


USART_Init(USART1, &USART_InitStructure);

    

//USART_ClearFlag(USART1,USART_FLAG_TC);    

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);

USART1->ICR |= 1<<4; //必须先清除IDLE中断,否则会一直进IDLE中断

USART_Cmd(USART1, ENABLE);

    

    

/* USART1的NVIC中断配置 */

NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;

NVIC_InitStruct.NVIC_IRQChannelPriority = 0x02;

NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStruct);    

}


/**

* @file USART1_IRQHandler

* @brief USART1中断处理

* @param 无

* @retval 无

*/

void USART1_IRQHandler(void)

{

uint32_t temp = 0;

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

{

//USART_SendData(USART1,USART_ReceiveData(USART1));

if (uart_recv[UART_1].count < UART_BUF_LEN)

{

//uart_recv_flag = 1;

uart_recv[UART_1].recv_buf[uart_recv[UART_1].count] = USART_ReceiveData(USART1);

uart_recv[UART_1].count++;

}

while (USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);

}

if(USART_GetITStatus(USART1, USART_IT_IDLE) != RESET)

{

USART1->ICR |= 1<<4;

uart_recv_flag = 1;

UART_send(USART1, "hello", sizeof("hello"));

}


注意F0芯片的清除中断的方法是用ICR寄存器,在使能中断之后就要立即清除一次中断否则会不停的进入中断


关键字:stm32F030C8  单片机  串口  一帧 引用地址:stm32F030C8单片机串口利用USART_IT_IDLE接收完整的一帧

上一篇:stm32 USART接收总线空闲中断--USART_IT_IDLE
下一篇:STM32F系列USART的IDLE中断要注意了

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

单片机4×4矩阵键盘设计方案
1、设计原理   (1)如图14.2所示,用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键 “0-F”的序号。   (2)键盘中对应按键的序号排列如图14.1所示。   2、参考电路      图14.2 4×4矩阵式键盘识别电路原理图   3、电路硬件说明   (1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。   (2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”
[单片机]
<font color='red'>单片机</font>4×4矩阵键盘设计方案
AVR单片机与串行时钟器件DS3231的应用设计
1引言 由单片机构成的测控系统或智能显示屏经常需要用到实时日历或时钟信号。为节省CPU资源,本文介绍了串行时钟器件DS3231的应用及其与AVR单片机ATmega8的接口,该系统具有抗干扰能力强,计时准确且不随季节变化产生误差的特点。 2 DS3231的结构及工作原理 DS3231是低成本、高精度I2C实时时钟(RTC)器件,具有集成的温度补偿晶体振荡器(TCXO)。该器件包含电池输入端,断开主电源时仍可保持精确计时。集成的晶体振荡器可提高器件的长期精确度。DS3231的寄存器能保存秒、分、时、星期、日期、月、年和闹钟设置等信息。少于31天的月份,可自动调整月末日期,包括闰年补偿。时钟的工作格式为24小时或带AM/P
[单片机]
AVR<font color='red'>单片机</font>与串行时钟器件DS3231的应用设计
采用MSP430单片机的可穿戴式血糖仪电路设计
  介绍了一种便携式血糖仪的设计。该设计主要从低功耗及精确性的角度出发,以MSP430系列单片机为核心,葡萄糖氧化酶电极为测试传感器,较快地测试出血糖浓度。此外,所设计的血糖仪还具有储存功能,有助于用户查看血糖浓度历史值和变化趋势。   血糖测试电路:在酶电极两端滴入血液后,会产生自由电子。由于电极两端存在激励电压,就会有定向电流流过电极。该激励电压是由ADC模块提供的1.5V稳压通过电阻分压而产生的,大约在300mV左右,它能产生μA级别的定向电流。由于A/D转换模块测量的是电压,所以需要将该定向电流转换成电压,并且进行一定的放大。本系统采用图2所示的电路来实现电流到电压的转换和放大。运算放大器LM358的反相端连接血糖试纸
[单片机]
采用MSP430<font color='red'>单片机</font>的可穿戴式血糖仪电路设计
51单片机教程(三):单片机串口通信实例
简介:上讲介绍并应用了单片机内部定时器和中断,并给出了实例。这一讲将介绍单片机上的串口通信。通过该讲,读者可以掌握单片机上串口的工作原理和如何通过程序来对串口进行设置,并根据所给出的实例实现与PC 机通信。 一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。 与之前一样,首先我们来了解单片机串口相关的寄存器。 SBUF 寄存器:它是两个
[单片机]
51<font color='red'>单片机</font>教程(三):<font color='red'>单片机</font><font color='red'>串口</font>通信实例
一个非常不错的串口程序
//PC读MCU指令结构:(中断方式,ASCII码表示) //帧: 帧头标志| 帧类型| 器件地址| 启始地址| 长度n| 效验和| 帧尾标志 //值: ’n’ ’y’ | ’ r’ | 0x01 | x | x | x | 0x13 0x10 //字节数: 2 | 1 | 1 | 1 | 1 | 1 | 2 //求和: ///////////////////////////////////////////////////////////////////// //功能描述:中断方式:本程序为mcu的串口通讯提供(贞结构)函数接口,包括具体协议部分 //其
[单片机]
ATmega16单片机在实时温度采集与分析系统中的设计
  温度是工农业生产中很重要的的参数,它直接影响到产品的质量与性能。提出了一种基于ATmega16单片机与温度传感器相结合的实时温度采集与分析系统。本系统介绍了以ATmega16单片机为核心,以及自动化控制装置GTJJ4-10A固态继电器和数字温度传感器DS18B20,报警与指示电路等,在分析中基于MFC的软件处理。其中包括温度曲线的绘制,以及温度值的保存,显示历史记录等。在经过烧水温度的测试,该系统稳定可靠便于分析。温度误差0.5℃,可以满足工农业生产的要求。   随着计算机技术尤其是单片微型机技术的发展,温度对人们的生活与工作影响很大,所以要实时采集温度并且对其进行分析。为此,实现实时准确的测量监控。采用串口传送数据并且在PC
[单片机]
ATmega16<font color='red'>单片机</font>在实时温度采集与分析系统中的设计
基于51单片机实现温度传感器和按键调节时钟
这个暑假做了基于51单片机实现12864实现DHT11温湿度传感器和DS1302实现闹钟和温湿度显示在同一个界面上,可以通过四个独立按键控制时钟的暂停,时分秒年月日位置的切换,可以实现时钟的加法,减法,里面还有许多的小BUG,很是难以调整,有兴趣可以看一下如何进行代码的优化,总而言之,基本的功能是可以实现的了,由于我那单片机多个矩阵按键损坏,导致矩阵按键的位置有所不同,大家注意一下就好了。 不知道这么附录代码,你们下载看一下就好了 //提前透露出一些小BUG,有的受K3按键按下去,但是中断并没有开启,时钟也没有暂停, 原因不知出现在哪里,总之你们有兴趣随便看一下就行了,写的是烂了点,望大佬指点以下 单片机源程序如下: #in
[单片机]
基于51<font color='red'>单片机</font>实现温度传感器和按键调节时钟
8位MCU TM56F1552在电陶炉的应用方案,集成低噪声OPA
随着人们生活水平的不断提高,消费者对厨房电器的要求越来越高,对电器的环保节能特性,安全性,灵活性等都有很高的需求,电陶炉由于其加热效率高且可以持续加热,无辐射,适用性高等特点很好的满足了目前消费者的需要。 为了满足市场上对于电陶炉产品的需求,本文介绍一种成熟的电陶炉产品整体解决方案,方案由AC-DC电源芯片与8位MCU主控两部分组成,MCU内置触摸模块,LED/LCD显示驱动模块,多路PWM输出,带基准电压源的ADC以及EEPROM存储器等模块。其中主控TM56F1552芯片内集成了低噪声OPA,CMP,LDO,CTK,可以减少产品零件数目及降低成本。 方案中TM56F1552是一款8位内置OPA,外围电路简单,可以节省B
[嵌入式]
8位<font color='red'>MCU</font> TM56F1552在电陶炉的应用方案,集成低噪声OPA
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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