NVIC:
M3 内核支持 256 个中断, 16 个系统中断和 240 个外部中断。其中F103系列有10 个系统中断和 60个外部中断以及16个中断优先级。
ISER[8]:(Interrupt Set Enable Registers中断使能寄存器)。256 个中断用 8 个 32 位寄存器来控制,每个位控制一个中断。F103可屏蔽中断只有60个,所以有用的就两个(ISER[0]和ISER[1]),表示 64 个中断。而 F103 只用了其中的 60 个。使能某个中断,置相应的 ISER 位为 1。而 ICER 用来清除中断位,而不是向 ISER 写 0 来清除,是因为 NVIC 的这些寄存器都是写 1 有效的,写 0 是无效的。
ISPR[8]:(nterrupt Set Pending Registers中断使能挂起控制寄存器)。置 1,可以将正在进行的中断挂起,而执行同级或更高 级别的中断。ICPR作用与 ISPR 相反。
IABR[8]
:(
Interrupt Active Bit Registers
中断激活标志位寄存器)。为 1
,表示该位所对应的中断正在被执行。这是一个只读寄 存器,通过它可以知道当前在执行的中断是哪一个。在中断执行完了由硬件自动清零。
IP [240]
:(
Interrupt Priority Registers
中断优先级控制的寄存器)。IP 寄存器组由
240
个
8bit
的寄存器组成,每个可屏蔽中断占用
8bit
,可表示
240
个可屏蔽中断。而
F103 只用到了其中的 60
个。
IP[59]~IP[0]
分别对应中断
59~0
。而每个可屏蔽中断占用的
8bit
并没有 全部使用,而是只用了高 4 位bit[7
:
4]。这 4
位代表16个中断优先级,又分为抢占优先级和子优先级。抢占优先级在前,子优先级在后。而这两个优先级各占几个位又要根据 SCB->AIRCR 中的中断分组设置来决定。
F103 将中断分为
5
个组,
分组的设置是由 SCB->AIRCR [10
:
8]来定义的
EXT1_FTSR1
EXT1:
EXT1_FTSR1