学习stm32基础知识总结四——中断

169 阅读2分钟

1. 中断

1.1 概念

打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断

1.2 中断的作用和意义

  • 实时控制
  • 故障处理
  • 数据处理
  • 意义: 高效处理紧急程序,不会一直占用CPU资源

1.3 GPIO外部中断简图

image.png

2. NVIC

2.1 基本概念

  • Nested vectored interrupt controller,嵌套向量中断控制器,属于内核(M3/4/7)
  • NVIC支持:256个中断(16内核 + 240外部),支持:256个优先级,允许裁剪
  • 中断向量表:定义一块固定的内存,以4字节对齐,存放各个中断服务函数程序的首地址

中断向量表定义在启动文件,当发生中断,CPU会自动执行对应的中断服务函数。

2.2 NVIC相关寄存器

  1. 中断使能寄存器(ISER)
  2. 中断除能寄存器(ICER)
  3. 应用程序中断及复位控制寄存器(AIRCR)
  4. 中断优先级寄存器(IPR)

2.3 NVIC工作原理

image.png

2.4 STM32中断优先级概念

  • 抢占优先级(pre):高抢占优先级可以打断正在执行的低抢占优先级中断
  • 响应优先级(sub):当抢占优先级相同时,响应优先级高的先执行,但是不能互相打断
  • 抢占和响应都相同的情况下,自然优先级越高的,先执行
  • 自然优先级:中断向量表的优先级
  • 数值越小,表示优先级越高

2.5 STM32中断优先级分组

  • 一个工程中,一般只设置一次中断优先级分组。
  • 5个分组(0~4)
  • 16个优先级(2^4)

2.6 STM32NVIC的使用

  1. 设置中断分组  AIRCR[10:8], HAL_NVIC_SetPriorityGrouping
  2. 设置中断优先级   IPRx bit[7:4], HAL_NVIC_SetPriority
  3. 使能中断  ISERx, HAL_NVIC_EnabelRQ

3 EXTI

3.1 概念

  • External(Extended) interrupt/event Controller,外部(扩展)中断事件控制器
  • 由20个产生事件/中断请求的边沿检测器组成,即总共:20条EXTI线(F1)
  • 中断:要进入NVIC,有相应的中断服务函数,需要CPU处理
  • 事件:不进入NVIC,仅用于内部硬件自动控制的,如控制:TIM、DMA、ADCEXTI支持的外部中断/事件请求

3.2 主要特征

F1/F4/F7系列: 每条EXTI线都可以单独配置:选择类型(中断或者事件)、触发方式(上升沿,下降沿或者双边沿触发)、支持软件触发、开启/屏蔽、有挂起状态位

3.3工作原理

image.png

4. EXTI和IO映射关系

4.1 AFIO简介

  1. Alternate Function lO,即复用功能IO,主要用于重映射和外部中断映射配置
  2. AFIO作用
  • 调试IO配置
  • 重映射配置
  • 外部中断配置  AFIO_EXTICR1~4,配置EXTI中断线0 ~ 15对应具体哪个IO口
  1. 使能AFIO时钟  _HAL_RCC_AFlO_CLK_ENABLE();
  2. 对应关系

image.png

5. 使用中断

image.png

6. HAL库中断回调处理机制介绍

image.png