10.2 External interrupt/event controller (EXTI)

1. 主要特点:

  1. 每个中断/事件线上的独立触发器和掩码
  2. 每个中断行的专用状态位
  3. 生成最多20个软件事件/中断请求
  4. 脉冲宽度小于APB2时钟周期的外部信号检测。
  5. 每条中断线路的专用状态位生成最多20个软件事件/中断请求检测脉冲宽度小于APB 2时钟周期的外部信号。

2. 概况

 根据上图可以看出,input line上的信号要想触发中断需经过:

  1. 边沿检测电路:(上升沿、下降沿、跳变沿)
  2. 软件中断事件寄存器(就是说你可以软件触发中断,即忽略input line的状态)
  3. 中断屏蔽寄存器(这里是个“与”,可以理解成中断开关:不置1的话是无法下一步的)
  4. 挂起请求寄存器(若由上步产生了中断则该位置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
原文地址:https://www.cnblogs.com/qiyuexin/p/9010479.html