当前位置: 首页 > news >正文

中断相关操作函数HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()

文章目录

  • HAL_NVIC_SetPriority():设置中断优先级
  • HAL_NVIC_EnableIRQ():使能中断
  • 结束

HAL_NVIC_SetPriority():设置中断优先级

HAL_NVIC_SetPriority()函数是一个用于设置中断优先级的函数,其定义如下:

void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority);

其中,参数含义如下:

  • IRQn:指定要设置优先级的中断号,类型为IRQn_Type,定义在stm32f4xx.h头文件中;
  • PreemptPriority:指定抢占优先级,取值范围为0~15,其中0表示最高优先级,15表示最低优先级;
  • SubPriority:指定响应优先级,取值范围为0~15,其中0表示最高优先级,15表示最低优先级。
    函数作用:

该函数用于设置指定中断的抢占优先级和响应优先级,这两个优先级共同决定了中断的优先级。在中断发生时,系统会优先处理优先级高的中断,如果有多个中断的优先级相同,则按照优先级高低的顺序依次处理。

要使用 HAL_NVIC_SetPriority(),您需要提供中断号和优先级作为参数。 例如,要设置 EXTI 线路 0 的中断优先级,您可以使用以下代码:

HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);

在这个例子中,第一个参数是中断号(EXTI0_IRQn),第二个参数是抢占优先级(0),第三个参数是子优先级(0)。

请注意,可以根据系统要求配置不同的优先级。 因此,对于中断优先级配置的细节,参考具体微控制器的参考手册是很重要的。

HAL_NVIC_EnableIRQ():使能中断

HAL_NVIC_EnableIRQ() 函数是 STM32 HAL 库中的一个函数,用于使能 NVIC(Nested Vector Interrupt Controller)中特定的中断线。

函数原型为:

void HAL_NVIC_EnableIRQ(IRQn_Type IRQn);

其中,IRQn 参数为需要使能的中断线对应的枚举类型。

函数作用是将 IRQn 对应的中断线的中断使能位设置为 1,从而使该中断线的中断能够被触发。

以下是该函数的详细讲解,附带中文注释:

/*** @brief  使能指定的中断线* @param  IRQn: 中断线对应的枚举类型* @retval 无*/
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
{/* 对于 Cortex-M 系列的处理器,NVIC 的寄存器可以通过内存映射的方式访问 *//* NVIC_ISER 寄存器用于使能中断线,其每个位对应一个中断线,设置为 1 表示对应的中断线使能 *//* IRQn 是一个枚举类型,其值对应了中断线的编号,可以直接作为 NVIC_ISER 寄存器中的位偏移量 *//* 在 STM32 HAL 库中,使用了 CMSIS 标准库提供的宏来访问 NVIC_ISER 寄存器 *//* 以下语句等价于 NVIC->ISER[IRQn >> 5] = (uint32_t)(1 << (IRQn & 0x1F)); *//* 该语句将 IRQn 对应的中断线的中断使能位设置为 1,从而使该中断线的中断能够被触发 */__HAL_NVIC_ENABLE_IRQ(IRQn);
}

需要注意的是,该函数只负责使能中断线,不会对中断服务函数进行注册或配置。在使用该函数之前,需要先通过其他手段配置好对应中断线的优先级。

结束

如果对你有帮助,点赞支持一下吧。
转载联系作者。

相关文章:

中断相关操作函数HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()

文章目录HAL_NVIC_SetPriority()&#xff1a;设置中断优先级HAL_NVIC_EnableIRQ()&#xff1a;使能中断结束HAL_NVIC_SetPriority()&#xff1a;设置中断优先级 HAL_NVIC_SetPriority()函数是一个用于设置中断优先级的函数&#xff0c;其定义如下&#xff1a; void HAL_NVIC_…...

企业增长秘诀丨设立优质的帮助中心,加深用户产品使用深度,促进产品转化

客户的留存问题一直备受企业关注&#xff0c;留存率的高低反应了产品的真实状况&#xff0c;将直接影响企业后期的发展规划。下文将为大家剖析下产品中客户的转化流程&#xff0c;以及如何提高产品的使用深处与复购率。 产品中&#xff0c;从客户生命周期角度&#xff0c;可分…...

3.OSPF与BGP的联动

14.3实验3&#xff1a;OSPF与BGP联动配置 实验目的实验拓扑实验步骤 配置IP地址 AR1的配置 <Huawei>system-view Enter system view, return user view with CtrlZ. [Huawei]undo info-center enable Info: Information center is disabled. [Huawei]sysname AR1 …...

机器学习算法——决策树详解

文章目录前言&#xff1a;决策树的定义熵和信息熵的相关概念信息熵的简单理解经典的决策树算法ID3算法划分选择或划分标准——信息增益ID3算法的优缺点C4.5算法信息增益率划分选择或划分标准——Gini系数&#xff08;CART算法&#xff09;Gini系数计算举例CART算法的优缺点其他…...

配置Jenkins

目录 一.前言 1.1简介 1.2工作步骤图 二.配置jenkins部署项目 2.1项目新建 2.2jenkinsfile文件如下 三.jenkins工作台配置 3.1.点击新建item进入新建页面,输入任务名称,选择pipeline 3.2.选择第二个配置 3.4将ideal中jenkinsfile文件的路径粘入脚本路径中 3.5启动项目…...

【STL三】序列容器——array容器

【STL三】序列容器——array一、array简介二、头文件三、模板类四、成员函数1、迭代器2、元素访问3、容量4、操作五、demo1、容量&#xff08;不使用迭代器&#xff09;2、使用迭代器3、元素访问 at()、front()、back()、data()一、array简介 array 容器是 C 11 标准中新增的序…...

【STL四】序列容器——vector容器

【STL容器】序列容器——vector容器一、简介二、头文件三、模板类四、成员函数1、迭代器2、元素访问3、容量4、修改操作五、demo1、容量reserve、capacity、shrink_to_fit2、修改操作pop_back()、push_back3、修改操作insert()4、修改操作emplace()5、修改操作erase()、swap()、…...

4年功能测试,我一进阶python接口自动化测试,跳槽拿了20k......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 很多人在这求职市场…...

基于Pytorch的可视化工具

深度学习网络通常具有很深的层次结构&#xff0c;而且层与层之间通常会有并联、串联等连接方式。当使用PyTorch建立一个深度学习网络并输出文本向读者展示网络的连接方式是非常低效的&#xff0c;所以需要有效的工具将建立的深度学习网络结构有层次化的展示&#xff0c;这就需要…...

XCPC第十一站,带你学会图论基本算法

我们约定&#xff1a;以下n表示点的数目&#xff0c;m表示边的数目。 引子1——邻接表存储图的方法&#xff08;&#xff09;&#xff08;暂时不考虑重边和自环&#xff09; 现在我们有n个点&#xff08;编号为1~n&#xff09;和m条边&#xff0c;要用数组存储它们&#xff0c…...

【MySQL】1 MySQL的下载、安装与配置|提供安装包

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 目前,已开了以下专栏,欢迎关注与指导 1️⃣Java基础知识系统学习(持续更文中…) 2️⃣UML(已更完) 3️⃣MySQL(持续更文中…) MYSQL的下载、安装与配置1.下载MySQL5.71.1安装包的获…...

Redis 事务

目录Redis 事务一、Redis事务的概念&#xff1a;二、redis事务提出的逻辑&#xff1a;三、redis事务的基本操作四、事务的执行流程五、redis锁六、redis分布式锁Redis 事务 一、Redis事务的概念&#xff1a; Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令&…...

【linux】:进程控制

文章目录 前言一、什么是写时拷贝二、进程控制 1.进程终止2.进程等待三丶进程程序替换总结前言 了解上一篇文章中的进程地址空间后&#xff0c;我们再来说说进程控制的概念&#xff0c;进程控制我们需要搞清楚三个问题&#xff1a;如何进程终止&#xff0c;如何解决僵尸进程问…...

在recyclerview中使用其item布局的ViewBinding类需要注意的问题

问题描述 最近在使用RecycerView的瀑布流布局&#xff0c;我想直接用ViewBinding取得item中的一个TextView然后根据position进行赋值。 比如我点击测试标题2&#xff0c;它在日志中应该能打印出测试标题2才对。 但是他却打印出“测试标题0” 按理来说标题应该更点击的位置对…...

基于EB工具的TC3xx_MCAL配置开发05_ADC模块硬件Pwm触发Demo配置

目录 1.概述2. Pwm相关配置2.1 PWM->General配置2.2 PWM->PwmChannel配置2.2.1 Reference Pwm通道配置2.2.2 触发ADC采集的Pwm通道配置3. ADC相关配置3.1 AdcHwExtTrigSelect配置4. MCU相关配置4.1 GTM配置4.1.1 McuGtmTomAllocationConf配置4.1.2 GtmTriggerForAdc配置1…...

Qt示例3:用Qt画一个温度计

示例1 以下是用Qt绘制一个简单的温度计的示例代码&#xff1a; #include <QPainter> #include <QWidget> #include <QApplication> class Thermometer : public QWidget { public:Thermometer(QWidget *parent 0); protected:void paintEvent(QPaintEvent …...

全卷积网络FCN

这里写目录标题全卷积网络FCN1、FCN2、FCN上采样3、 FCN具体实现过程转置卷积全卷积网络FCN 引用&#xff1a;http://t.csdn.cn/pDcjL 1、FCN FCN: FCN是对图像进行像素级的分类&#xff08;也就是每个像素点都进行分类&#xff09;&#xff0c;从而解决了语义级别的图像分割…...

【Linux】基础IO流(上)

文章目录1. 预备知识2. 回忆C接口fopenfputsfprintfsnprintf追加方式—— a以读方式—— r3.操作系统如何进行读写文件操作open操作系统是如何让用户给自己传递标志位的理解标记位的问题新创建文件权限不正确解决 umask的权限write默认不会对原始文件清空系统层面追加系统层面 …...

【C++】类和对象三大特性--多态

文章目录1. 多态的基本概念2. 多态的定义及实现2.1多态的构成条件2.2 虚函数2.3虚函数的重写2.4 虚函数不能重写和检查是否重写 &#xff08;C11 &#xff09;2.5 重载、覆盖(重写)、隐藏(重定义)的对比3. 纯虚函数和抽象类3.1 概念3.2 接口继承和实现继承4.多态的实现原理4.1虚…...

【微前端】qiankun + vite + vue3

专栏&#xff1a; 【微前端】什么是微前端【微前端】qiankun【微前端】qiankun vite vue3 一、整体结构 在 qiankun 体系下&#xff0c;一个微前端工程包含一个主应用和多个子应用。本质上&#xff0c;每个工程&#xff08;主应用&#xff09;都可以单独开发、运行。 1.1…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志&#xff0c;定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...