基于STM32F103入门3——外部中断

发布者:EtherealBeauty最新更新时间:2022-09-23 来源: csdn关键字:STM32F103  入门  外部中断 手机看文章 扫描二维码
随时随地手机看文章

外部中断

基本概念

CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生),那么CPU就会暂停当前的工作(A事件),去执行B事件(中断响应和中断服务),然后B事件做完之后,再回到原来的事件(A事件)中继续工作。(中断的返回)。


简单的说就是 比如你在家看电视,突然电话响了(中断),然后又突然有人敲门(又另一个中断),这时,你是不是应该先不看电视,先去接电话,然后去开门,然后再回来看电视呢?

当然 电话响和有人敲门 你先去干哪个 取决于你觉得哪个更重要,更应该先去做。这个属于中断嵌套。


框图

在这里插入图片描述

功能说明

在这里插入图片描述

外部中断的配置

代码编写步骤

1:打开相应的时钟

1.1:GPIO的时钟

2.2:功能复用IO的时钟


2:配置GPIO结构体

2.1:引脚

2.2:模式(输入还是输出)

2.3:速率(输出才用 输入不用)

2.4:对结构体成员初始化


3:选择 哪个GPIO 管脚用作外部中断线路


4:配置EXTI结构体

4.1:哪个线 (比如你引脚是GPIO_Pin_3 那就是第3线)

4.2:中断模式还是事件模式

4.3:怎么触发(上升沿、下降沿、上下都触发)

4.4:EXTI使能

4.5:对结构体成员初始化


5:配置NVIC优先级结构体

5.1:选择哪个组 NVIC_PriorityGroupConfig (misc.h找)

5.2::哪个中断通道 (stm32f10x.h里 IRQn_Type结构体里找)

5.3:主优先级

5.4:次优先级

5.5:NVIC使能开启

5.6:对成员初始化


6:编写中断服务函数

函数名字在启动文件里找。


外部中断例程

这里就整一下按键按下的话就让灯闪烁一下吧

首先看一下原理图,

LED给个低电平就能点亮。

按键按下的话是低电平。



main.c

#include "stm32f10x.h"

#include "led.h"

#include "exti.h"

#include "systick.h"


int  main()

{

led_init();   //LED初始化

exti_keyInit();//按键中断初始化

while(1);

}


/*外部中断服务函数*/

void EXTI3_IRQHandler(void)

{

if(EXTI_GetITStatus(EXTI_Line3) != RESET) //判断是否发生边沿事件 是则发生外部中断

{

led_flash();

}

EXTI_ClearFlag(EXTI_Line3); //清除 EXTI 线路挂起标志位

}


led.c

#include "led.h"

#include "systick.h"


/*LED初始化函数*/

void led_init(void)

{

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);

GPIO_InitTypeDef GPIO_initStruction;

GPIO_initStruction.GPIO_Pin = LED;

GPIO_initStruction.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_initStruction.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOE, &GPIO_initStruction);

GPIO_SetBits(GPIOE,LED);

}


/*LED闪烁函数*/

void led_flash(void)

{

GPIO_ResetBits(GPIOE,LED);

SysTick_delay_ms(250);

GPIO_SetBits(GPIOE,LED);

SysTick_delay_ms(250);

GPIO_ResetBits(GPIOE,LED);

SysTick_delay_ms(250);

GPIO_SetBits(GPIOE,LED);

}


exti.c

#include "exti.h"


/*按键中断配置函数*/

void exti_keyInit(void)

{

//打开时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//GPIOE时钟 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //时钟复用

//配置GPIO结构体

GPIO_InitTypeDef GPIO_initStruction;

GPIO_initStruction.GPIO_Pin = KEY; 

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

GPIO_Init(GPIOE, &GPIO_initStruction); //对结构体成员初始化

//选择 哪个GPIO 管脚用作外部中断线路

GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource3);//PE3引脚

//配置EXTI结构体

EXTI_InitTypeDef EXTI_initStruction;

EXTI_initStruction.EXTI_Line = EXTI_Line3; //3线

EXTI_initStruction.EXTI_Mode = EXTI_Mode_Interrupt;//中断模式

EXTI_initStruction.EXTI_Trigger = EXTI_Trigger_Falling;//下降沿触发

EXTI_initStruction.EXTI_LineCmd = ENABLE;//EXTI使能

EXTI_Init(&EXTI_initStruction);//对结构体成员初始化

//配置NVIC结构体

NVIC_InitTypeDef NVIC_initStruction;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //组

NVIC_initStruction.NVIC_IRQChannel = EXTI3_IRQn; //中断通道

NVIC_initStruction.NVIC_IRQChannelPreemptionPriority = 0; //主优先级

NVIC_initStruction.NVIC_IRQChannelSubPriority = 0; //次优先级

NVIC_initStruction.NVIC_IRQChannelCmd = ENABLE;//NVIC使能

NVIC_Init(&NVIC_initStruction);//对结构体成员初始化

GPIO_SetBits(GPIOE,KEY);//KEY初始化为高电平

}


效果展示

在这里插入图片描述

关键字:STM32F103  入门  外部中断 引用地址:基于STM32F103入门3——外部中断

上一篇:基于STM32F103——DS18B20温度采集+串口打印
下一篇:基于STM32F103入门4——串口通信

推荐阅读最新更新时间:2024-11-07 22:50

STM32F103R8t6 FreeRTOS工程adc+flash模拟EEPROM源程序
STM32单片机源程序如下: #include sys.h #include delay.h #include usart.h #include led.h #include FreeRTOS.h #include task.h #include ADC.h #include 74HC595.h #include key.h #include stmflash.h //const u8 TEXT_Buffer ={ 0123456789 }; //任务优先级 #define START_TASK_PRIO 1 //任务堆栈大小 #define START_STK_SIZ
[单片机]
STM32中断NVIC、EXTI外部中断
eg:STM32F407ZGT6 1:NVIC(嵌套向量中断控制器) 在参考手册的描述中(我就直接Copy了哈): 嵌套向量中断控制器 NVIC 包含以下特性: ● STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 个可屏蔽中断通道, STM32F42xxx和 STM32F43xxx 具有多达 86 个可屏蔽中断通道(不包括 Cortex™-M4F 的 16 根中 断线) ● 16 个可编程优先级( 使用了 4 位中断优先级) ● 低延迟异常和中断处理 ● 电源管理控制 ● 系统控制寄存器的实现 嵌套向量中断控制器 (NVIC) 和处理器内核接口紧密配合,可以实现低延迟的中断处理和晚
[单片机]
STM32中断NVIC、<font color='red'>EXTI</font><font color='red'>外部中断</font>
51单片机按键控制数码管0~9_51单片机外部中断
前面为大家介绍的点亮LED灯、数码管、按键只用到了51单片机的IO资源,我们要是仅仅用单片机点灯、操作数码管,那可真是大才小用了。这些都只是51单片机资源的冰山一角,51单片机还有好多的功能,我后面将为大家一一介绍。今天为大家介绍单片机一个重要的外设——中断。 中断 没接触过单片机的朋友听到这个词肯定很陌生,大家对打断这个词应该不陌生吧,中断字面意思可以理解为中途被打断。大家可以思考一下,什么的中途被什么给打断了呢?想明白了这个问题就说明理解中断了。下面看看百度的解释: 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情 况的程序,处理完毕后又返回原被暂停的程
[单片机]
51单片机按键控制数码管0~9_51单片机<font color='red'>外部中断</font>
HTC入门新机曝光 搭载联发科处理器Desire 12
据ePrice报道,HTC宣布旗下入门新机Desire 12将于5月1日正式在中国台湾上市,目前该机已经开启预约。 价格方面,HTC Desire 12 3GB+32GB版售价5990新台币(约合人民币1300元),提供黑色、紫色和金色三种配色。HTC Desire 12+上市时间稍晚,预计在5月底或6月初,售价为7490新台币(约合人民币1600元)。 配置方面,HTC Desire 12采用了5.5英寸18:9全面屏,分辨率为1440×720,搭载联发科MT6739四核处理器,前置500万+后置1300万像素摄像头,电池容量为2730mAh,运行安卓7.1.1系统,拥有三卡槽设计,可同时插入2张SIM卡+1张Mi
[手机便携]
51单片机入门——Keil uVision4的使用
前言 对于单片机程序来说,每个功能程序都必须要有一个配套的工程(Project),即使是一个特别简单的功能程序也一样,因此我们首先要会使用软件建立工程文件。 1.Keil uVision4是什么? Keil uVision4是一款兼容单片机软件开发系统。 Keil相关资料和软件安装包,内附教程与SCT-SIP软件安装包 链接:https://pan.baidu.com/s/1mwtBsGqgylNtPXdK20ricg 提取码:qcyx –来自百度网盘超级会员V2的分享 1.1.系统概述 Keil uVision4软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下
[单片机]
51单片机<font color='red'>入门</font>——Keil uVision4的使用
STM8S汇编入门(1-3)
不知是心血来潮,还是其它因素,突然又想起玩汇编语言了。这几年也没少跟单片机打交道,包括51系列,430系列,ARM系列,但都是用C语言来开发。不过由于使用C语言,实际上对这些CPU的了解还是不够深刻,当然除了51之外,因为那是我多年前曾经用汇编开发过的芯片。尽管当今C语言已经在嵌入式产品的开发过程中成为主流,但我个人依然认为,要想真正了解CPU的特点,还得用汇编语言。不知道这种观点是对还是错,也许是因为自己从硬件做起,写过机器码,用汇编语言做过优化,因此对汇编语音有一种特殊的偏爱。 系列的芯片用多了,感觉有时写起程序来不太方便,因此总想寻找一些其它的8位单片机玩玩,正好手头有一个ST的三合一开发板,那是09年参加ST研讨会上买
[单片机]
谷歌为Android入门机型发布轻量版Assistant智能助理
Android 阵营有着从旗舰、到中端、以及入门机型的完整生态链,为了照顾新兴市场的用户,Google 特地推出了面向入门机型的 Android Go 操作系统。其旨在为运存 512MB 至 1GB、硬件性能孱弱的设备,提供更加流畅的使用体验,甚至还预装了一些修改后、提速提升 15% 的官方 app 。不过现在,Google 又宣布为 Android Go 平台带来了轻量级(简化版)Assistant 智能助理。 需要指出的是,Android Go 上的轻量版 Assistant 智能助理并不是 1:1 的功能移植,比如你无法体验到更高端设备上的提醒设置、智能家居设备控制、以及除英语外的其它语言等支持。 当然,对于普通的问
[手机便携]
带定位引擎的射频芯片CC2431
  【提要】CC2431是Chipcon公司继CC2430之后推出的,带硬件定位引擎的符合ZigBee/IEEE 802.15.4技术的2.4 GHz射频系统,适合于各种ZigBee相关的无线网络节点,包括调谐器、路由器和终端设备等。本文介绍了CC2431芯片的主要特点和应用领域,重点介绍了CC2431的定位引擎及其使用方法。   CC2431是TI公司推出的带硬件定位引擎的片上系统(SoC)解决方案,能够满足低功耗ZigBee/IEEE 802.15.4无线传感器网络的应用需要。CC2431定位引擎基于RSSI技术,根据接收信号强度与已知参考节点位置准确计算出有关节点位置,然后将位置信息发送给接收端。相比于集中型定位系统,RS
[安防电子]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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