这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » KST-STM32学习之中断优先级与中断嵌套

共1条 1/1 1 跳转至

KST-STM32学习之中断优先级与中断嵌套

高工
2018-12-20 18:49:52     打赏

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所设置的优先级均属于抢占优先级,默认的便是响应优先级!


高抢占优先级可以嵌套低抢占优先级的中断。


两者抢占优先级相同,那么无论响应优先级是什么关系,这两者都没有嵌套关系。


假如两者同时发生,且抢占优先级相同,则根据响应优先级顺序执行;加入此时他们的相应优先级也相同,则根据中断清单表排位顺序执行,序号越小,对应优先级越高!


编程时需要注意:


首先要预先对程序的各个功能模块进行计算论证,开机初始化时一次性设置好优先级分组,以后就再也不动他了,避免同一个程序中使用多个优先级分组。


默认情况下,如何不设置中断优先级分组,则使用系统默认的优先级,即按照中断源清单的顺序执行。(没有抢占的概念,两者同时到来,谁的号小谁先执行!)。


具体的中断源清单可参考《STM32中文参考手册》9.1.2。


小结


①、系统运行开始的时候设置中断分组。


确定组号,也就是确定抢占优先级和子优先级的分配位数。调用函数为 NVIC_PriorityGroupConfig();


②. 设置所用到的中断的中断优先级别。


对每个中断调用函数为 NVIC_Init();




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]