datasheet

USART发送与接收无意识中断嵌套

2016-10-10来源: eefocus关键字:USART  发送与接收  无意识中断嵌套
01 void USART1_IRQHandler(void)
02 {
03    static u8 i;
04    const u8 BufferSize = 20;
05    static u8 Counter = 0, index = 0;
06    static u8 RxBuffer[BufferSize];
07    static u8 TxBuffer[BufferSize];
08    
09    if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断
10    {
11        RxBuffer[Counter] =  USART_ReceiveData(USART1);
12            Counter++;//不会出错
13        if (0x0A == RxBuffer[Counter - 1] && 0x0D == RxBuffer[Counter - 2])
14        {
15            for (i = 0; i < Counter - 1; i++)
16                TxBuffer[i] = RxBuffer[i];
17            Counter = 0;
18            USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
19        }
20        //Counter++; 发送中断后,将导致RxBuffer[0] == RxBuffer[1],
21 
22        //因为当打开USART_IT_TXE中断后,将立即触发发送中断,形成中断嵌套,而发送中断程序为完毕后将继续执行此行。
23 
24    }
25 
26    if (USART_GetITStatus(USART1, USART_IT_TXE) != RESET)//发送中断
27    {
28        USART_SendData(USART1, TxBuffer[index++]);
29        if (index == i)
30        {
31            index = 0;
32            USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
33        }
34    }
35 }

关键字:USART  发送与接收  无意识中断嵌套

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2016101030284.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32的时钟树解析
下一篇:STM32 RTC日历程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F4 USART1 TX RX FIFO

USART1 TX RX FIFO/***********************************************************************************************************                                   * 模块名称 : 串口驱动模块    * 文件名称 : bsp_uart.c* 版   
发表于 2019-04-12

STM32的USART中RTS、CTS的作用和意义

Ⅰ、写在前面我们都知道USART中RX和TX这两个引脚的功能,这两个引脚是USART串行通信最常见和必不可少的两个引脚。但我们在手册中会发现关于USART的其他引脚:USART_CK、USART_RTS、USART_CTS,如下图:但我们大部分都没怎么使用过USART_RTS和USART_CTS这两个引脚。下面将给大家简单讲述一下关于USART串口拓展的知识。Ⅱ、关于DB9串口接头我们都听说过RS232,说232就知道DB9这个串口接头。DB9个引脚的功能:1 CD ← Carrier Detect 载波检测2 RXD ← Receive Data 接收数据3 TXD → Transmit Data 发送数据4 DTR
发表于 2019-04-12
STM32的USART中RTS、CTS的作用和意义

STM32 USART库函数介绍2

USART_Cmd函数的功能是使能或失能USART串口外设。例:使能USART1USART_Cmd(USART1,ENABLE);USART_ITConfig函数的功能是使能或者失能指定的USART串口中断。USART_IT_PE 奇偶错误中断USART_IT_TXE 发送中断USART_IT_TC 传输完成中断USART_IT_RXNE 接收中断USART_IT_IDLE 空闲总线中断USART_IT_LBD LIN中断检测中断USART_IT_CTS CTS中断USART_IT_ERR 错误中断例:使能USART1接收中断USART_Cmd(USART1,USART_IT_RXNE,ENABLE);USART
发表于 2019-04-11

STM32的数据传输外设:USART、I2C、SPI三种常见接口的学习

一、USART串行接口串行接口分为异步串行接口和同步串行接口两种,其中异步串行接口统称为通用异步收发器接口UART,具有同步功能的UART(包含时钟信号SCLK)称为通用同步/异步收发器接口USART。USART的电气特性标准包括RS-232C、RS422、RS423和RS485等,其中RS-232C是最常见的串行通信接口(台式机的显示器与主机的连接线好像就是RS232吧)RS232有9个引脚,当然最常用的只有三个:RXD(接收数据)、TXD(发送数据)、GND(用来共地);而RS232的主要指标有两个:数据速率和数据格式。数据速率就是我们设置的波特率,而数据格式便是我们设置的起始位、数据位、校验位、停止位;因为UART是挂载
发表于 2019-04-09
STM32的数据传输外设:USART、I2C、SPI三种常见接口的学习

USART从低功耗模式唤醒STM32F0

control (PWR) RM0360 Reference manual STM32F030x4/x6/x8/xC and STM32F070x6/xB STM32F0-数据手册–>3.5 Power management DS9773 STM32F030x4 STM32F030x6 STM32F030x8 STM32F0-编程手册–>2.5 Power management PM0215 STM32F0xxx单片机编程手册 STM32F0-应用笔记 如何使用USART或LPUART从低功耗模式唤醒STM32F0 / F3 / L0 / L4
发表于 2019-03-29
USART从低功耗模式唤醒STM32F0

STM32 USART使用奇偶校验位

无校验位时,数据位常用8位当使用就校验位时,数据位应设置为9位.奇偶校验位也包含在数据位中。详见参考手册:
发表于 2019-03-18
STM32 USART使用奇偶校验位

小广播

何立民专栏

单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved