学习内容:
EXTI (External interrupt) 就是指外部中断,通过GPIO 检测输入脉冲,引起中断事件,打断原来的代码执行流程,进入到中断服务函数中进行处理,处理完后,再返回到中断之前的代码中执行。
1、能够打断当前代码执行流程的事件分为异常(exception)和中断(interrupt),并把它们用一个表管理起来,编号为0~15 的称为内核异常,而16 以上的则称为外部中断(外,相对内核而言),这个表就称为中断向量表。把编号从-3 至6 的中断向量定义为系统异常,编号为负 的内核异常不能被设置优先级,如复位(Reset)、不可屏蔽中断 (NMI)、硬错误(Hardfault)。从编号7 开始的为外部中断,这些中断的优先级都是可以自行设置的。
2、中断控制器NVIC (Nested Vectored Interrupt Controller)。
不可屏蔽中断 (NMI)和外部中断都由它来处理
对NVIC 初始化,要定义并填充一个NVIC_InitTypeDef 类型的结构体。
3、STM32 的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,
其属性编号越小,表明它的优先级别越高。
抢占,是指打断其它中断的属性,即因为具有这个属性,会出现嵌套中断
(在执行中断服务函数A 的过程中被中断B 打断,执行完中断服务函数B 再继续
执行中断服务函数A),抢占属性由NVIC_IRQChannelPreemptionPriority 的参
数配置。
而响应属性则应用在抢占属性相同的情况下,当两个中断向量的抢占优先
级相同时,如果两个中断同时到达,则先处理响应优先级高的中断,响应属性
由NVIC_IRQChannelSubPriority 的参数配置。看例子如下:
4、在配置优先级的时候,中断种类的数量。NVIC 只可以配置16 种 中断向量的优先级,也就是说,抢占优先级和响应优先级的数量由一个4 位的数字来决定,把这个4 位数字的位数 分配成抢占优先级部分和响应优先级部分。有5 组分配方式:
要配置这些优先级组,可以采用库函数NVIC_PriorityGroupConfig(),可输入的参数为NVIC_PriorityGroup_0 ~ NVIC_PriorityGroup_4,分别为以上介绍的5 种分配组。
5、所有GPIO 都能够配置成外部中断,USART、ADC 等外设也有中断。
注意NVIC 能配置的是16种中断向量,而不是16个,当工程之中有超过16 个中断向量时,必然有2个以上的中断向量是使用相同的中断种类,而具有相同中断种类的中断向量不能互相嵌套。
6、STM2 单片机的所有I/O 端口都可以配置为EXTI中断模式,用来捕捉外部
信号,可以配置为下降沿中断,上升沿中断和上升下降沿中断这三种模式。它
们以下图的方式连接到16 个外部中断/事件线上
7、STM32 的所有GPIO 都引入到EXTI 外部中断线上,使得所有的GPIO 都能作为外部中断的输入源。
9、注意的是:PAx~PGx端口的中断事件都连接到了EXTIx,即同一时刻EXTx 只能相应一个端口的事件触发,不能够同一时间响应所有GPIO 端口的事件,但可以分时复用。
AFIO (alternate-function I/O),指GPIO 端口的复用功能。
当把GPIO 用作EXTI 外部中断 或使用重映射功能的时候,必须开启AFIO
时钟,而在使用默认复用功能的时候,就不必开启AFIO 时钟了。
学习总结:
当我们要读取某外设的状态时,可调用该外设的XXX_GetFlagStatus()函数来获取该状态。一般也有XXX_ClearFlag()库函数可供调用,进行相应的标志位清除。
上一篇:STM32中位带操作
下一篇:STM32学习总结之------串口通信USART
推荐阅读最新更新时间:2024-11-12 15:28
设计资源 培训 开发板 精华推荐
- EVAL6207N,基于 L6207N DMOS 双路全桥驱动器和 PWM 电流控制器的评估板
- 具有 250ksps 16 位 LTC2376-16 SAR ADC、LTC6655-5 的 LTC6362 演示板
- Maypole:随时随地进行无线文件存储
- LTC3859AEUHF 双路输出、降压/降压/升压同步控制器的典型应用电路,具有改进的突发模式操作
- nrf52840开发板
- DI-176 - 20W空调电源
- Cμ4 四位CPU
- SP7651宽输入电压范围3A、300kHz降压稳压器典型应用电路
- DC1017A,LT5558EUF 演示板,600 - 1100 MHz I-Q 调制器,具有 Hi-Z BB Rin,Vcm = 2.1V
- SPIRIT1-低数据速率收发器-315 MHz-全套件