NVIC 简介
NVIC 是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是内核里面的一个外设。
如果医院只有医生的话,当看病的人很多时,医生就得安排一下先看谁,后看谁,如果有紧急的病人,那还得让紧急的病人最先来,这个安排先后次序的任务很繁琐,会影响医生看病的效率。
所以医院就安排了一个叫号系统,来病人了统一取号,并且根据病人的等级,分配一个优先级,后叫号系统看一下现在在排队的病人,优先叫号紧急的病人
最终叫号系统给医生输出的就是一个一个排好队的病人,医生就可以专心看病了
这个叫号系统在STM32里就是NVIC
抢占优先级和响应优先级
为了处理不同形式的优先级,STM32的NVIC可以对优先级进行分组,分为抢占优先级和响应优先级,那这两种形式的优先级有什么区别的
我们还来看一下病人叫号的这个例子
对于紧急的病人,其实有两种形式的优先
响应优先级
一种是,上一个病人在看病,外面排队了很多病人,当上一个病人看完后,紧急的病人即使是后来的,也会最先进去看病,这种相当手插队的优先级,就叫响应优先级,响应优洗级高的。可以插队提前看病
抢占优先级
另外如果这个病人更加紧急,并且此时已经有人在看病了,那他还可以不等上个人看完,直接冲到医生的屋里,让上一个病人先靠边站,先给他先看病,等他看完了,然后上一个病人再继续,上一个病人结束了,叫号系统再看有没有人来,这种形式的优先就是中断嵌套,这种决定是不是可以中断嵌套的优先级,就叫抢占优先级