stm32 nvic的理解

   学了stm32的nvic,中断嵌套,拿来与大家分享分享!

因为stm32有43个中断源,当同时用到多个中断时,就要指定其中断的优先级了。

 nvic即是中断向量的控制!由SCB->AIRCR寄存器控制,SCB->AIRCR中目前只用到4位,也就是最高能有16级中断嵌套,如果全使用的话可以达到256级

   (1);选用优先级分组(实际就是选几位用于主优先级几位用于辅优先级)

group0:选0位用于主优先级,4位用于辅优先级。

group1:选1位用于主优先级,3位用于辅优先级。

group2:选2位用于主优先级,2位用于辅优先级。

group3:选3位用于主优先级,1位用于辅优先级。

group4:选4位用于主优先级,0位用于辅优先级。

 

(2)这样打个比方不恰当的比方吧,如果把一个中断比作一个人,则他的国籍就是主优先级,省籍就是辅优先级。主优先级高的可以

打断主优先级低的中断(如主优先级0(我们叫他美国)的中断高于主优先级2(我们叫他伊拉克)的中断,则主优先级为0的中断(美国人)可以

打断主优先级为2的中断(伊拉克人))。而对于辅优先级,我们称之为省籍,比如两个人都是中国人(主优先级),一个是北京的(假设辅优先级为0

,高),一个是山西的(省籍为辅优先级,假设为2,低),则北京人不能去打断山西人做的事,但是,如果有同一个机会,则应该先给北京人,即

当同时要响应两个这两个主优先级一样的中断时,辅助优先级高的先响应。如果两个中断的主,辅优先级都一样时,则在中断向量表中靠前的

先响应。

  (3)group4可以最多执行15个嵌套和一个中断,group3可以最多执行7个嵌套和一个中断,依次类推。

  所以,

group4可以指定主优先级的范围为0——15,辅优先级的范围为0

group3可以指定主优先级的范围0———7,辅优先级的范围为0----1

group2可以指定主优先级的范围0———3,辅优先级的范围为0----3

group1可以指定主优先级的范围0———1,辅优先级的范围为0----7

group1可以指定主优先级的范围0,辅优先级的范围为0----15

所谓嵌套,即是主优先级高的可以打断主优先级低的中断的执行(嵌套)。

 

 

你可能感兴趣的:(stm32 nvic的理解)