1、EXTI功能
外部中断/事件控制器EXTI管理了STM32的20个中断/事件线。
EXTI的功能框图如下:
在功能框图中,可以看到很多在信号线上打了一个斜杠并标注“20”的字样,这是表示在STM32内部类似的信号线路有20个,也就是EXTI的20个中断/事件线。
EXTI可以分为两大部分功能:
产生中断:如功能图中的红色线。
产生事件:如功能图中的绿色线。
EXTI中断功能说明:
电路1:
在功能框图中,电路1是脚位输入线,EXTI有19个中断/事件输入线,这些输入线可以通过外部中断配置寄存器AFIO_EXTI1~AFIO_EXTI2设置为任意一个GPIO,也可以是一些外设的事件。输入线一般是电平变化的信号。
电路2:
电路2是边沿检测电路。该边沿检测电路是根据EXTI_RTSR上升沿触发选择寄存器和EXTI_FTSR下降沿选择寄存器的设置来控制信号触发。
如果检测到与EXTI_RTSR和EXTI_FTSR寄存器设置相对应的边沿跳变信号,就出输出有效信号到电路3。通过EXTI_RTSR和EXTI_FTSR寄存器,可以设置触发的信号为:上升沿触发、下降沿触发、电平变化触发(即上升沿和下降沿都可以触发)。
电路3:
电路3是一个或们电路,两路输入只要有一路输入有效信号,则输出有效信号。
从功能图中可以看出,电路3的一路输入来自电路2的输出,另一路来自EXTI_SWIER软件中断事件寄存器。
EXTI_SWIER寄存器可以通过程序控制启动中断/事件线,即只要在程序中将EXTI_SWIER寄存器的对应位设置为1,那么电路3就会输出有效信号,这样就可以实现软件模拟中断或事件。
电路4:
电路4是一个门电路,只有当两路都输入有效信号时,电路4才会输出有效信号。
电路4的输入一路来自电路3的输出,一路来自EXTI_IMR中断屏蔽寄存器。只有当电路3输出有效信号,而且EXTI_IMR寄存器的对应位使能,电路4才会输出有效信号。
EXTI_IMR寄