NVIC中断分组和配置

NVIC中断分组合配置

NVIC是啥?

NVIC 的全称是 Nested vectored interrupt controller,即嵌套向量中断控制器。
对于 M3/M4/M7 内核的 MCU,每个中断的优先级都是用寄存器中的 8 位来设置的。8 位的话就可
以设置 2^8 = 256 级中断,实际中用不了这么多,所以芯片厂商根据自己生产的芯片做出了调整。比如
ST 的 STM32F1xx,F4xx 和 H7 只使用了这个 8 位中的高四位[7:4],低四位取零,这样 2^4=16,只能
表示 16 级中断嵌套。
对于这个 NVIC,有个重要的知识点就是优先级分组、抢占优先级和子优先级。STM32F1xx,F4xx
和 H7 都是只使用了这个 8 位寄存器的高四位[7:4]。

优先级分组 抢占优先级 子优先级 高 4 位使用情况描述
NVIC_PriorityGroup_0 0 级抢占优先级 0-15 级子优先级 0bit 用于抢占优先级4bit 全用于子优先级
NVIC_PriorityGroup_1 0-1 级抢占优先级 0-7 级子优先级 1bit 用于抢占优先级3bit 用于子优先级
NVIC_PriorityGroup_2 0-3 级抢占优先级 0-3 级子优先级 2bit 用于抢占优先级2bit 用于子优先级
NVIC_PriorityGroup_3 0-7 级抢占优先级 0-1 级子优先级 3bit 用于抢占优先级1bit 用于子优先级
NVIC_PriorityGroup_4 0-15 级抢占优先级 0 级子优先级 4bit 全用于抢占优先级0bit 用于子优先级

从上面的表格可以看出,STM32 支持 5 种优先级分组。系统上电复位后,默认使用的是优先级分组 0,
也就是没有抢占式优先级,只有子优先级。关于这个抢占优先级和子优先级有几点一定要说清楚。
⚫ 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断服务程序执行过程中被响应,即中
断嵌套,或者说高抢占式优先级的中断可以抢占低抢占式优先级的中断的执行。
⚫ 在抢占式优先级相同的情况下,有几个子优先级不同的中断同时到来,那么高子优先级的中断优
先被响应。
⚫ 在抢占式优先级相同的情况下,如果有低子优先级中断正在执行,高子优先级的中断要等待已被
响应的低子优先级中断执行结束后才能得到响应,即子优先级不支持中断嵌套。
⚫ Reset、NMI、Hard Fault 优先级为负数,高于普通中断优先级,且优先级不可配置。
⚫ 初学者还有一个比较纠结的问题,就是系统中断(比如:PendSV,SVC,SysTick)是不是一定比外部中断(比如 SPI,USART)要高。答案:不是的,它们是在同一个 NVIC 下面设置的。
掌握了这些基础知识基本就够用了。另外特别注意一点,配置抢占优先级和子优先级,它们合并成的4bit 数字的数值越小,优先级越高,这一点千万不要搞错了。

相关推荐

  1. NVIC中断分组配置

    2024-04-13 06:22:03       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-13 06:22:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-13 06:22:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-13 06:22:03       87 阅读
  4. Python语言-面向对象

    2024-04-13 06:22:03       96 阅读

热门阅读

  1. 多线程交替打印

    2024-04-13 06:22:03       120 阅读
  2. 简单了解仿真测试

    2024-04-13 06:22:03       37 阅读
  3. 【技术支持】禁止html中referer

    2024-04-13 06:22:03       42 阅读
  4. .NET 设计模式—策略模式(Strategy Pattern)

    2024-04-13 06:22:03       39 阅读
  5. Docker 安装Kali Linux作为攻防演练的工具

    2024-04-13 06:22:03       55 阅读
  6. 设计模式-策略模式

    2024-04-13 06:22:03       40 阅读
  7. docker部署chatgpt步骤

    2024-04-13 06:22:03       44 阅读
  8. 数据结构_基于链表的通讯录

    2024-04-13 06:22:03       46 阅读
  9. ChatGPT让论文写作更高效,让学术研究更精彩

    2024-04-13 06:22:03       43 阅读
  10. Conda 常用命令总结

    2024-04-13 06:22:03       41 阅读
  11. ChatGPT:打破论文写作传统,开启智能时代

    2024-04-13 06:22:03       38 阅读