中断:就是当 CPU 执行程序时,由于发生了某种随机的事件(外部或内部),引起 CPU 暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程就称为中断。
可以这样理解 : 一个人正在家玩电脑,这时有人来敲门,这个敲门的信号就可以理解为中断。而不使用中断的话,你就要一会看看门口有人没。你听到敲门的信号,接下来去做的事就是在回调函数中写的。
中断源:引发中断信号来源称为中断源。
中断的嵌套:有些中断还能够被其他高优先级的中断所中断,那么这种情况又叫做中断的嵌套
中断通道:是传递、处理中断的信息通道。中断通道对应有唯一的中断号、中断优先级、中断向量、服务程序
STM32 中断分类
- CPU中断(15个通道)
包括非屏蔽中断、异常、指令中断、复位。 - 设备中断(43~68个通道)
指STM32微控制器片内所有设备的中断,其数量与型号有关,对于大容量(hd)类型,共60个。 - 外部中断(16个中断源、7个通道)
16个中断源,通过7个端口(PA、PB、PC、PD、PE、PF、PG)引脚接外部设备信号。
7个中断通道:来自外部引脚。另外4个中断源连接的是内部设备,用于检测电压、RTC闹钟、两个唤醒CPU,且各占1个通道。
使用 嵌套向量中断控制器(NVIC)进行控制
优先级规则
一般设置中断需要设置优先级(主优先级也叫抢占优先级,子优先级 )
- 每个中断源都需要被指定这两种优先级。
- 高抢占优先级的中断可以打断低抢占优先级的中断服务;相同子优先级的中断之间不能构成中断嵌套。
- 子优先级不能够构成中断嵌套;抢占优先级相同,而子优先级不同的中断同时发生时,首先响应子优先级高的中断。
- 抢占优先级和子优先级相同的中断同时发生时,首先响应编号小的中断。
可以使用cubemx进行设置 优先级
应用
在串口通信中 使用了中断控制串口接受
可以参考应用