关于HAL库外部中断的开关流程

通过HAL库配置好外部中断后,会生成如下代码:

static void MX_GPIO_Init(void)
{GPIO_InitTypeDef GPIO_InitStruct = {0};
/* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 *//* GPIO Ports Clock Enable */__HAL_RCC_GPIOD_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();/*Configure GPIO pin : PA3 */GPIO_InitStruct.Pin = GPIO_PIN_3;GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);/* EXTI interrupt init*/HAL_NVIC_SetPriority(EXTI3_IRQn, 0, 0);HAL_NVIC_EnableIRQ(EXTI3_IRQn);/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */
}

设置中断引脚
  GPIO_InitStruct.Pin = GPIO_PIN_3;

设置触发方式
  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;

设置有无上下拉电阻
  GPIO_InitStruct.Pull = GPIO_NOPULL;

初始化
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

设置中断优先级
  HAL_NVIC_SetPriority(EXTI3_IRQn, 0, 0);

中断使能
  HAL_NVIC_EnableIRQ(EXTI3_IRQn);

****因此我们要关闭中断只需要在想要关闭的地方写上

HAL_NVIC_DisableIRQ(EXTI3_IRQn);       

即可****

关闭中断只是不去执行中断处理函数

中断处理函数在stm32f1xx_hal_gpio.c(不同型号文件名也不用,可以通过查找中断回调函数HAL_GPIO_EXTI_Callback,点击find all,双击查找到的结果就可以跳转到该文件)

void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{/* EXTI line interrupt detected */if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u){__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);HAL_GPIO_EXTI_Callback(GPIO_Pin);}
}

****生成的中断处理函数中会主动清除中断标志位(__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);)

因此我们在打开中断前需要手动添加

__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_3);

进行中断标志位清零操作****

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

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

相关文章

self-attention(上)李宏毅

B站视频链接 word embedding https//www.youtube.com/watch?vX7PH3NuYW0Q self-attention处理整个sequence,FC专注处理某一个位置的资讯,self-attention和FC可以交替使用。 transformer架构 self-attention的简单理解 a1-a4可能是input也可以作为中…

如何把电脑中的项目快速传进Github中?

一、打开GitHub网站:https:github.com 登录自己的个人账号 1.新建一个项目 2.用鼠标直接拖拽电脑中的项目文件夹与文件到新创建的项目中点击保存即可。

JS手写apply,call,bind函数

本篇文章咱们来手写简易版的apply,call,bind函数。 实现思路 首先咱们需要思考下这三个函数放到哪里比较合适,因为这三个函数是被函数对象调用的,并且每个函数都可以调用,所以不难想到有一个位置非常合适,…

springboot第47集:【思维导图】面向对象,关键字,标识符,变量,数组的使用...

关键字:class,public,static,void等,特点是全部关键字都是小写字母。 image.png image.png 凡是自己起的名字可以叫标识符 image.png image.png image.png image.png 整数类型的使用 image.png image.png image.png 浮点类型 image.png image.png 字符类…

用队列实现栈oj题——225

. 个人主页:晓风飞 专栏:LeetCode刷题|数据结构|Linux 路漫漫其修远兮,吾将上下而求索 文章目录 题目要求:实现 MyStack 类:注意:示例:解释:提示: 解题核心数据结构的定义…

ASP.NET Core基础之图片文件(二)-WebApi图片文件上传到文件夹

阅读本文你的收获: 了解WebApi项目保存上传图片的三种方式学习在WebApi项目中如何上传图片到指定文件夹中 在ASP.NET Core基础之图片文件(一)-WebApi访问静态图片文章中,学习了如何获取WebApi中的静态图片,本文继续分享如何上传图片。 那么…

Python点云处理(二十一)基于Gradient Boosting的点云分类算法

目录 0 简述1 Gradient Boosting2 点云特征向量构建3 用Gradient Boosting进行分类4 代码实现5 结果展示0 简述 点云分类是计算机视觉领域中的一个重要任务,其主要目标是将三维空间中的点云数据划分为不同的类别。点云是由大量的三维点组成的数据集,通常由激光雷达或结构光等…

uniapp 微信小程序跳转外部链接

一、背景: 开发小程序时,跳转到内部路径通常会使用:uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab等方法,可以跳转到pages.json中已经注册的页面 uni.navigateTo(OBJECT) | uni-…

编程天赋和努力哪个更重要?

编程天赋和努力在编程中都非常重要,但它们的侧重点不同。 编程天赋通常指的是与生俱来的、在逻辑思维、抽象思维、创造力等方面的能力,这些能力可以帮助程序员更快地理解问题、更高效地设计和实现解决方案。天赋的确可以帮助程序员更容易地入门和更快地掌…

[通俗易懂]c语言中指针变量和数值之间的关系

一、指针变量的定义 在C语言中,指针变量是一种特殊类型的变量,它存储的是另一个变量的内存地址。指针变量可以用来间接访问和操作内存中的其他变量。指针变量的定义如下: 数据类型 *指针变量名;其中,数据类型可以是任…

联邦学习中聚合算法可能怎样创新,智慧农业结合什么数学理论或知名理论实现创新并发表文章

目录 联邦学习中聚合算法可能怎样创新 智慧农业结合什么数学理论或知名理论实现创新并发表文章

什么是集合

在数学中,集合是由一些确定的对象组成的整体。这些对象称为集合的元素, 在Java中,集合(Collection)是一种用来存储和操作一组对象的容器。Java提供了多个集合类和接口,位于java.util包中,用于处…

深度解析基于模糊数学的C均值聚类算法

深度解析基于模糊数学的C均值聚类算法 模糊C均值聚类 (FCM)聚类步骤:FCM Python代码: 模糊C均值聚类 (FCM) 在数据挖掘和聚类分析领域,C均值聚类是一种广泛应用的方法。模糊C均值聚类(FCM)是C均值聚类的自然升级版。相…

学习笔记——C++中数据的输入 cin

作用:用于从键盘中获取数据 关键字:cin 语法:cin>>变量 类型:C中数据的输入主要包含:整形(int)浮点型(float,double float),字符型&…

1.2 ARCHITECTURE OF A MODERN GPU

图1.2显示了典型的支持CUDA的GPU架构的高级视图。它被组织成一系列高线程的流式多处理器(SM)。在图中1.2,两个SM构成一个 block。然而,构建块中的SM数量可能因代而异。此外,在图中,每个SM都有多个共享控制逻…

复试 || 就业day11(2024.01.07)算法篇

文章目录 前言数组序号转换检查整数及其两倍数是否存在有多少小于当前数字的数字上升下降字符串找出数组中的幸运数统计最大组的数目 前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫文章题目大多来自于 leetcode&#xff…

书生·浦语大模型第二课作业

作业一:小故事创作 作业要求:使用 InternLM-Chat-7B 模型生成 300 字的小故事(需截图) 完成情况: 作业二:熟悉 hugging face 下载功能 作业要求:熟悉 hugging face 下载功能,使用…

基于Springboot的摄影跟拍预定管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的摄影跟拍预定管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

使用 openpyxl 库读取 Excel 文件

使用 openpyxl 库来读取 Excel 文件中特定行和列的值: 通过 openpyxl.load_workbook() 函数加载 Excel 文件, 使用 worksheet.cell() 方法获取指定行和列的单元格,并返回其值 注:在运行代码之前确保已安装 openpyxl 库,并且输入…

网络通信(10)-C#TCP客户端实例

本文使用Socket在C#语言环境下完成TCP客户端的实例。 实例完成的功能: 客户端与服务器连接,实现实时刷新状态。 客户端接收服务器的数据。 客户端发送给服务器的数据。 客户端实时判定状态,断开连接后自动重连。 客户端与服务器端发送心跳包。 在VS中创建C# Winform项…