实现目标
1、掌握STM32的中断知识
2、学会STM32CubeMX软件关于中断的配置
3、具体目标:1、外部中断检测按键,每按一次计一次数,满5次LED1状态取反。
一、中断概述
1.1、中断定义
CPU执行程序时,由于发生了某种随机的事件(包括外部或内部),让CPU暂时停下正在运行的程序,转而去执行一段处理事件的程序(中断服务子程序或中断处理程序),当这段程序执行完时(事件处理完时),程序又返回被停下的程序继续执行,这一过程称为中断。引发中断的称为中断源。中断可分为外部中断和内部中断。
中断程序执行中又出现了中断,那么这种情况又叫做中断嵌套。
1.2、中断的作用和意义
中断的最终目的是高效处理紧急程序,并且不会占用CPU资源。还有就是能实现程序的并行化,实现嵌入式系统进程之间的切换等。
- 实时控制:在确定的时间内对相应事件做出相应;例如:温度控制;
- 故障处理:检测到故障,需要第一时间进行处理;
- 数据传输:不确定数据何时会来,利用中断进行控制;
1.3、STM32的中断
STM32F10x芯片有84个中断通道,包括16个内核中断和68 个可屏蔽中断,这些中断通道已按照不同优先级顺序固定分配给相应的外部设备。
具体可参考:STM32F103的中文参考手册(9.1.2中断和异常向量)
二、 NVIC(中断向量控制器)
2.1 NVIC基本概念
NVIC英文全称是Nested Vectored Interrupt Controller,中文意思就是嵌套向量中断控制器,通俗的讲它就是一个开关与选择器。它属于M3内核的一个外设,控制着芯片的中断相关功能。M3 内核都是支持 256 个中断,其中包含了 16 个系统中断和 240 个外部中断,并且具有 256 级的可编程中断设置。
2.2、中断处理机制
工作过程:
对于外部产生的中断不管是串口、定时器、IIC还是EXTI ,GPIO都由做NVIC来管理,NVIC的主要功能可以概括为:1. 中断管理;2.支持异常及中断向量化处理;3.支持嵌套中断。
2.3、STM32中断优先级
当多个中断同时到来时,CPU该执行那个中断呢?这个时候就需要用到中断优先级,给中断的执行顺序排个序,优先级高的可以比优先级低的先执行,甚至优先级高的可以打断正在执行的优先级低的中断程序。
STM32F103芯片支持60个可屏蔽中断通道,每个中断通道都具备自己的中断优先级控制字节(8位,但是STM32F103中只使用4位,高4位有效),用于表达优先级的高4位又可以组成抢占式优先级和响应优先级,通常也把响应优先级称为“亚优先级”或“副优先级”,每个中断源都需要被指定这两种优先级。
NVIC_PriorityGroup |