STM32 外部中断/事件控制器由19个产生事件/中断要求的边沿检测器组成。每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以被独立的屏蔽。挂起寄存器保持着状态线的中断要求。
对以上序号进行说明:
①InputLine:外部信号输入线,总共有 19 个来源,分别是 GPIO0~15(总共 16 个),正好连接到 EXTI0~15,EXTI16 连接到 PVD 输出,EXTI17 连接到 RTC 闹钟事件,EXTI18 连接到 USB,所以 /19 代表 19 个通道
②Edge Detect :边缘检测,可以是上升沿触发,也可以是下降沿触发,还可以是上升沿和下降沿都可以分别触发,对应图中 ②-1 和 ②-2
③Software interrupt event register:软件中断事件寄存器
④Pending request register:挂起寄存器
⑤interrupt mask register:中断屏蔽寄存器
整个外部中断的流程是这样的
1、选择外部信号输入线
2、信号选择以什么方式来触发,可以是上升沿或下降沿等
3、信号经过或门到 Pending request register,如果发生了触发,该寄存器的 PRx 位将置 1
4、最后,整个信号和中断屏蔽寄存器经过与门到 NVIC,这要求中断屏蔽寄存器必须置 1