f4 stm32 中断( 二 )


编号 1 是输入线,EXTI 控制器有 23 个中断/事件输入线,这些输入线可以通过寄存器设置为任意一个 GPIO,也可以是一些外设的事件,这部分内容我们将在后面专门讲解 。输入线一般是存在电平变化的信号 。
编号 2 是一个边沿检测电路,它会根据上升沿触发选择寄存器 () 和下降沿触发选择寄存器 () 对应位的设置来控制信号触发 。边沿检测电路以输入线作为信号输入端,如果检测到有边沿跳变就输出有效信号 1 给编号 3 电路,否则输出无效信号 0 。而和 两个寄存器可以控制器需要检测哪些类型的电平跳变过程,可以是只有上升沿触发、只有下降沿触发或者上升沿和下降沿都触发 。
编号 3 电路实际就是一个或门电路,它一个输入来自编号 2 电路,另外一输入来自软件中断事件寄存器 () 。允许我们通过程序控制就可以启动中断/事件线,这在某些地方非常有用 。我们知道或门的作用就是有”就为 1,所以这两个输入随便一个有有效信号 1 就可以输出 1 给编号 4 和编号 6 电路 。
编号 4 电路是一个与门电路,它一个输入编号 3 电路,另外一个输入来自中断屏蔽寄存器() 。与门电路要求输入都为 1 才输出 1,导致的结果如果设置为 0 时,那不管编号 3 电路的输出信号是 1 还是 0,最终编号 4 电路输出的信号都为 0;如果 设置为 1 时,最终编号 4 电路输出的信号才由编号 3 电路的输出信号决定,这样我们可以简单的控制来实现是否产生中断的目的 。编号 4 电路输出的信号会被保存到挂起寄存器() 内,如果确定编号 4 电路输出为 1 就会把对应位置 1 。
编号 5 是将寄存器内容输出到 NVIC 内,从而实现系统中断事件控制 。接下来我们来看看绿色虚线指示的电路流程 。它是一个产生事件的线路,最终输出一个脉冲信号 。产生事件线路是在编号 3 电路之后与中断线路有所不同,之前电路都是共用的 。
编号 6 电路是一个与门,它一个输入编号 3 电路,另外一个输入来自事件屏蔽寄存器 () 。如果 设置为 0 时,那不管编号 3 电路的输出信号是 1 还是 0,最终编号 6 电路出的信号都为 0;如果设置为 1 时,最终编号 6 电路输出的信号才由编号 3 电路的输出信号决定,这样我们可以简单的控制来实现是否产生事件的目的 。
编号 7 是一个脉冲发生器电路,当它的输入端,即编号 6 电路的输出端,是一个有效信号 1 时就会产生一个脉冲;如果输入端是无效信号就不会输出脉冲 。
【f4stm32 中断】编号 8 是一个脉冲信号,就是产生事件的线路最终的产物,这个脉冲信号可以给其他外设电路使用,比如定时器 TIM、模拟数字转换器 ADC 等等 。
产生中断线路目的是把输入信号输入到 NVIC,进一步会运行中断服务函数,实现功能,这样是软件级的 。而产生事件线路目的就是传输一个脉冲信号给其他外设使用,并且是电路级别的信号传输,属于硬件级的 。
注意:EXTI 是在 APB2 总线上的 。
配置:配置的主要函数void (* );函数结构体:
:EXTI 中断/事件线选择,可选 EXTI0 至。
:EXTI 模式选择,可选为产生中断 () 或者产生事件() 。
:EXTI 边沿触发事件,可选上升沿触()、下降沿触发() 或者上升沿和下降沿都触发 ( ) 。
):控制是否使能 EXTI 线,可选使能 EXTI 线 () 或禁用 () 。
如下: