由于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
所谓嵌套,便是主优先级高的能够打断主优先级低的中止的履行(嵌套)。