[STM32 标准库]EXTI应用场景 功能框图 寄存器

一、EXTI

外部中断在嵌入式系统中有广泛的应用场景,如按钮开关控制,传感器触发,通信接口中断等。其原理都差不多,STM32会对外部中断引脚的边沿进行检测,若检测到相应的边沿会触发中断,在中断中做出相应的处理。
例如:

  • 开关按下时,其引脚电平会发生变化;
  • 传感器检测的参数超过阈值,会传输一个电平信号;

二、EXTI功能框图

[STM32 标准库]EXTI应用场景 功能框图 寄存器_第1张图片

EXTI可分为两大部分功能:一个产生中断,另一个产生事件,这两个功能从硬件上有所不同;
产生中断是上图中至NCI中断控制器,产生事件是上图中脉冲发生器

1、产生中断的电路流程:

  • 输入线:EXTI输入线路有19个中断/事件输入线,可通过寄存器设置成任意一个GPIO,或者一些外设事件。输入线一般是检测电平变化的信号。
  • 边沿检测电路:通过设置上升沿和下降沿触发寄存器来控制信号触发,若检测到有边沿跳变输出有效信号1至与或门。
  • 与或门电路:与或门有1则输出1,信号输入端有两个,一个来自边沿检测电路,另一个来自程序控制启动中断/事件线。是否允许程序控制启动,是由软件中断事件寄存器控制。
  • 图中上方的与门电路:与门全1才为1,若中断屏蔽寄存器为0,不论与或门电路输出的为1还是0都是输出0;若中断屏蔽寄存器为1,则与门输出的信号由与或门输出信号决定。因此,中断屏蔽寄存器可以控制是否产生中断的目的。与门电路输出1时,会把请求挂起寄存器对应位置1。
  • NVIC中断控制器:将请求挂起寄存器的内容输出到NVIC内,从而实现系统中断事件控制。

2、产生事件的电路流程:与产生中断的电路流程前三个一样

  • 图中下方的与门电路:与门全1才为1, 若事件屏蔽寄存器为0,不论与或门电路输出的为1还是0都是输出0;若事件屏蔽寄存器为1,则与门输出的信号由与或门输出信号决定。因此,事件屏蔽寄存器可以控制是否产生事件的目的。
  • 脉冲信号发生器:当其输入端为1时,就会产生一个脉冲信号;当其输入端为0时,就不会输出脉冲。脉冲信号可以给其他外设电路使用,一般用来触发TIM或者ADC开始转换。

三、EXTI寄存器

  • 中断屏蔽寄存器(EXTI_IMR):其决定了是否可以开启中断;
  • 事件屏蔽寄存器(EXTI_EMR):其决定了是否可以开启事件输出;
  • 上升沿触发选择寄存器(EXTI_RTSR):其决定了输入线是否允许上升沿触发;
  • 下降沿触发选择寄存器(EXTI_FTSR):其决定了输入线是否允许上升沿触发;
  • 软件中断事件寄存器(EXTI_SWIER):其决定了是否内部软件可以产生中断达到EXTI目的;
  • 挂起寄存器(EXTI_PR):查看是否发生了触发请求;

外部唤醒线是边沿触发的,这些线上不能出现毛刺信号。在写EXTI_RTSR或者EXTI_FTSR寄存器时,在外部中断线上的上升沿或者下降沿信号不能被识别,挂起位也不会被置位。在同一中断线上,可以同时设置上升沿和下降沿触发。即任一边沿都可触发中断。

你可能感兴趣的:(STM32标准库,stm32,单片机,嵌入式硬件,EXTI)