1. 主要特点:
- 每个中断/事件线上的独立触发器和掩码
- 每个中断行的专用状态位
- 生成最多20个软件事件/中断请求
- 脉冲宽度小于APB2时钟周期的外部信号检测。
- 每条中断线路的专用状态位生成最多20个软件事件/中断请求检测脉冲宽度小于APB 2时钟周期的外部信号。
2. 概况
根据上图可以看出,input line上的信号要想触发中断需经过:
- 边沿检测电路:(上升沿、下降沿、跳变沿)
- 软件中断事件寄存器(就是说你可以软件触发中断,即忽略input line的状态)
- 中断屏蔽寄存器(这里是个“与”,可以理解成中断开关:不置1的话是无法下一步的)
- 挂起请求寄存器(若由上步产生了中断则该位置1;向其写1则会清除该位)
若是触发事件的话,则从第2步后经过事件屏蔽寄存器后触发事件。
我们再来看 Input line是怎么来的:
就是说一共有23根lines,前16根被用作GPIO的外部中断使用,后面的被其他外设使用。
再来看用于GPIO的line,每一根line包含所有GPIO管脚的相同pin,如图所示。通过SYSCFG_EXTICRn的寄存器就可以选择每根line来着GPIO的哪个Port。
注意:配置SYSCFG外设中的SYSCFG_EXTICRn的寄存器,需先开启SYSCFG外设的时钟(常识,但容易忘)。
3. 用途
3.1 硬件中断
- 配置中断屏蔽寄存器(IMR, Interrupt Mask Register)
- 配置触发条件(RTSR/FTSR, Rising/Falling Trigger Selection Register)
- 配置NVIC中断的使能位与屏蔽位
3.2 硬件事件
事件,我的理解是SYSTEM内部的一些硬件类的操作,不同于中断的跳转。比如:唤醒(WFE)
- 配置事件屏蔽寄存器(EMR, Event Mask Register)
- 配置触发条件(RTSR/FTSR, Rising/Falling Trigger Selection Register)
此部分,接触少,先按住不提。
3.3 软件中断/事件
就是用软件的方法触发硬件事件/中断,比如原来需要硬件的复位按键完成的功能,现在可以在通讯中满足一定条件由软件触发相应的功能。
- 可不配置触发条件
- 配置IMR/EMR