NVIC中断分组和配置

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_00 级抢占优先级0-15 级子优先级0bit 用于抢占优先级4bit 全用于子优先级
NVIC_PriorityGroup_10-1 级抢占优先级0-7 级子优先级1bit 用于抢占优先级3bit 用于子优先级
NVIC_PriorityGroup_20-3 级抢占优先级0-3 级子优先级2bit 用于抢占优先级2bit 用于子优先级
NVIC_PriorityGroup_30-7 级抢占优先级0-1 级子优先级3bit 用于抢占优先级1bit 用于子优先级
NVIC_PriorityGroup_40-15 级抢占优先级0 级子优先级4bit 全用于抢占优先级0bit 用于子优先级

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/812502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

syscall的检测与绕过

普通调用 #include <iostream> #include <windows.h>int main() {unsigned char shellcode[] "";void* exec VirtualAlloc(0, sizeof shellcode, MEM_COMMIT,PAGE_EXECUTE_READWRITE);memcpy(exec, shellcode, sizeof shellcode);CreateThread(NULL, …

mybaits(8)-缓存机制

缓存机制 1、mybatis缓存2、一级缓存2.1 开启一级缓存2.2 一级缓存失效 3、二级缓存3.1 开启二级缓存3.2 二级缓存什么时候失效3.3 二级缓存的相关配置 4、MyBatis集成EhCache 1、mybatis缓存 缓存&#xff1a;cache 缓存的作用&#xff1a;通过减少IO的方式&#xff0c;来提高…

vue不正经指南

vue不正经指南 环境配置 asdf plugin add nodejs asdf install nodejs 16.20.2创建项目 npm create vitelatest my-vue-app -- --template vue npm install npm run dev修改调试端口 修改vite.config.js,修改如下所示&#xff0c;添加server的host和port。 import { defi…

Spring源码复习之AnnotatedBeanDefinitionReader

文章目录 一、简单描述二、源码分析三、最佳实践一、简单描述 AnnotatedBeanDefinitionReader是一个用于读取和解析带有注解的Bean定义的类,它主要用于基于注解的配置方式,允许开发者将Java类标记为Spring组件,从而让Spring容器自动扫描和注册这些组件,而不需要显式配置这…

macOS idea配置mysql

一、首先查看mysql是否配置好&#xff1a; 打开终端输入&#xff1a;mysql -u root -p&#xff1b;&#xff0c;如果是没有成功&#xff0c;则进行配置&#xff0c;配置过程如下&#xff1a; 1、输入&#xff1a;vim ~/.bash_profile 2、 输入 “i” 进入 insert 模式&#…

2024妈妈杯mathorcup数学建模C题 物流网络分拣中心货量预测及人员排班

一、数据预处理 数据清洗是指对数据进行清洗和整理&#xff0c;包括删除无效数据、缺失值填充、异常值检测和处理等。数据转换是指对数据进行转换和变换&#xff0c;包括数据缩放、数据归一化、数据标准化等。数据整理是指对数据进行整理和归纳&#xff0c;包括数据分组、数据聚…

面向对象的架构三段式写一篇论文

在面向对象的软件架构中&#xff0c;系统设计通常遵循一种“三段式”方法论&#xff0c;以确保软件的可扩展性、可维护性和灵活性。这种方法论包括三个核心阶段&#xff1a;概念化、详细设计和实现。通过这三个阶段的逐步深入&#xff0c;开发团队可以有效地应对复杂系统的挑战…

PDF转TXT ChatGPT编程

1.目的 在Z-library找到一本书&#xff0c;只不过是PDF格式的&#xff0c;看的时候体验不好&#xff0c;还没有办法保存记录&#xff0c;就想着能不能转成txt格式放到手机自带的小说软件中看。 不想去网上找相关的软件&#xff0c;可以还需要付钱&#xff0c;所以尝试用ChatGP…

springcloud-fegin 组件调用

一、Feign 概述 Feign是Netflix开发的声明式、模板化的HTTP客户端&#xff0c; Feign可以帮助我们更快捷、优雅地调用HTTP API。 在Spring Cloud中&#xff0c;使用Feign非常简单——创建一个接口&#xff0c;并在接口上添加一些注解&#xff0c;代码就完成了。Feign支持多种…

R: 支持向量机(Support Vector Machine,简称SVM)

在数据科学和机器学习领域中&#xff0c;支持向量机&#xff08;Support Vector Machine&#xff0c;简称SVM&#xff09;是一种强大的监督学习算法&#xff0c;常用于分类和回归分析。它的优点之一是可以适用于复杂的数据集&#xff0c;并且在高维空间中表现良好。在本文中&am…

【示例】MySQL-MySQL中常见的锁

前言 本文主要讲述MySQL中常见的锁。 总结 | 各类别锁的名字 锁级别锁名字解释全局锁read lock全局锁只有可读锁表级锁 - 表锁read lock 表共享读锁write lock 表独占写锁表级锁 - 元数据锁&#xff08;meta data lock&#xff0c;MDL&#xff09;SHARED_READ_ONLYSHARED_NO…

OSPF实验

需求&#xff1a; 1、R1-R3为区域0&#xff0c;R3到R4为区域1&#xff1b;其中R3的环回也在区域0&#xff0c;P1-R3分别有一个环回接口 2、R1-R3 R3为DR设备&#xff0c;没有BDR 3、R4环回地址已固定&#xff0c;其他所有网段使用192.168.1.0/24进行合理分配 4、R4环回不能…

【golang】动态生成微信小程序二维码实战下:golang 生成 小程序二维码图片 并通过s3协议上传到对象存储桶 | 腾讯云 cos

项目背景 在自研的系统&#xff0c;需要实现类似草料二维码的功能 将我们自己的小程序&#xff0c;通过代码生成相想要的小程序二维码 代码已经上传到 Github 需要的朋友可以自取 https://github.com/ctra-wang/wechat-mini-qrcode 一、生成Qrcode并提交到对象存储 通过源生A…

Kubernetes(k8s):深入理解 Kubernetes 中的污点(Taints)与容忍度(Tolerations)

Kubernetes&#xff08;k8s&#xff09;&#xff1a;深入理解 Kubernetes 中的污点&#xff08;Taints&#xff09;与容忍度&#xff08;Tolerations&#xff09; 1、污点&#xff08;Taints&#xff09;2、容忍度&#xff08;Tolerations&#xff09;3、示例演示-测试污点的具…

【C/C++基础知识】const 关键字

文章目录 Q&A and 前言const 修饰基本变量初始化const 对象仅在文件内有效 const 的引用应用 指针与 constconst 修饰类成员函数参考写在最后 Q&A and 前言 Q&#xff1a;简要说一说 C 中的 const 关键字&#xff0c;含义以及常见的使用位置 A&#xff1a;const 是 C…

自动化测试(selenium篇)

这次我们来介绍selenium 我们主要来讲解这几个要点 1.什么是自动化测试 2.什么是selenium 3.为什么来讲selenium 4.selenium的环境搭建 5.selenium的 API 1.什么是自动化测试 自动化测试指软件测试的自动化&#xff0c;在预设状态下运行应用程序或者系统&#xff0c;预设条…

蓝宝石衬底材料具有广阔消费市场 行业景气度良好

蓝宝石衬底材料具有广阔消费市场 行业景气度良好 衬底是由半导体单晶材料制造而成的晶圆片&#xff0c;既可以直接进入晶圆制造环节生产半导体器件&#xff0c;也可以进行外延工艺加工生产外延片&#xff0c;是电子元件的主体结构和支撑载体。蓝宝石衬底材料具有良好的透光性、…

burpsuite最新版2024.3.1安装

burpsuite最新版安装 环境 windows jdk22 BurpLoaderKeygen.jar burpsuite profression 2024.3.1 链接 链接&#xff1a;https://pan.baidu.com/s/1N6nggZZezg8y1FHpgwJmeg 提取码&#xff1a;n6uqjdk以及破戒方式这里不做介绍 注意事项 使用BurpLoaderKeygen.jar 破解之后…

Windows 2003 R2与Windows 2022建立域信任报错:本地安全机构无法跟域控制器获得RPC连接。请检查名称是否可以解析,服务器是否可用。

在Windows Server 2003 R2与Windows Server 2022之间建立域信任时遇到“本地安全机构无法与域控制器获得RPC连接”的错误&#xff0c;可能是由于以下几种原因&#xff1a; DNS 解析问题&#xff1a; 确保源域和目标域的DNS配置正确&#xff0c;能够互相解析对方的域名和IP地址。…

多语言婚恋交友APP开发流程一览

近年来&#xff0c;随着全球化的发展和人们对跨文化交流的需求增加&#xff0c;多语言婚恋交友APP的需求逐渐增长。开发这类APP需要考虑到不同语言和文化下用户的需求&#xff0c;涉及到一系列独特的流程和挑战。本文将从专家角度为您解析多语言婚恋交友APP的开发流程&#xff…