初出茅庐的小李第101篇博客之聊一聊NVIC

NVIC

NVIC的全称是Nested Vectored Interrupt Controller,即嵌套向量中断控制器。
对于M4内核的MCU每个中断的优先级都是用寄存器中的8位来设置的,8位的话就可以设置2^8 = 256级中断。但是实际中用不了这么多的中断优先级,所以芯片厂商根据自己生产的芯片做出了相应的调整。我们所熟知的STM32F4系列单片机也并没有使用CM4内核的全部东西,而是只用了它的一部分。例如STM32F40xx/STM32F41xx总共有92个中断,STM32F42xx/STM32F43xx则总共有96个中断。
这里就说一下STM32F40xx/STM32F41xx的92个中断,在这 92个中断里面包括10个内核中断和82个可屏蔽中断,具有16级可编程的中断优先级,而我们常用的就是也就是这82个可屏蔽中断。有关这些中断的描述可以在《STM32F4xx中文参考手册》Page234 的表
45中查看。

10个内核中断

在这里插入图片描述

82个可屏蔽中断

在这里插入图片描述
82个中断是从0开始排序,总共是0-81有82个。
单片机中这么多的中断如何管理呢?就好比我们有很多书要读,我们如何确定先读哪些再读哪些呢?这时候就需要我们对书籍进行分类,类似的单片机这么多中断也需要类似的操作来进行,这个操作就是中断分组。
中断分组如何分呢?
在STM32中,芯片厂商对中断进行了分组,分组的编号是0 1 2 3 4总共5组。同时,对每个中断设置一个抢占优先级和一个响应优先级值。分组的情况选择是由SCB->AIRCR寄存器的三个位控制的。三个位选择111 110 101 100 011 共5种情况。
在这里插入图片描述
4位抢占优先级的含义是抢占优先级有2^4 = 16种级别,这里体现了STM32具有16级可编程的中断优先级。
优先级的高低原则是:
高优先级的抢占优先级的中断可以打断正在进行的低抢占优先级中断。
抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。
抢占优先级相同的中断,
当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。
当两个中断的抢占优先级和响应优先级都形同的话,则看哪个中断先发生就先执行。
有这样的原则我们就可以对中断进行分组和分级,这样以来就可以合理的安排中断服务函数处理的先后顺序以及它们的轻重缓急。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值