STM32 CubeMX(二)—— 外部中断

外部中断

  • 前言
    • 中断
      • 同步中断
      • 异步中断。
      • 作用
      • 优先级
      • 中断与IRQ
  • STM32中断
    • Cortex-M
    • NVIC
    • 中断优先级
      • 中断嵌套
      • 优先级分组
    • 外部中断
      • EXTI
      • GPIO引脚的外部中断触发方式
        • 引脚分组
    • 配置外部中断
      • STM32CubeMX配置外部中断


前言

中断

通常被定义为一个事件,该事件能够改变处理器执行指令的顺序。

这样的事件与 CPU 芯片内外部硬件电路产生的电信号相对应。

同步中断

当指令执行时,由控制单元产生的。

之所以称为同步,是因为只有在一条指令终止执行后 CPU 才会发出中断。

异步中断。

由其他硬件设备依照 CPU 时钟信号随机产生的。

通常我们所说的中断指的是异步中断,我们将同步中断称为异常。异常是由程序的错误产生的,或者是由内核必须处理的异常条件产生的

作用

通过中断可以使处理器转而去优先运行正常控制流之外的代码。

优先级

STM32 CubeMX(二)—— 外部中断_第1张图片

中断与IRQ

每个能够发出中断请求的硬件设备控制器都有一条名为IRQ(lnterrupt ReQuest) 的输出线。

STM32中断

Cortex-M

爱特梅尔公司发布的全新ARM® ARM D20微控制器,采用的是全球微控制器标准。

NVIC

提供中断控制器,用于总体管理异常,称之为“内嵌向量中断控制器:Nested Vectored Interrupt Controller (NVIC)”。

STM32 CubeMX(二)—— 外部中断_第2张图片

中断优先级

NVIC中有一个8位中断优先级寄存器NVIC_IPR,理论上可以配置0~255共256级中断。

STM32只使用了其中的高4位,并分成抢占优先级和子优先级两组。

中断嵌套

  • 多个中断同时提出中断申请时:先比较抢占优先级,抢占优先级高的中断先执行。如果抢占优先级相同,则比较子优先级。
  • 二者都相同时,比较中断编号。编号越小,优先级越高

中断编号位于芯片头文件中

优先级分组

STM32 CubeMX(二)—— 外部中断_第3张图片
HAL库初始化函数HAL_Init将优先级分组设置为第4组,即有0~15,共16级抢占优先级,没有子优先级。编号越小的优先级越高

外部中断

EXTI

External interrupt/event controller,外部中断/事件控制器,管理了控制器的 20个中断/事件线。

每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线单独配置为中断或者事件,以及触发事件的属性。

GPIO引脚的外部中断触发方式

  • 上升沿触发
  • 下降沿触发
  • 双边沿触发
引脚分组

STM32 CubeMX(二)—— 外部中断_第4张图片

配置外部中断

  1. 开启IO口时钟,初始化IO口为输入。
  2. 开启IO口复用时钟。
  3. 设置IO口与中断线的映射关系。
  4. 初始化线上中断,设置触发条件等。
  5. 配置中断分组(NVIC),并使能中断。
  6. 编写中断服务函数。
  7. 清除中断标志位。

STM32CubeMX配置外部中断

你可能感兴趣的:(STM32,CubeMx,stm32)