提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、EXTI简介
- 二、NVIC基本结构
- 三、EXTI基本结构
- 1.AFIO复用IO口
- 2.EXTI框图
一、EXTI简介
- EXTI(Extern Interrupt)外部中断
- EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序
- 支持的触发方式:上升沿/下降沿/双边沿/软件触发
- 支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断
- 通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒
- 触发响应方式:中断响应/事件响应
二、NVIC基本结构
NVIC:嵌套中断向量控制器。在stm32中它是用来统一分配中断优先级和管理中断的,NVIC是一个内核外设,是CPU的小助手。
NVIC只有一个输出口,NVIC根据每个中断的优先级分配中断的先后顺序,之后通过右边的输出口告诉CPU,你该处理哪个中断。
然后我们看一下中断的分组:分为抢占优先级和响应优先级
级别的值越小,优先级越大。
例如:假定设置中断优先级组为2,然后设置中断3(RTC中断)的抢占优先级为2,响应优先级为1。 中断6(外部中断0)的抢占优先级为3,响应优先级为0。中断7(外部中断1)的抢占优先级为2,响应优先级为0。
优先级顺序:中断7>中断3>中断6
结论:抢占优先级高的必定先抢占中断,如果抢占优先级相同,那就看响应优先级,此时谁的响应优先级高,谁就先发生。
三、EXTI基本结构
1.AFIO复用IO口
2.EXTI框图
AFIO:就是一个数据选择器。它可以在这前面3个GPIO外设的16个引脚里选择其中一个连接到后面的EXTI的通道里。所以说相同的PIN不能触发中断,因为对于PA0,PB0,PC0这些,通过AFIO选择后只有一个能接到EXTI的通道0上,同理PA1,PB1,PC1,也只有一个能接到EXTI的通道1上。这就是所由GPIO口都能触发中断,但相同的PIN不能同时触发中断的原因。
然后通过AFIO选择的16个通道,就接到了EXTI边沿检测及控制电路上,同时,下面4个蹭网的外设也是并列接进来的。加起来一共20个就组成了EXTI的20个输入信号。然后经过EXTI电路之后,分为了两种输出:
1.接到了NVIC,是用来触发中断的。(注:外部中断5~9和10~15会同时触发一个中断函数)
2.接到了其他外设上,用来触发其他外设操作的,也就是我们说的事件响应。