EXTI外部中断
- EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI立即向NVIC发出中断申请,经NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序
- 触发方式:上升沿、下降沿、双边沿、软件触发
- 支持所有GPIO口,但相同的Pin不能同时触发中断(如PA1和PB1、PA4和PB4)
- 通道:16个GPIO、外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒
- 触发响应方式:中断响应、事件响应(中断信号不通向CPU,而是通向其他外设)
EXTI基本结构
由AFIO(数据选择器)指定GPIO端口接收中断信号,传递至EXTI边沿检测及控制电路上,随后的输出分为两种情况,一种传递至NVIC,产生中断响应;另一种传递至其他外设,即事件响应。
AFIO复用IO口
- AFIO主要用于引脚复用功能的选择和重定义
- 在STM32中,AFIO主要完成两个任务:复用功能引脚重映射、中断引脚选择
EXTI框图
20根输入线首先进入边沿检测电路,,在上面的上升沿寄存器和下降沿寄存器可以选择是上升沿触发还是下降沿触发,接着触发信号就进入到或门输入端,在或门输入端,只要有一个是高电平1,输出就是高电平1;只有全部输入低电平0,输出才为0。在这里,硬件触发和软件中断寄存器的值任意一个为1,或门就可以输出1。通过或门的信号可以选择触发中断,也可以选择触发事件。
触发中断首先会置一个挂起寄存器,相当于中断标志位,我们可以读取寄存器判断是哪一个通道触发的中断。如果挂起中断寄存器置1,其信号就会与中断屏蔽寄存器共同进入一个与门,然后至NVIC中断控制器。在与门输入端,只要有一个是低电平0,输出就是低电平0;只有全部输入高电平1,输出才为1。如果中断屏蔽寄存器给1,那另一个输入就直接输出,也就是允许中断;中断屏蔽寄存器给0,那另一个输入是什么,输出都是0,相当于屏蔽了这个中断。
触发事件首先会通过一个事件屏蔽寄存器进行控制,然后通过一个脉冲发生器,到其他外设。脉冲发生器会给一个电平脉冲,用来触发其他外设动作。