NVIC中断优先级分组
CM3内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。
STM32并没有使用CM3内核的全部东西,而是只用了它的一部分。
STM32有84个中断,包括16内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。
STM32F103系列上面,又只有60个可屏蔽中断(在107系列才有68个)。
中断管理方法
首先,对STM32中断进行分组,组0-4,对每个中断设置一个抢占优先级和一个响应优先级。分组配置是在寄存器SCB->AIRCR中配置。
抢占优先级&响应优先级的区别
高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。
抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。
抢占优先级相同的中断,当两个中断相同时发生的情况下,哪个响应优先级高,哪个先执行。
如果连个中断的抢占优先级和响应优先级都一样的话,则看哪个中断先发生就执行。
特别说明:一般情况下,系统代码执行过程中,只设置一次中断优先级分组,比如分组2,设置好分组后一般不会再改变分组。随意改变分组会导致中断管理混乱,程序出现意想不到的执行结果。