STM32 中断优先级相关概念与使用笔
记
上海 华东师范大学 通信工程系 ma-
chao
一、基本概念
1.ARM cortex_m3 内核支持 256 个中断(16 个内核+240 外部)和可编程 256 级
中 断 优 先 级 的 设 置 , 与 其 相 关 的 中 断 控 制 和 中 断 优 先 级 控 制 寄 存 器
( NVIC 、 SYSTICK 等 ) 也 都 属 于 cortex_m3 内 核 的 部 分 。 STM32 采 用 了
cortex_m3 内核,所以这部分仍旧保留使用,但 STM32 并没有使用 cortex_m3 内核全
部的东西(如内存保护单元 MPU 等),因此它的 NVIC 是 cortex_m3 内核的 NVIC
的子集。
2.
STM32
目前支持的中断共为 84 个(16 个内核+68 个外部),和 16 级可编程中断优先
级 的设置(仅使用中断优先级设置 8bit 中的高 4 位,见后面解释)。《参考最新 101xx-
107xx
STM32
Reference manual, RM0008》。
3 “ ”.以下主要对 外部中断通道 进行说明。
对于 cortex_m3 内核所支持的 240 “ ”个外部中断,我在这里使用了 中断通道 这个
概 念,因为尽管每个中断对应一个外围设备,但该外围设备通常具备若干个可以引起中断
“ ”的 中断源或中断事件。而该设备的所有的中断都只能通过该指定的 中断通道 向内核申请
“ ” 中断。因此,下面关于中断优先级的概念都是针对 中断通道 的。当该中断通道的优先
级
确定后,也就确定了该外围设备的中断优先级,并且该设备所能产生的所有类型的中断,
都享
有相同的通道中断优先级。至于该设备本身产生的多个中断的执行顺序,则取决于用 户的
中断服务程序。
4. STM32 可以支持的 68 个外部中断通道,已经固定的分配给相应的外部设备。每个
中断 通道都具备自己的中断优先级控制字节 PRI_n(8 位,但在 STM32 中只使用 4
位,高 4 位有 效),每 4 个通道的 8 位中断优先级控制字(PRI_n)构成一个 32 位的优先
级寄存器(Priority Register)。68 个通道的优先级控制字至少构成 17 个 32 位的优先
级寄存器,它们是 NVIC 寄存器中的一个重要部分。
5.对于这 4bit 的中断优先级控制位还必须分成 2 组看:从高位开始,前面是定义抢先式
优 先级的位,后面用于定义子优先级。4bit 的分组组合可以有以下几种形式:
编 号 分配情况
7 0:4 无抢先式优先级,16 个子优先级
6 1:3 2 个抢先式优先级,8 个子优先级
5 2:2 4 个抢先式优先级,4 个子优先级
4 3:1 8 个抢先式优先级,2 个子优先级
3/2/1/0 4:0 16 个抢先式优先级,无子优先级
6.在一个系统中,通常只使用上面 5 种分配情况的一种,具体采用哪一种,需要在初始化
时写入到一个 32 位寄存器 AIRC(Application Interrupt and Reset Control
Register)
评论0
最新资源