GPIO(通用输入/输出)、中断(hal库)

目录

GPIO(通用输入/输出)(hal库)

GPIO工作模式

推挽输出(Push-Pull Output)

开漏输出(Open-Drain Output)

复用推挽输出(Alternate Function Push-Pull Output)

复用开漏输出(Alternate Function Open-Drain Output)

上拉输入(Pull-Up Input)

下拉输入(Pull-Down Input)

浮空输入(Floating Input)

模拟输入(Analog Input)

 GPIO的HAL库接口函数

中断

NVIC(嵌套向量中断控制器)

 EXTI的 HAL库常用接口函数


GPIO(通用输入/输出)(hal库)

在 STM32 微控制器中,GPIO(通用输入/输出)端口是一个重要的硬件模块,用于进行各种输入和输出操作。

GPIO工作模式

推挽输出(Push-Pull Output)

  • 定义:推挽输出模式允许 GPIO 引脚输出高电平或低电平,能在两个状态之间迅速切换。
  • 特点:在逻辑高电平时,GPIO 引脚被驱动到 VDD 电压;在逻辑低电平时,GPIO 引脚被拉到 GND 电压。适用于驱动外部设备,如 LED 或开关。
  • GPIO_MODE_OUTPUT_PP

开漏输出(Open-Drain Output)

  • 定义:开漏输出模式允许 GPIO 引脚在输出逻辑低电平时驱动到 GND 电压,而在输出逻辑高电平时,GPIO 引脚会“浮空”,需外部上拉电阻拉到 VDD 电压。
  • 特点:适用于需要多路器或共用总线的场合,例如 I2C 总线。
  • GPIO_MODE_OUTPUT_OD

复用推挽输出(Alternate Function Push-Pull Output)

  • 定义:复用推挽输出模式允许 GPIO 引脚用于特定的外设功能,如定时器、USART 等,且可以推挽输出信号。
  • 特点:适用于需要特定外设功能的应用,如 PWM 输出。
  • GPIO_MODE_AF_PP;

复用开漏输出(Alternate Function Open-Drain Output)

  • 定义:复用开漏输出模式允许 GPIO 引脚用于特定的外设功能,同时采用开漏输出模式。
  • 特点:适用于需要共用总线或 I2C 总线等应用。
  • GPIO_MODE_AF_OD

上拉输入(Pull-Up Input)

  • 定义:上拉输入模式将 GPIO 引脚设置为输入,并在内部启用上拉电阻,以确保在未连接到信号源时,输入引脚保持高电平。
  • GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 输入模式
  • GPIO_InitStruct.Pull = GPIO_PULLUP; // 上拉电阻

下拉输入(Pull-Down Input)

  • 定义:下拉输入模式将 GPIO 引脚设置为输入,并在内部启用下拉电阻,以确保在未连接到信号源时,输入引脚保持低电平。
  • GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 输入模式
  • GPIO_InitStruct.Pull = GPIO_PULLDOWN; // 下拉电阻

浮空输入(Floating Input)

  • 定义:浮空输入模式将 GPIO 引脚设置为输入,不使用内部上拉或下拉电阻。
  • GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 输入模式
  • GPIO_InitStruct.Pull = GPIO_NOPULL; // 无上拉/下拉

模拟输入(Analog Input)

  • 定义:模拟输入模式用于将 GPIO 引脚配置为模拟模式,以便进行 ADC(模数转换)操作。
  • GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; // 模拟模式
  • GPIO_InitStruct.Pull = GPIO_NOPULL; // 无上拉/下拉

 GPIO的HAL库接口函数

中断

NVIC(嵌套向量中断控制器)

NVIC (嵌套向量中断控制器)是 STM32 微控制器的中断控制器,管理所有中断请求的优先级和响应。使用 NVIC 可以配置中断优先级并使能中断。

 EXTI的 HAL库常用接口函数

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

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

相关文章

在Ubuntu 22.04测试ebpf-go入门例子

文章目录 1、eBPF-Go依赖1.1 Ubuntu安装ssh server1.2 安装go1.3 安装llvm和clang1.4 安装libbpf和Linux kernel headers 2 编写eBPF C程序3 使用bpf2go编译eBPF C程序4 编写Go程序5 编译运行Go应用程序 eBPF-Go是一个使用eBPF的Go库。它不依赖于C、libbpf或除标准库之外的任何…

Windows单机安装配置mongodb+hadoop+spark+pyspark用于大数据分析

目录 版本选择安装配置Java环境配置Hadoop配置Spark配置 安装pyspark使用Jupyter Notebook进行Spark MongoDB测试参考 版本选择 根据Spark Connector:org.mongodb.spark:mongo-spark-connector_2.13:10.3.0 的前提要求 这里选择使用最新的MongoDB 7.0.12社区版 ht…

基于R语言进行AMMI分析3

参考资料:https://cran.r-project.org/web/packages/agricolae/agricolae.pdf 1、plot()函数 本次介绍的是Agricolae包中的plot.AMMI()函数。此函数可以绘制AMMI双标图,也可以绘制三标图(三个坐标轴,IPCA1,IPCA2&…

TiggerRamDisk绕过激活界面,支持最新iOS17.4.1绕过

🐧技术交流:582022476 ——————— iOS15等待越狱的日子实在太久了!checkra1n越狱目前还未发布iOS15系统越狱。 可很多朋友不小心或者大意已经升级到了最新iOS15系统。一般来说这并没有什么大碍,但如果是绕过激活的设备&#…

Cesium 展示——绘制水面动态升高

文章目录 需求分析需求 如图,绘制水面动态升高,作为洪水淹没的效果 分析 我们首先需要绘制一个面然后给这个面一个高度,在回调函数中进行动态设置值【这里有两种,一种是到达水面一定高度停止升高,一种是水面重新升高】/*** @description :洪水淹没* @author : Hukang*…

一起学Java(3)-Java项目构建工具Gradle和Maven场景定位和优缺点对比

在第一步创建的项目(java-all-in-one)项目里,我们提到了使用Gradle作为项目构建工具。看到这里,不知道你是否有疑惑,什么是项目构建工具。Java项目常用构建工具有哪些?都有什么特点? 带着疑惑&…

工厂现场多功能帮手,三防平板改善管理体验

随着制造业的智能化变革,信息化、自动化和智能化逐渐成为工厂管理的新常态。在这一波技术浪潮中,三防平板作为一种多功能的工作工具,正在逐步改善工厂现场的管理体验。 一、三防平板的定义与特点 三防平板,顾名思义,是…

Python测试框架之—— pytest介绍与示例

Pytest是一个功能强大且易于使用的Python测试框架,它提供了丰富的功能和灵活的用法,使得编写和运行测试变得简单而高效。 一、Pytest的特点 简单灵活:Pytest的语法简洁清晰,容易上手,并且支持复杂的测试场景。自动发…

python库(21):

1 TextBlob简介 TextBlob 是一个基于 Python 的文本处理库,能够让基础的自然语言处理任务变得异常简单。 它提供了一个简单直观的 API,让你能够轻松执行词性标注、名词短语提取、情感分析、文本分类和关键词提取等功能。 值得一提的是,Tex…

Qt+FFmpeg开发视频播放器笔记(二):界面UI搭建

效果图 主要使用无边框窗体搭建,实现窗体的拖动和缩放&#xff0c;播放列表、文件打开等。 主要代码 manwindow设计类 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QMutex> #include "framelesshelper.h"QT_BEGIN_NA…

【网络】传输层协议——TCP协议(进阶)

目录 1.TCP连接的11种状态 2.再次理解三次挥手 2.1.再次理解三次握手 2.2.Socket编程和三次握手的关系 2.2.1.listen的参数 2.2.2.accept函数 2.3.TCP三次握手的优点 2.3.1.阻止重复历史连接的初始化 2.3.2.为什么两次握手不能防止旧的重复连接初始化造成混乱呢&am…

【附源码】Python :PYQT界面点击按钮随机变色

系列文章目录 Python 界面学习&#xff1a;PYQT界面点击按钮随机变色 文章目录 系列文章目录一、项目需求二、源代码三、代码分析3.1 导入模块&#xff1a;3.2 定义App类&#xff1a;3.3 构造函数&#xff1a;3.4 初始化用户界面&#xff1a;3.5 设置窗口属性&#xff1a;3.6 …

基于YOLOv7算法的高精度实时课堂场景下人脸检测系统

项目目标 开发一套基于YOLOv7的高精度实时人脸检测系统&#xff0c;适用于课堂场景。实现对图片、视频、文件夹内的图像及摄像头流的实时人脸检测。提供直观的图形界面&#xff0c;方便用户操作。支持模型权重的灵活选择与加载&#xff0c;以及后处理参数的调整。 主要功能 模…

基础算法--递推算法[信奥一本通]

本节所讲题源自【信奥一本通】C版&#xff1a;基础算法-第三章-递推算法 相信大家应该都接触过数列的概念。哎哟&#xff0c;一直在跟数组打交道&#xff0c;说数列感觉好陌生&#xff0c;哈哈。数列中的迭代法大家都还记得吗&#xff1a;通过反复应用特定规则&#xff0c;推导…

海思SD3403/SS928V100开发(16)Tsensor驱动开发

1. 前言 由于需要检测SD3403芯片内部实时温度,需要开发Tsensor传感器驱动和应用 查看手册发现SD3403内部有三个Tsensor传感器 可以参考之前我写的35系列平台Tsensor驱动开发记录 海思35系列平台Tsensor驱动开发(1)驱动编写_t sensor-CSDN博客 海思35系列平台Tsensor驱动…

MyBatis源码(6)拦截器

1、目标 本文的主要目标是学习MyBatis拦截器的源码&#xff0c;本文将以插入操作为例debug拦截器相关的源码 2、拦截器源码分析 调用mapper接口的insert插入记录方法&#xff0c;会调用SqlSession对象的insert方法 SqlSession执行insert方法 Spring容器会创建SqlSessionTemp…

【Algorithm】三步问题

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 1.三步问题1.题目连接2.算法原理讲解&&代码实现 2.最小花费爬楼梯1.题目连接2.算法原理讲解&&代码实现 3.解码方法1.题目连接2.算法原理讲解&&代码实现 1.三步问题 1.题目连…

如何在分布式环境中实现高可靠性分布式锁

目录 一、简单了解分布式锁 &#xff08;一&#xff09;分布式锁&#xff1a;应对分布式环境的同步挑战 &#xff08;二&#xff09;分布式锁的实现方式 &#xff08;三&#xff09;分布式锁的使用场景 &#xff08;四&#xff09;分布式锁需满足的特点 二、Redis 实现分…

1/f噪声影响及解决措施

在将6位半数字万用表输入短接时&#xff0c;观察其输出。在逐渐增加均值次数后&#xff0c;噪声开始下降&#xff0c;达到一定程度后便停止下降&#xff0c;随着时间的推移&#xff0c;停止下降的噪声在逐渐增加&#xff0c;该部分主要是1/f噪声影响。 这种1/f噪声&#xff08;…

404错误页面简约清新源码 非常好看

源码介绍 404错误页面简约清新源码 非常好看&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 源码下载 404错误页面简约清…