一、EXTI简介
对于互联型产品,外部中断/事件控制器由20个产生事件/中断请求的边沿检测器组成,对于其它 产品,则有19个能产生事件/中断请求的边沿检测器。每个输入线可以独立地配置输入类型(脉冲 或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以独立地被屏 蔽。挂起寄存器保持着状态线的中断请求。
-
EXTI(Extern Interrupt)外部中断
-
EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序
-
支持的触发方式:上升沿/下降沿/双边沿/软件触发
-
支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断
//ex:PA1和PB1端口GPIO_Pin一样的,只能选1一个作为中断引脚
-
通道数:16个GPIO_Pin(GPIO_Pin_0~GPIO_Pin_15),外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒
-
触发响应方式:中断响应/事件响应
中断响应:正常流程,引脚电平变化触发中断
事件响应:不会触发中断,而是触发别的外设操作,属于外设之间的联合工作
二、STM32F10xxx产品的向量表
68个可屏蔽中断通道,包含EXTI,TIM,ADC,USART,SPI,IIC,RTC等多个外设
使用NVIC统一管理中断,每个中断都拥有16个可编程的优先等级,可对优先级进行分组,进一步设置抢占优先级和响应优先级
![](https://img-blog.csdnimg.cn/5d24bb159aed490d914cc14a0c8cbbbb.png)
![](https://img-blog.csdnimg.cn/61b9119ab4e84e41b9cb2cbd7e9a6dde.png)
![](https://img-blog.csdnimg.cn/cade43676d1d481cb1baeffd8f8b55fd.png)
![](https://img-blog.csdnimg.cn/e49687e366b74ebfbda736f11f6236df.png)
三、NVIC嵌套中断向量控制器(内核外设)
用于统一分配中断优先级和管理中断
![](https://img-blog.csdnimg.cn/d8846db9818642b38e1e2707f4d64148.png)
-
NVIC优先级分组
NVIC的中断优先级由优先级寄存器的4位(0~15)决定,这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级
抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队
![](https://img-blog.csdnimg.cn/f95a14eccecd4851b18e4e0a18294723.png)
抢占优先级>响应优先级
当响应优先级中断服务程序正在执行时,抢占优先级可以打断并插队到响应优先级前面
-
misc.h:NVIC_InitTypeDef结构体,以及库函数的参数和声明
-
misc.c:NVIC(嵌套向量中断控制器)、SysTick(系统滴答定时器)相关函数
四、EXTI基本结构
![](https://img-blog.csdnimg.cn/5b1d36b76ba74f2c9893b78ad0fafacb.png)
-
AFIO中断引脚选择:在GPIO外设的16个引脚里选择其中一个连接到后面EXTI的通道里
//所以说相同的Pin不能同时触发中断,因为经过AFIO中断引脚选择后只有其中一个能接到EXTI的通道0上
-
通过AFIO选择之后的16个通道,接到了EXTI边沿检测及控制电路上
-
ST公司将外部中断的9~5、15~10分到一个通道里==外部中断的9~5会触发同一个中断函数,15~10会触发同一个中断函数
//在编程的时候,在这两个中断函数里需要再根据标志位来区分到底是从哪个中断进来的
5、AFIO复用IO口
![](https://img-blog.csdnimg.cn/9de96280ca724d6892619db393ec1ee8.png)
-
AFIO主要用于引脚复用功能的选择和重定义
-
在STM32中,AFIO主要完成两个任务:复用功能引脚重映射、中断引脚选择