1、NIVC
ARM Cortex-M3内核搭载了一个强大而方便的中断系统,称之为NVIC(嵌套向量中断控制器)。Cortex-M3支持256个“中断通道”(16 个异常+240 个中断)以及对应的可编程 256 级中断优先级设置。STM32虽然采用Cortex-M3内核,但是只使用了其中的84个“中断通道”(16 个异常+68 个中断)以及16 级中断优先级设置。
同时也记录下自己当时的一个插曲。
这个
TIM6_IRQn在《STM32固件库手册》中查NVIC_IRQChannel的取值是没有的,然后咨询下老师,如下回复再拐回头看下教程,着实一不一样
看来要不看最新的手册,要不就是直接参考头文件才行!
2、优先级及中断嵌套
优先级分为
抢占优先级和响应优先级。51所设置的优先级均属于抢占优先级,默认的便是响应优先级!
高抢占优先级可以嵌套低抢占优先级的中断。
两者抢占优先级相同,那么无论响应优先级是什么关系,这两者都没有嵌套关系。
假如两者同时发生,且抢占优先级相同,则根据响应优先级顺序执行;加入此时他们的相应优先级也相同,则根据中断清单表排位顺序执行,序号越小,对应优先级越高!
编程时需要注意:
首先要预先对程序的各个功能模块进行计算论证,开机初始化时一次性设置好优先级分组,以后就再也不动他了,避免同一个程序中使用多个优先级分组。