在学习 51 单片机时,我们就接触过中断,中断其实就是当 CPU 执行程序时,由于发生了某种随机的事件(外部或内部),引起 CPU 暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程就称为中断,引发中断地称为中断源。比如:看电视时突然门铃响,那么门铃响就相当于中断源。有些中断还能够被其他高优先级的中断所中断,那么这种情况又叫做中断的嵌套。中断示意图如图 17.1.1 所示:

雷小天博客

Crotex-M3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断。但 STM32 并没有使用 M3 内核的全部东西,而是只用了它的一部分。STM32F10x 芯片有 84 个中断通道,包括 16 个内核中断和 68 个可屏蔽中断,对于STM32F103系列芯片只有60个可屏蔽中断,在 STM32F107 系列才有 68 个。除了个别异常的优先级被定死外,其它异常的优先级都是可编程的。这些中断通道已按照不同优先级顺序固定分配给相应的外部设备。从 STM32F10x 中文参考手册的中断向量表可以知道具体分配到那些外设,这里只截取一部分,如需了解更详细可参考《STM32F10x 中文参考手册》-9 中断和事件章节内容,中断向量表如图 17.1.2 所示:

图17.1.2中断向量表

雷小天博客

图17.1.2中断向量表