STM32 学习笔记(2):外部中断的使用 2011年3月20日 外部中断 中断对于开发嵌入式系统来讲的地位绝对是毋庸置疑的,在C51 单片机时代,一共只有5 个中断,其中2 个外部中断,2 个定时/计数器中断和一个串口中断,但是在STM32 中,中断数量大大增加,而且中断的设置也更加复杂。今天就将来探讨一下关于STM32 中的中断系统。 1 基本概念 ARM Coetex -M3 内核共支持 256 个中断,其中16 个内部中断,240 个外部中断和可编程的256 级中断优先级的设置。STM32 目前支持的中断共84 个(16个内部+68 个外部),还有16 级可编程的中断优先级的设置,仅使用中断优先级设置8bit 中的高 4 位。 STM32 可支持 68 个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字节 PRI_n(8 位,但是STM32 中只使用4 位,高 4 位有效),每 4 个通道的8 位中断优先级控制字构成一个32 位的优先级寄存器。68 个通道的优先级控制字至少构成 17 个32 位的优先级寄存器。 4bit 的中断优先级可以分成 2 组,从高位看,前面定义的是抢占式优先级,后面是响应优先级。按照这种分组,4bit 一共可以分成 5 组 第 0 组:所有4bit 用于指定响应优先级; 第 1 组:最高 1 位用于指定抢占式优先级,后面 3 位用于指定响应优先级; 第 2 组:最高 2 位用于指定抢占式优先级,后面 2 位用于指定响应优先级; 第 3 组:最高 3 位用于指定抢占式优先级,后面 1 位用于指定响应优先级; 第 4 组:所有4 位用于指定抢占式优先级。 所谓抢占式优先级和响应优先级,他们之间的关系是:具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。每一个中断源都必须定义 2 个优先级。 有几点需要注意的是: 1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果; 2)抢占式优先级别相同的中断源之间没有嵌套关系; 3)如果某个...