1. 中断
1.1 概念
打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断
1.2 中断的作用和意义
- 实时控制
- 故障处理
- 数据处理
- 意义: 高效处理紧急程序,不会一直占用CPU资源
1.3 GPIO外部中断简图
2. NVIC
2.1 基本概念
- Nested vectored interrupt controller,嵌套向量中断控制器,属于内核(M3/4/7)
- NVIC支持:256个中断(16内核 + 240外部),支持:256个优先级,允许裁剪
- 中断向量表:定义一块固定的内存,以4字节对齐,存放各个中断服务函数程序的首地址
中断向量表定义在启动文件,当发生中断,CPU会自动执行对应的中断服务函数。
2.2 NVIC相关寄存器
- 中断使能寄存器(ISER)
- 中断除能寄存器(ICER)
- 应用程序中断及复位控制寄存器(AIRCR)
- 中断优先级寄存器(IPR)
2.3 NVIC工作原理
2.4 STM32中断优先级概念
- 抢占优先级(pre):高抢占优先级可以打断正在执行的低抢占优先级中断
- 响应优先级(sub):当抢占优先级相同时,响应优先级高的先执行,但是不能互相打断
- 抢占和响应都相同的情况下,自然优先级越高的,先执行
- 自然优先级:中断向量表的优先级
- 数值越小,表示优先级越高
2.5 STM32中断优先级分组
- 一个工程中,一般只设置一次中断优先级分组。
- 5个分组(0~4)
- 16个优先级(2^4)
2.6 STM32NVIC的使用
- 设置中断分组 AIRCR[10:8], HAL_NVIC_SetPriorityGrouping
- 设置中断优先级 IPRx bit[7:4], HAL_NVIC_SetPriority
- 使能中断 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工作原理
4. EXTI和IO映射关系
4.1 AFIO简介
- Alternate Function lO,即复用功能IO,主要用于重映射和外部中断映射配置
- AFIO作用
- 调试IO配置
- 重映射配置
- 外部中断配置 AFIO_EXTICR1~4,配置EXTI中断线0 ~ 15对应具体哪个IO口
- 使能AFIO时钟 _HAL_RCC_AFlO_CLK_ENABLE();
- 对应关系