Stm32的外部中断EXTI学习过程

发布者:少年不识愁滋味最新更新时间:2022-04-20 来源: eefocus关键字:STM32  外部中断  EXTI 手机看文章 扫描二维码
随时随地手机看文章

关于STM32外部中断线(EXTI中断学习整理)


简述

STM32的每个IO都可以作为外部中断输入。

STM32的中断控制器支持19个外部中断/事件请求:

线0~15:对应外部IO口的输入中断。

线16:连接到PVD输出。

线17:连接到RTC闹钟事件。

线18:连接到USB唤醒事件。

每个外部中断线可以独立的配置触发方式(上升沿,下降沿或者双边沿触发),触发/屏蔽,专用的状态位。

从上面可以看出,STM32供IO使用的中断线只有16个,但是STM32F10x系列的IO口多达上百个,所以stm32把IO中断映射在16个外部中断/事件线上

在这里插入图片描述

对于每个中断线,我们可以设置相应的触发方式(上升沿触发,下降沿触发,边沿触发)以及使能。


是不是16个中断线就可以分配16个中断服务函数呢?

IO口外部中断在中断向量表中只分配了7个中断向量,也就是只能使用7个中断服务函数

在stm32汇编文件startup_stm32f10x_hd.s中可以找到中断入口函数

在这里插入图片描述

EXTI 寄存器

中断屏蔽寄存器(EXTI_IMR)

在这里插入图片描述

此寄存器需要置1打开中断**

事件屏蔽寄存器(EXTI_EMR)**

在这里插入图片描述

这一个寄存器在默认的情况下开放来自线的事件请求,不需要设置

上升沿触发选择寄存器(EXTI_RTSR)

在这里插入图片描述

下降沿触发选择寄存器(EXTI_FTSR)

在这里插入图片描述

软件中断事件寄存器(EXTI_SWIER)

在这里插入图片描述

此寄存器可以使软件置1强制中断

挂起寄存器(EXTI_PR)

在这里插入图片描述

Stm32的NVIC寄存器详情:

在MDK内,与NVIC相关的寄存器,MDK为其定义了如下的结构体:

typedef struct

{undefined

vu32 ISER[2]; //2个32位中断使能寄存器分别对应到60个可屏蔽中断

u32 RESERVED0[30];

vu32 ICER[2]; //2个32位中断除能寄存器分别对应到60个可屏蔽中断

u32 RSERVED1[30];

vu32 ISPR[2]; //2个32位中断挂起寄存器分别对应到60个可屏蔽中断,可挂起正在执行的中断

u32 RESERVED2[30];

vu32 ICPR[2]; //2个32位中断解挂寄存器分别对应到60个可屏蔽中断,可解除被挂起的中断

u32 RESERVED3[30];

vu32 IABR[2]; //2个32位中断激活标志寄存器,可读取该寄存器判断当前执行的中断是哪个,中断执行完硬件清零,只读

u32 RESERVED4[62];

vu32 IPR[15]; //15个32位中断优先级分组寄存器,每个中断分配8个bit,对应到415=60个中断

} NVIC_TypeDef;

在这里插入图片描述

IPR[15]

15个32位中断优先级分组寄存器,每个中断分配8个bit,对应到415=60个中断。但是并不是8个bit都被使用了,而是仅仅只用到了高四位,这样就可以得到5组16级的中断优先级。

高位的4个bit又分为抢占优先级和子优先级,抢占优先级在前,子优先级在后。两种类型优先级占用的位数又可以通过SCB->AIRCR寄存器的bit[10:8]来配置。


地址:

在这里插入图片描述
地址:在这里插入图片描述

中断优先级设置步骤

1.设置AFIO复用功能的时钟打开

2.打开复用通道

21.系统运行后先设置中断优先级分组。调用函数:

void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);

整个系统执行过程中,只设置一次中断分组。

2.针对每个中断,设置对应的抢占优先级和响应优先级:

void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);

3. 如果需要挂起/解挂,查看中断当前激活状态,分别调用相关函数即可。

关键字:STM32  外部中断  EXTI 引用地址:Stm32的外部中断EXTI学习过程

上一篇:怎么通过STM32Cube修改型号,所有配置保持不变
下一篇:Stm32的Flash模拟EEPROM与BOOT基本了解

推荐阅读最新更新时间:2024-11-11 12:06

STM32 Keil仿真进不了Main()函数
STM32仿真进不了Main()函数问题,运行会一直卡在启动函数里面或者时钟配置函数里面。 原因是Keil仿真最多只支持5个断点,大于等于5个断电,则会出现该问题!!!!!!!
[单片机]
Keil5建立stm32工程
一、准备工作: 1、首先在项目名称下建立一个文件夹,作为存放程序的地方; 2、在总文件夹下,依次建立User、Driver、List、Output三个文件夹,作为存放main函数、驱动函数、编译和输出文件的子文件夹; 二、建立工程 1、打开keil软件,选择建立工程并且保存后会自动弹出如下界面: 2、选择所需的芯片类型后,自动弹出如下界面: 3、选择CMSIS下的CORE项、Device项的Startup项、StdPeriph Driver下的RCC项、framework项(这里面含有stm32f10x_config.h misc.c misc.h),这些是必选的项目。剩下的一些外设驱动可以在程序编写的过程中添加。
[单片机]
Keil5建立<font color='red'>stm32</font>工程
STM32的串口1发送、接收DMA模式函数配置
/********************************************************************************** **函数名称:void USART1_Config(void) **函数功能:USART1串口引脚初始化 **输入参数:无 **返回参数:无 **函数调用:内部调用 **********************************************************************************/ static void USART1_Config(void) { GPIO_InitTypeDef GPIO_InitStructu
[单片机]
关于STM32串口空闲中断IDEL的问题
1.空闲中断是接受数据后出现一个byte的高电平(空闲)状态,就会触发空闲中断.并不是空闲就会一直中断,准确的说应该是上升沿(停止位)后一个byte,如果一直是低电平是不会触发空闲中断的(会触发break中断)。 2.关于第二点有要铺垫的三个情况,datasheet中 当一空闲帧被检测到时,其处理步骤和接收到普通数据帧一样,但如果IDLEIE位被设置将产生一个中断 空闲符号被视为完全由'1'组成的一个完整的数据帧,后面跟着包含了数据的下一帧的开始位'1'的位数也包括了停止位的位数” 空闲符号的配图后面跟这一个低电平. 有人理解为只有收到下一个数据的起始位才会触发中断,这样理解是不对的,应该是数据
[单片机]
STM32项目(三)——通用LIN控制器
需求: LIN马达控制器:AFS(DHL+AFL)——弯道辅助照明系统 DHL:上极限,下极限,零位,马达老化循环; AFL:左极限,右极限,零位,马达老化循环; 所有参数可配置:上极限,下极限,零位,左极限,右极限,马达循环上极限,马达循环下极限,马达循环次数,马达循环等待时间; 保存至少30款产品的配置,配置界面需要有添加,读取,查找,删除功能。 方案:STM32 + LIN + 串口(使用NXP的串口屏,TJA系列的LIN芯片) STM32的LIN接口作为主节点,马达作为从节点。 系统设计:RTX多任务设计,串口处理任务,显示屏处理任务,LIN发送任务; (1)、串口处理任务:点击串口屏会获取到点击的坐标值,串口中断接受
[单片机]
解析STM32的库函数-1
一、引言 我们在学习32的过程中,固件库是个必不可少的东西,因为程序开发不再是从寄存器层次起始,而要首先去熟悉 STM32 所提供的固件库。那是否一定要使用固件库呢?当然不是。但 STM32 微控制器的寄存器规模可不 是常见的 8 位单片机可以比拟,若自己细细琢磨各个寄存器的意义,必然会消耗相当的时间, 并且对于程序后续的维护,升级来说也会增加资源的消耗。 二、正题 以最常用的 GPIO 设备的初始化函数为例,如下程序段一: GPIO_InitTypeDef GPIO_InitStructure; ○1 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; ○2 GPIO_InitS
[单片机]
STM32堆栈整理
STM32的堆栈大小在官方文件已经定义好了,分别是: Heap_Size EQU 0x00000200 一共512字节 Stack_Size EQU 0x00000400 一共1K字节 /***********************************************************************************/ 但是STM32在keil环境下每次编译后的堆栈起始地址并不是固定的(就算事先已经定义好了堆栈的大小),因为栈的起始地址是由用户程序中事先定义好的变量数目决定的(实测是如此)。但欣慰的是,一旦这次编译之后,堆栈的首地址就不会再发生改变了,换言之,就是在烧完程序之后,堆栈的地
[单片机]
<font color='red'>STM32</font>堆栈整理
STM32之五外部中断(下)
通过对外部中断理论的些许理解,这次我们利用两个按键key1和key2来控制led1和led2的亮灭,按key1进入key1的中断,控制对应的led亮灭,按key2进入key2的中断,控制相应的led的亮灭 同样,涉及到中断,我们要建立两个文件,exti.c及exti.h,首先来看看exti.c 用到中断,自然我们要用到stm32f10x_it.c函数,将中断响应函数放在里面,打开这个文件你会发现里面只是给出了部分中断函数,找来找去也没有我们需要的中断函数体,这时需要我们自己添加函数体,看下我添加的函数体: 但是这个函数名可不是随便起的,具体每个中断函数体的函数名怎么书写,我们可以打开startup_stm32f10x_hd.
[单片机]
<font color='red'>STM32</font>之五<font color='red'>外部中断</font>(下)

推荐帖子

请大侠帮忙看看vxworks hung的问题
这是一个简单的任务while(1){_tv.tv_sec=0;_tv.tv_usec=time;/*Ifusing10000us,thenthesystemhangwillnotoccur.*/res=select(0,NULL,NULL,NULL,&_tv);if(res0&&errno!=EINTR&&errno!=0){printf(\"selec
lyl19 实时操作系统RTOS
【DFRobot 云雀气象仪】学习笔记04(使用MQTT协议上传云雀气象仪数据到阿里云)
##9:使用MQTT协议上传云雀气象仪数据到阿里云###9.1:阿里云物联网平台使用1:登录云平台,登录网址如下:(https://iot.console.aliyun.com/product)2:创建产品,命名为云雀气象仪,界面如下图如下:!(https://boreyun.oss-cn-shanghai.aliyuncs.com/image-20231117094259824.png)!(https://boreyun.oss-cn-shanghai.aliyuncs.
qzc0927 传感器
基于ZX-2型FPGA开发板的串口示波器(二)
串口发送与接收模块设计代码分析1.1Tx_Bps_GenTx_Bps_Gen为发送波特率生成模块,每当有Byte_En信号到来时,即开始产生发送一个完整字节的数据需要的完整波特率时钟信号。本设计,波特率支持9600bps到921600bps。例如,需要产生的波特率时钟为9600bps,即波特率时钟频率为9600Hz,周期为104.17us。生成9600Hz波特率时钟的核心思想
小梅哥 FPGA/CPLD
uCOS-II在S3C2440上的移植
1)下载源代码http://www.armforum.cn下载最新的uCOS-II-V286版和MichaelAnburaj基于S3C2410的1.6.1移植版。根据代码用途的,建立app,s3c2440,ucosii三个目录,分别放置应用程序,平台移植文件和uCOS的源代码。如图:ARMM开发论坛字串42)新建ADS工程http://www.armforum.cn加入所有代码,修改ARM
songbo 实时操作系统RTOS
二手瑞萨E10A仿真器HS0005KCU02H 出售
二手瑞萨E10A仿真器HS0005KCU02H出售qq644002830加QQ请注明E10a此内容由EEWORLD论坛网友bbfan原创,如需转载或用于商业用途需征得作者同意并注明出处二手瑞萨E10A仿真器HS0005KCU02H出售
bbfan 瑞萨电子MCU
CDMA射频前端低噪声放大器电路设计研究
文章归纳了射频前端低噪声放大器电路设计中的若干问题,逐一探讨了解决问题的方法。基于有关处理,结合CDMA2000基站中射频低噪声放大器电路的设计要求,完成了实际电路的设计。通过仿真,进一步分析了相关问题处理方法的有效性。CDMA射频前端低噪声放大器电路设计研究
JasonYoo RF/无线
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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