STM32串口中断方式接收

发布者:码字探险最新更新时间:2016-04-29 来源: eefocus关键字:STM32  串口  中断方式 手机看文章 扫描二维码
随时随地手机看文章
void RCC_Configuration(void)

{

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | 
  RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
}

 

首先中断的配置

void NVIC_Configuration(void) 

NVIC_InitTypeDef NVIC_InitStructure;

#ifdef  VECT_TAB_RAM  
   
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); 
#else   
   
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
#endif

  
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); 
 
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel; 
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; 
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
  NVIC_Init(&NVIC_InitStructure); 
}

接着设置GPIO的第二功能

void GPIO_Configuration(void) 

  GPIO_InitTypeDef GPIO_InitStructure;

   
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
  GPIO_Init(GPIOA, &GPIO_InitStructure); 
   
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
  GPIO_Init(GPIOA, &GPIO_InitStructure);

}

初始化串口

void USART_Configuration(void) 

  USART_InitTypeDef USART_InitStructure; 
  USART_ClockInitTypeDef  USART_ClockInitStructure; 
 
   
 
#if 1 
USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; 
USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; 
USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; 
USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; 
 
USART_ClockInit(USART1, &USART_ClockInitStructure); 
#endif 
USART_InitStructure.USART_BaudRate = 115200; 
USART_InitStructure.USART_WordLength = USART_WordLength_8b; 
USART_InitStructure.USART_StopBits = USART_StopBits_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_ITConfig(USART1, USART_IT_RXNE, ENABLE); 
 
   
  USART_Cmd(USART1, ENABLE);

}

然后是中断处理函数,这里只实现了简单的将收到的字符回显到终端上

void USART1_IRQHandler(void) 

    u16 i; 
     
    if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET) 
                  
        i = USART_ReceiveData(USART1); 
        USART_SendData(USART1,i); 
        while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) 
        
                       
    }

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

    }

 

}

关键字:STM32  串口  中断方式 引用地址:STM32串口中断方式接收

上一篇:STM32 IAR工程->Keil MDK转换详解
下一篇:arm-linux-gcc和arm-elf-gcc 区别

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

STM32——系统滴答定时器
一、SysTick【内核中】 【风格:先描述一下库对寄存器的封装,再举例实现某些功能】 SysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号: 15)。在以前,操作系统还有所有使用了时基的系统,都必须一个硬件定时器来产生需要的“滴答”中断,作为整个系统的时基。滴答中断对操作系统尤其重要。例如,操作系统可以为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。 Corte
[单片机]
运用LabView控制DS3900串口通信模块
本篇应用笔记讨论了DS3900串口通信模块和LabView的使用问题,LabView是适用于嵌入式应用的图形化界面开发平台。本文可作为面向DS3900的LabView界面用户指南。 介绍 LabView作为嵌入式应用的图形化界面开发平台得到了广泛应用。DS3900串口通信模块是一款通用接口板,借助该接口板,用户可使用PC串口与具有I²C接口的器件通信。DS3900的指令集允许应用软件与I²C器件直接通信。 本应用笔记是面向DS3900的LabView界面的用户指南。首先,用户需要安装LabView。为用户提供了标准VI,以加载并运行程序。可以下载与本应用笔记相关的LabView代码(ZIP,321K)。 使用LabVie
[电源管理]
运用LabView控制DS3900<font color='red'>串口</font>通信模块
STM32 下载程序时,往flash固定位置写数据配置
1.就像参数定义时使用下面语句 const unsigned char Flash_user_data __attribute__((at(0X08080000))) = { 0x01,0x02,0x03,0x04, 0x01,0x01,0x03,0x03, 0x04,0x04,0x04,0x04, 0x05,0x05,0x01,0x04 }; 2.写入以后读取 int flash_addr; //存取地址的时候使用 unsigned char flash_data_char; //字节形式读取一个字节 unsigned int flash_data_int; //in
[单片机]
基于STM32的重力感应售货机系统设计
一、项目介绍 随着智能物联网技术的不断发展,人们的生活方式和消费习惯也正在发生改变。如今越来越多的人习惯于在线购物、自助购物等新型消费模式,因此智能零售自助柜应运而生。 本项目设计开发一款基于STM32主控芯片的智能零售自助柜,通过重力传感器监测货柜内商品重量变化,并通过WiFi通信模块与手机端实现交互。用户可以通过输入账号密码,柜门自动打开,用户自取商品后关闭柜门,柜门锁定,系统根据重量变化判断用户拿取的商品并从账户自动扣费。同时,用户也可以通过手机端查看消费流水、商品库存,并进行补货和充值等操作。 智能零售自助柜的应用场景非常广泛,可以应用于商场、超市、酒店、机场、车站等各类场景。通过自助购物,可以提高消费者的
[单片机]
基于<font color='red'>STM32</font>的重力感应售货机系统设计
基于STM32、ESP32,钢铁侠打造机械臂设计
一直是稚晖君很感兴趣的一个方向,而在中他认为最实用的非臂莫属。正巧,半年前稚晖君偶然淘到了一台二手机械臂,这让他有些激动。然而,喜悦之情还没持续多久,稚晖君就有些不开心了:在他花了一些时间将这台机械臂研究透彻,并自己开发了一套 K 后,感到了一点不妙:“这个手子不太行啊”。 稚晖君表示,目前市面上的机械臂都不够酷,因此决定要自己造一台很酷的机械臂,并将其取名为 Dummy(取自钢铁侠中一只名为 Dummy 的机械臂)。为此他总结了一份架构设计图(由于该图较长,中为滚动呈现,因此本文仅截取部分): 准备 既然是要设计一台机械臂,那就需要从硬件开始准备,毕竟无论软件再重要,也需要一个优质的载体才
[机器人]
STM32笔记之十九:看看固件库V3的葫芦里到底卖的什么药
1 、 库结构初步认识 (1)解压缩3.1.2固件库,拷贝出来,重新命名Project_IAR5_Sim,准备用这 个进行初步的探索,包括新固件架构和虚拟硬件的调试。 (2)运行IAR5.4,打开Project_IAR5_SimProjectTemplateEWARMv5Proje- ct.eww,编译查看Project_IAR5_SimProjectTemplateEWARMv5STM3210E- EVALExe下的编译结果,发现居然有202K,看来学习时候如果不想费精力于删 除库文件的话,将来再加上操作系统,512K的单片机是需要的了。 (3)库里面需要用到的目录结构如下图,左侧是文件组织结构,双击每个目录 会弹出其下面需要
[单片机]
STM32驱动多个超声波模块(只用一个定时器)
用STM32单片机成功驱动一个超声波模块后,接下来便有了疑问如何用stm32单片机驱动多个超声波模块呢?(驱动一个超声波模块可以参考:stm32驱动超声波模块测距) 超声波模块型号为HC-SR04,模块驱动方式选择利用外部中断的方式驱动(具体细节可参见上面链接)。 经过一个下午的思考实验发现了两种驱动多个超声波模块的方法: 分时测量 同时测量 1.分时测量: 通过类似于实现流水灯的方法,多个超声波模块依次测量并将测量结果依次输出。 优点:各个超声波模块测量过程中不会出现相互干扰的情况。 缺点:整体测量周期长,数据采样频率比较低。 这里有几个问题点需要注意: 一个超声波模块需要在测量完成后再开始下一个模块的测量 超声波模块在
[单片机]
基于TTL串口的嵌入式USB主机系统的设计
1 引言 随着移动存储业的发展及数码产品的普及,数据采集系统、工控行业和嵌入式用户对移动存储的需求越来越大,也 对数据移动存储盘提出了更高的应用要求,包括到地矿数据采集行业用户、水文系统数据采集行业用户、仪器仪表制造行业用户、铁路、长途汽运等交通系统数据采集用户、油田数据采集系统用户、单板系统的软件升级用户、纺织系统数据采集用户、银行等。 但由于之前多数数据采集设备、工控机及嵌入式系统不具备 USB 数据输入输出标准接口,所以在 USB 数据存储方面一直得不到很好的普及。 业界和用户的需求使得嵌入式USB主机的研究成为USB研究领域的一个新的方向。 本文介绍了一种基于TTL串口的USB主机系统, 通过 TTL 串口(或并口)
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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