STM32笔记之九:打断它来为我办事,EXIT (外部I/O中断)应用

发布者:笑脸猫最新更新时间:2015-09-29 来源: eefocus关键字:STM32  EXIT  外部IO中断 手机看文章 扫描二维码
随时随地手机看文章
a)        目的:跟串口输入类似,不使用中断进行的IO输入效率也很低,而且可以通过EXTI插入按钮事件,本节联系EXTI中断。

b)        初始化函数定义:

void EXTI_Configuration(void); //定义IO中断初始化函数

c)        初始化函数调用:

EXTI_Configuration();//IO中断初始化函数调用简单应用:

d)        初始化函数:

void EXTI_Configuration(void)

{

  EXTI_InitTypeDef EXTI_InitStructure;        //EXTI初始化结构定义

EXTI_ClearITPendingBit(EXTI_LINE_KEY_BUTTON);//清除中断标志

   GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource3);//管脚选择

   GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource4);

     GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5);

     GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource6);

     EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//事件选择

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//触发模式

  EXTI_InitStructure.EXTI_Line = EXTI_Line3 | EXTI_Line4; //线路选择

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//启动中断

  EXTI_Init(&EXTI_InitStructure);//初始化

}

e)        RCC初始化函数中开启I/O时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);

GPIO初始化函数中定义输入I/O管脚。

//IO输入,GPIOA的4脚输入

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;         //上拉输入

  GPIO_Init(GPIOA, &GPIO_InitStructure);                //初始化

f)        在NVIC的初始化函数里面增加以下代码打开相关中断:

  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;        //通道

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//占先级

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;             //响应级

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //启动

  NVIC_Init(&NVIC_InitStructure);                                                                //初始化

g)        在stm32f10x_it.c文件中找到void USART1_IRQHandler函数,在其中添入执行代码。一般最少三个步骤:先使用if语句判断是发生那个中断,然后清除中断标志位,最后给字符串赋值,或做其他事情。

  if(EXTI_GetITStatus(EXTI_Line3) != RESET)                                  //判断中断发生来源

   { EXTI_ClearITPendingBit(EXTI_Line3);                                          //清除中断标志

    USART_SendData(USART1, 0x41);                                              //发送字符“a”

    GPIO_WriteBit(GPIOB, GPIO_Pin_2, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_2)));//LED发生明暗交替

}

h)        中断注意事项:

中断发生后必须清除中断位,否则会出现死循环不断发生这个中断。然后需要对中断类型进行判断再执行代码。

使用EXTI的I/O中断,在完成RCC与GPIO硬件设置之后需要做三件事:初始化EXTI、NVIC开中断、编写中断执行代码。
关键字:STM32  EXIT  外部IO中断 引用地址:STM32笔记之九:打断它来为我办事,EXIT (外部I/O中断)应用

上一篇:STM32笔记之八:来跟PC打个招呼,基本串口通讯
下一篇:STM32笔记之十:工作工作,PWM输出

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

基于STM32设计的四轴飞行器飞控系统
引言 四轴飞行器是一种结构紧凑、飞行方式独特的垂直起降式飞行器,与普通的飞行器相比具有结构简单,故障率低和单位体积能够产生更大升力等优点,在军事和民用多个领域都有广阔的应用前景,非常适合在狭小空间内执行任务。因此四旋翼飞行器具有广阔的应用前景,吸引了众多科研人员,成为国内外新的研究热点。 本设计主要通过利用惯性测量单元(IMU)姿态获取技术、PID电机控制算法、2.4G无线遥控通信技术和高速空心杯直流电机驱动技术来实现简易的四轴方案。整个系统的设计包括飞控部分和遥控部分,飞控部分采用机架和控制核心部分一体设计增加系统稳定性,遥控部分采用模拟摇杆操作输入使操作体验极佳,两部分之间的通信采用2.4G无线模块保证数据稳定传输。飞
[单片机]
基于<font color='red'>STM32</font>设计的四轴飞行器飞控系统
STM32库函数开发使用总结
一、外设常具备的几类寄存器 控制寄存器xxx_CR (Control/Configuration Register): 用来配置、控制响应外设的工作方式,如GPIOx_CRL、AFIO_EXTICR1~AFIO_EXTICR4。 数据寄存器xxx_DR (Data Register) : 存储量外设进行输入输出的数据,如GPIOx_IDR、GPIOx_ODR、USART_DR等。 状态寄存器xxx_SR(Status Register): 实时的更新存储着外设的当前运行状态,主要是一些标志位,如USART_SR、ADC_SR等。 二、控制外设的常见操作 设置工作模式、使能外设等  常在初始化外设时完成,调用函数xxx_I
[单片机]
全面掌握stm32的GPIO知识
1 初学者重要提示 本文主要是以stm32H7系列为主。 对于不使用的引脚,推荐设置为模拟模式,悬空即可。 GPIO的速度等级高的时候,最好使能IO补偿单元。 2 GPIO功能简介 STM32H7的GPIO特性如下: 输出状态:开漏/推挽 + 上拉/下拉电阻。 通过输出数据寄存器(GPIOx_ODR)或者外设(GPIO设置为复用模式时)输出数据。 GPIO速度等级设置。 输入状态:浮空,上拉/下拉,模拟。 通过输入数据寄存器(GPIOx_IDR)或者外设(GPIO设置为复用模式)输入数据。 通过寄存器GPIOx_BSRR实现对寄存器GPIOx_ODR的位操作。 通过配置寄存器GPIOx_LCKR的锁机制,实现冻结IO口配置。 每两
[单片机]
全面掌握<font color='red'>stm32</font>的GPIO知识
STM32通过按键中断点亮led灯
首先是led头文件,其中调用的一些库是原子的我只是借鉴一下 侵删 #ifndef __LED_H #define __LED_H #include sys.h #define LED PCout(13) // PA8 void LED1_Init(void);//³õʼ»¯ #endif led的c文件 #include led.h //初始化PB5和PE5为输出口.并使能这两个口的时钟 //LED IO初始化 void LED1_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockC
[单片机]
STM32 启动文件选择
简介:STM32 启动文件选择的简单介绍 - startup_stm32f10x_ld_vl.s: for STM32 Low density Value line devices - startup_stm32f10x_ld.s: for STM32 Low density devices - startup_stm32f10x_md_vl.s: for STM32 Medium density Value line devices - startup_stm32f10x_md.s: for STM32 Medium density devices - startup_stm32f10x_hd.s: for
[单片机]
STM32 Cubemax(十一) ——JY901陀螺仪数据的读取与简单数据处理
前言 JY901是维特公司出品的9轴陀螺仪,个人在使用上感觉是十分不错的,他们家的产品都可以使用串口或者IIC来进行数据读取。且内部自带滤波效果,不需要对其数据进行处理,就可以直接使用。 如果买了他们家产品,应该都有他们家的上位机,这里就不给出链接了,如果有需要私聊。 JY901简单介绍 JY901这款陀螺仪,每次发送出来的数据,可以在上位机中查看,且可以在上位机中选择需要发送出来的数据。 我们分析原始数据或者看手册都可以知道,JY901每次发送出来的数据都是11位的,其中第一位位帧头,第二位为判断属于的类型。 一、上位机调试 我们在第一次使用时,记得将陀螺仪水平,然后点击加计校准,来校准陀螺仪。 我们在上位机
[单片机]
<font color='red'>STM32</font> Cubemax(十一) ——JY901陀螺仪数据的读取与简单数据处理
STM32的GPIO输出编程实例之点亮三色LED
一、概述: 1、发光二极管简介 发光二极管是半导体二极管的一种,可以把电能转化为光能,常简写为LED。常用的是发红光、绿光或黄光的二极管。发光二极管的反向击穿电压约为5V。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。限流电阻R可用下式计算: R = (E - UF)/IF 式中E为电源电压,UF为LED的正向压降,IF为LED的一般工作电流。LED广泛应用于各种电子电路、家电、仪表等设备中,做电源或电平指示。 2、STM32 GPIO简介 GPIO可以配置成以下8种工作模式: 浮空输入:此端口在默认情况下什么都不接,呈高阻态,这种设置在数据传输时用的比较多。 上拉输入:上拉输入模式与浮空输入模式相
[单片机]
<font color='red'>STM32</font>的GPIO输出编程实例之点亮三色LED
STM32温度传感器的使用和计算
STM32内置一个温度传感器,通过ADC_IN16这个通道可以读出温度传感器的电压。在STM32的技术参考手册中给出了一个计算公式: Temperature (in ℃) = {(V25 - VSENSE) / Avg_Slope} + 25 公式中的Vsense就是在ADC_IN16读到的数值。Avg_Slope就是温度与ADC数值转换的斜率。 设想一个XY坐标,X轴为ADC的电压读数,Y轴为温度,两轴之间有一条直线代表了温度与转换电压的关系;在这条直线上如果X轴电压为V25时,Y轴即为25℃;当读出的电压是其它数值时,即读出的电压是Vsense时,使用这个公式就可以得到温度的数值。 在STM32F103xx
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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