STM32的HAL库开发系列 - GPIO中断/外部中断EXTI

2023-11-02

STM32的HAL库开发系列 - GPIO中断/外部中断EXTI

中断它可以在GPIO口的电平发生变化时产生中断,从而使得STM32微控制器能够及时响应外部设备的变化。

STM32的GPIO中断/外部中断EXTI可以配置为上升沿中断、下降沿中断和双边沿中断三种类型,分别在GPIO口电平从低电平变为高电平、从高电平变为低电平和在任意电平变化时产生中断。

STM32的GPIO中断/外部中断EXTI还支持中断优先级的配置,可以设置不同的中断优先级以控制中断的处理顺序。STM32的GPIO中断/外部中断EXTI还支持中断嵌套,可以在处理一个中断时产生另一个中断。

HAL库gpio中断服务函数

void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
  /* EXTI line interrupt detected */
  // 确保产生了EXTI Line中断
  if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET)
  {
	// 清除中断标志位
    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
	// 调用外部中断回调函数
    HAL_GPIO_EXTI_Callback(GPIO_Pin);
  }
}

在应用层编程中,可以使用STM32的GPIO中断/外部中断EXTI库函数进行中断的配置和使用,这样可以简化程序的复杂性。STM32的GPIO中断/外部中断EXTI库函数可以提供高层次的接口,让用户只需要关注中断的功能,而不需要关注底层的实现细节。

HAL库gpio中断回调函数

__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
  /* Prevent unused argument(s) compilation warning */
  UNUSED(GPIO_Pin);
  /* 
  NOTE: This function Should not be modified, when the callback is needed,
           the HAL_GPIO_EXTI_Callback could be implemented in the user file
  */
}

回调函数是加了__weak修饰的弱函数。可以在其他地方编写同名回调函数,编译器在编译时会优先选择不带__weak修饰的函数进行编译。

STM32的GPIO中断/外部中断EXTI是一种非常重要的功能,它可以在GPIO口的电平发生变化时产生中断,使得STM32微控制器能够及时响应外部设备的变化,提高系统的可靠性和灵活性。此外,STM32的GPIO中断/外部中断EXTI还支持中断类型的配置、中断优先级的配置和中断嵌套等特性,使得STM32微控制器能够更好的响应外部设备的变化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32的HAL库开发系列 - GPIO中断/外部中断EXTI 的相关文章

随机推荐

  • 338. Counting Bits

    class Solution public vector
  • 接口和抽象类的异同点

    相同点 1 抽象类和接口都不能直接实例化 创建对象 2 抽象类的子类 或接口的实现类 都必须实现抽象类 或接口 中全部的抽象方法 才可以被实例化 否则 该类仍然为抽象类 不同点 1 关键字不同 抽象类子类使用extends关键字来继承抽象类
  • Qt的KeyEvent捕获Ctrl+C等快捷键/热键

    1 必须设置widget可以拥有焦点 注意 默认的focusPolicy是NoFocus 这会导致无法捕获Ctrl Alt Shfit 之外的字符按键 setFocusPolicy Qt StrongFocus 窗口将通过鼠标点击 按tab
  • 迪杰特斯拉算法-最短路径问题(浙大计算机机试题)

    今天写了一道可以用迪杰特斯拉算法实现的题目 题目如下 给你n个点 m条无向边 每条边都有长度d和花费p 给你起点s终点t 要求输出起点到终点的最短距离及其花费 如果最短距离有多条路线 则输出花费最少的 写的代码如下 但是一直不通过 incl
  • (二)用多线程管理TCP多个客户端连接服务器

    该程序的服务端大概工作逻辑如左图 首先说说这个程序的作用 这个程序可用于多个客户端通过连接服务器来互相通信 如qq群聊 当一个客户端有信息发过来后 服务端就会通过客户端队列转发给其他客户端 先上代码 TCP服务端 include myhea
  • GIT学习资料

    Git详解之一 Git起步 Git详解之二 Git基础 Git详解之三 Git分支 Git详解之四 服务器上的Git Git详解之五 分布式Git Git详解之六 Git工具 Git详解之七 自定义Git Git详解之八 Git与其他系统
  • C++并发编程框架Theron(5)——File reader(1)

    1 前言 在上一篇博文 我主要通过Hello world 的示例 介绍了actors frameworks messages和receivers几个构建Theron框架程序的要点 但是Hello world 实例只是一个再简单不过的单act
  • 关于android studio 出现Error:Execution failed for task ':app:preDebugAndroidTestBuild'. 的解决办法

    前段时间打开Android studio 在build过程中总会出现以下错误 Error Execution failed for task app preDebugAndroidTestBuild gt Conflict with dep
  • Windows认证原理解析基础入门

    0x01 前言简介 0x02 基本介绍 1 本地登录认证 2 网络登录认证 0x03 LM NTLM 版本优缺 0x04 LM NTLM 生成原理 1 LM Hashes 生成实例 2 NTLM Hashes 生成实例 0x05 LM NT
  • 文件读取-python与java对比

    最近开始接触python 发现python的语法真的是简单 下面是读取文件的实例对比 Java package com ztesoft oss iominterface httpServlet toIOM import java io Bu
  • 高仿钉钉和小米的日历控件,很实用

    http mp weixin qq com s cWD7ex7WVT8bzQpxFHmCyA ref myread
  • mysql sum 重复计算_mysql join sum时数据重复问题及解决方案

    当我们使用mysql的join功能从多张表中取出数据并使用sum分别对取出的数据求和时 会发现sum出来的值是不对的 往往是正确值的整数倍 为什么会出现这样的情况呢 复现 假设有两张表 user buy 和user sell 分别记录了用户
  • 基于Qt的智能车载系统嵌入式项目(正点原子IMX6ULL开发板)

    基于正点原子的IMX6ULL开发板的智能车载系统 Qt 提示 该项目借鉴了不少大佬的代码 我没有自己造轮子 代码在文章末尾 同时附上参考链接 本人其他项目链接基于linux的智能仓储项目 基于Qt的人脸识别 基于STM32的智能家居 移植人
  • Kali 2 Kali 2018更新源

    这个源指的是软件源 也就是说你用apt get install xxx安装软件时 系统下载软件的地方 一般默认为国外的链接 所以速度比较慢 需要换成国内的源 设置kali的更新源 在终端中打开sources list root kali v
  • 海康威视web插件【浏览器部分兼容& 全兼容】

    更新时间 2020年9月18日 前言 博主自从写了这篇文章到现在 有好多友友来问我问题 以及我自己也在不断的尝试开发 现在我归纳一下从17年到现在我遇到的问题和友友们遇到的问题以及一些资料总结 资料 3 0开发包 https downloa
  • Java中的File与字符流,字节流

    File File类概述和构造方法 File 他是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于FIle而言 其封装的并不是一个真正存在的文件 仅仅是一个路径名而已 它可以是存在的 也可以是不存在的 将来是要通过
  • Java 统计连续签到天数

    说明 签到功能根据业务情况的不同大致分为两种 一种是只要进入系统就会默认签到 另外一种是进入系统之后需要用户手动点击签到按钮进行签到 两种情况最大的区别就是 自动签到连续签到天数肯定至少为1天 而手动签到的情况则需要考虑断签的情况 1 自动
  • 关于list容器(链表)

    list容器基本概念 list优点 list容器的迭代器 以下代码为验证list是否为循环链表 list构造函数 list数据元素插入和删除操作 list大小操作 list赋值操作 list数据的存取 list常用操作 list容器基本概念
  • QGLViewer+VS(MSVC2013)配置

    工具 libQGLViewer 2 7 2 Visual Studio 2013 Uitimate QT5 9 1 MSVC2013 另外在VS中使用QT显示界面需要下载qt vsaddin msvc2013 2 2 0 vsix官网下载
  • STM32的HAL库开发系列 - GPIO中断/外部中断EXTI

    STM32的HAL库开发系列 GPIO中断 外部中断EXTI 中断它可以在GPIO口的电平发生变化时产生中断 从而使得STM32微控制器能够及时响应外部设备的变化 STM32的GPIO中断 外部中断EXTI可以配置为上升沿中断 下降沿中断和