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

STM32-GPIO详解

目录

一:GPIO基本概念

​编辑 二:GPIO的实际应用

三:功能描述 

四:GPIO库函数

 五:寄存器

GPIO相关寄存器功能


 

一:GPIO基本概念

GPIO是英文General Purpose Input/Output的缩写,中文翻译为通用输入/输出。它是一种在数字电子系统中常见的接口类型,用于与外部设备进行通信和控制。

GPIO接口可以作为输入或输出引脚使用。作为输入引脚时,GPIO可以接收来自外部设备的电信号,并将其转换为数字信号,供系统内部使用。作为输出引脚时,GPIO可以将数字信号发送到外部设备,从而实现对其的控制。

GPIO的基本概念包括以下几个方面:

  1. 引脚:GPIO接口通常由一组引脚组成,每个引脚都可以用作输入或输出。每个引脚都有一个唯一的标识符,如GPIO0、GPIO1等。

  2. 输入模式:当GPIO引脚配置为输入模式时,它可以接收外部设备发送的电信号。通常,输入引脚可以读取高电平(1)或低电平(0)状态,或者在某些系统中可以读取模拟信号。

  3. 输出模式:当GPIO引脚配置为输出模式时,它可以向外部设备发送数字信号。输出引脚可以设置为高电平(1)或低电平(0),以控制连接的设备的状态。

  4. 状态和电平:GPIO引脚的状态表示当前引脚的输入或输出电平。高电平通常表示逻辑1,低电平表示逻辑0。在某些系统中,还可以使用其他状态,如浮空、上拉和下拉等。

  5. 控制寄存器:为了配置和控制GPIO引脚的功能,通常需要通过写入特定的控制寄存器来设置引脚的模式、状态和电平。

GPIO在APB2下,所以要用GPIO时必须先开启APB2

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

 二:GPIO的实际应用

  1. 控制LED:将GPIO引脚配置为输出模式,可以通过设置引脚的高低电平状态来控制LED的亮灭。

  2. 按钮输入:将GPIO引脚配置为输入模式,可以连接按钮或开关,并通过读取引脚的电平状态来检测按钮是否被按下或开关是否打开。

  3. 传感器接口:通过GPIO引脚,可以连接各种传感器,如温度传感器、湿度传感器、光照传感器等。传感器的输出信号可以通过读取GPIO引脚的状态来获取。

  4. 驱动电机:通过GPIO引脚,可以连接电机驱动器,并通过设置引脚的高低电平状态来控制电机的运行方向和速度。

  5. 与外部设备通信:通过GPIO引脚,可以与其他外部设备进行通信,如显示器、LCD屏幕、数码管等。通过设置引脚的状态和电平,可以发送数据或控制命令。

  6. 脉冲宽度调制(PWM)输出:一些GPIO引脚支持PWM功能,可以生成模拟信号,用于控制电机速度、调节LED亮度等需要模拟输出的应用。

总之,GPIO的应用范围非常广泛,可以用于各种嵌入式系统、物联网设备、机器人、单片机等项目中,以实现与外部设备的连接、控制和通信功能。 

三:功能描述 

GPIO提供了一种通用的、灵活的接口,使得数字电子系统能够与外部设备进行交互和控制,实现各种应用需求。

输入功能:GPIO可以配置为输入模式,接收外部设备发送的信号。它可以读取来自传感器、开关、按钮等外部设备的状态,并将其转换为数字信号供系统内部使用。

输出功能:GPIO可以配置为输出模式,向外部设备发送数字信号。它可以通过设置高低电平或产生脉冲宽度调制(PWM)信号,控制执行器、驱动器、LED等外部设备的状态或行为。

引脚配置:GPIO的引脚可以灵活配置为输入或输出模式。通过配置寄存器或使用特定的编程接口,可以确定引脚的模式、状态和电平。

状态读取:GPIO可以读取引脚的状态,即引脚的电平信息。通过读取引脚的状态,可以检测按钮的按下、开关的状态、传感器的测量值等。

状态设置:GPIO可以设置引脚的状态,即设置引脚的电平信息。通过设置引脚的状态,可以控制外部设备的状态、发送数据或控制命令。

扩展性:某些系统支持多个GPIO引脚,可以通过扩展芯片或GPIO扩展板增加引脚的数量,从而满足更多外部设备的连接和控制需求。

通信接口:GPIO可以用于与各种外部设备进行通信,如传感器、显示器、驱动器等。通过读取和设置引脚的状态,可以实现与外部设备之间的数据交换和控制操作。

四:GPIO库函数

GPIO初始化:

GPIO_InitTypeDef GPIO_InitStructure; //结构体定义
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; //该参数选择待设置的 GPIO 管脚,使用操作符“|”可以一次选中多个管脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; //用以设置选中管脚的速率
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //用以设置选中管脚的工作状态
GPIO_Init(GPIOA, &GPIO_InitStructure);//

 五:寄存器

4 个 32 位 配 置 寄 存 器
GPIOx_MODER 模式寄存器
GPIOx_OTYPER 输出模式寄存器
GPIOx_ OSPEEDR 输出速度寄存器
GPIOx_PUPDR 上拉下拉寄存器

2 个 32 位数据寄存器
GPIOx_IDR 输入数据寄存器
GPIOx_ODR 输出数据寄存器

1个 32 位置位 / 复位寄存器
GPIOx_BSRR 置位 / 复位寄存器

2 个 32 位复用功能寄存器
GPIOx_AFRH
GPIOx_AFR

GPIO相关寄存器功能

GPIOx_MODER(模式寄存器):用于配置GPIO引脚的模式(输入或输出)。每个引脚通常使用两个位表示模式,例如00表示输入模式,01表示输出模式。

GPIOx_OTYPER(输出模式寄存器):用于配置GPIO引脚的输出类型。每个引脚通常使用一个位表示输出类型,例如0表示推挽输出,1表示开漏输出。

GPIOx_OSPEEDR(输出速度寄存器):用于配置GPIO引脚的输出速度。每个引脚通常使用两个位表示输出速度,例如00表示低速,11表示高速。

GPIOx_PUPDR(上拉下拉寄存器):用于配置GPIO引脚的上拉或下拉电阻。每个引脚通常使用两个位表示上拉/下拉配置,例如00表示无上拉/下拉,01表示上拉,10表示下拉。

GPIOx_IDR(输入数据寄存器):用于读取GPIO引脚的输入数据状态。每个位对应一个引脚,读取该位可以获取相应引脚的输入电平。

GPIOx_ODR(输出数据寄存器):用于写入GPIO引脚的输出数据状态。每个位对应一个引脚,写入该位可以设置相应引脚的输出电平。

GPIOx_BSRR(置位/复位寄存器):用于通过设置或复位位来控制GPIO引脚的输出电平。每个引脚通常使用两个位,一个位用于置位(设置为1),另一个位用于复位(设置为0)。

GPIOx_AFRH和GPIOx_AFRL(复用功能寄存器):用于配置GPIO引脚的复用功能,例如将引脚用作特定的外设功能(如UART、SPI等)。这些寄存器通常将32位分为两个部分,每个部分对应一组引脚。

六:函数 

这里是常用的函数,我遇到会更新

函数名:GPIO_WriteBit

  • 功能描述:设置或者清除指定的数据端口位
  • 参数1:GPIOxx 可以是 ABCD 或者 E,来选择 GPIO 外设
  • 参数2:GPIO_Pin:待设置或者清除指的端口位 ,该参数可以取 GPIO_Pin_x(x 可以是 0-15)的任意组合
  • 参数3:BitVal: 该参数指定了待写入的值 ,该参数必须取枚举 BitAction 的其中一个值 ,Bit_RESET: 清除数据端口位 Bit_SET: 设置数据端口位

相关文章:

STM32-GPIO详解

目录 一:GPIO基本概念 ​编辑 二:GPIO的实际应用 三:功能描述 四:GPIO库函数 五:寄存器 GPIO相关寄存器功能 一:GPIO基本概念 GPIO是英文General Purpose Input/Output的缩写,中文翻译为…...

【Framework系列之Client】UIManager和UIPanel模块介绍

今天来介绍一下UIManager和UIPanel模块,话不多说直接开始。 UIManager 功能介绍 UIManager是管理UIPanel的唯一模块,UIManager的主要功能包括: 提供打开、隐藏、关闭UIPanel的相关接口。负责UIPanel对象的创建以及初始化。负责储存UIPanel对…...

阿里云操作系统控制台——ECS操作与性能优化

引言:在数字化时代,云服务器作为强大的计算资源承载平台,为企业和开发者提供了灵活且高效的服务。本文将详细介绍如何一步步操作云服务器 ECS,从开通到组件安装,再到内存全景诊断,帮助快速上手,…...

【长安大学】苹果手机/平板自动连接认证CHD-WIFI脚本(快捷指令)

背景: 已经用这个脚本的记得设置Wifi时候,关闭“自动登录” 前几天实在忍受不了CHD-WIFI动不动就断开,一天要重新连接,点登陆好几次。试了下在网上搜有没有CHD-WIFI的自动连接WIFI自动认证脚本,那样我就可以解放双手&…...

第51天:Web开发-JavaEE应用SpringBoot栈身份验证JWT令牌Security鉴权安全绕过

#知识点 1、安全开发-JavaEE-身份验证-JWT&Security 2、安全开发-JavaEE-安全问题-不安全写法&版本漏洞 #开发框架-SpringBoot 参考:Spring Boot 中文文档 一、身份验证的常见技术: 1、JWT 2、Shiro 3、Spring Security 4、OAuth 2.0 5、SSO 6、…...

中原银行:从“小机+传统数据库”升级为“OceanBase+通用服务器”,30 +系统成功上线|OceanBase DB大咖说(十五)

OceanBase《DB 大咖说》第 15 期,我们邀请到了中原银行金融科技部数据团队负责人,吕春雷。本文为本期大咖说的精选。 吕春雷是一位资历深厚的数据库专家,从传统制造企业、IT企业、甲骨文公司到中原银行,他在数据库技术与运维管理…...

Java面试第八山!《Spring框架》

一、Spring框架概述 Spring是Java企业级应用开发的核心框架,通过控制反转(IoC)和 面向切面编程(AOP)实现模块解耦,简化开发流程。其核心优势包括依赖注入、声明式事务管理、集成主流ORM框架(如…...

LangChain教程 - Agent - 支持 9 种 ReAct 交互

引言 LangChain 总结了 9 种经典的复杂模型交互模式,每种都针对特定任务设计,兼具独特优势与适用场景,内容涵盖: ReAct、Function Call、知识库、搜索等,使用这些模式可以大大简化这些场景开发难度。这些模式可以使用…...

蓝桥杯备赛日记【day1】(c++赛道)

一、裁纸刀问题(2022、规律、思维、省赛) 解法思路: 参考题目给出的例子发现。不管要裁剪多少次。最外围的四次是固定的。然后通过观察发现,我们的行的裁剪次数为(m-1) 次,而每行都需要裁剪列数…...

【大模型基础_毛玉仁】1.4 语言模型的采样方法

【大模型基础_毛玉仁】1.4 语言模型的采样方法 1.4 语言模型的采样方法1.4.1 概率最大化方法1)贪心搜索(GreedySearch)2)波束搜索(BeamSearch) 1.4.2 随机采样方法1)Top-K 采样2)Top…...

[内网安全] Windows 本地认证 — NTLM 哈希和 LM 哈希

关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01:SAM 文件 & Windows 本地认证流程 0x0101:SAM 文件简介 Windows 本地账户的登录密码是存储在系统本地的 SAM 文件中的,在登录 Windows 的时候&am…...

基于SNR估计的自适应码率LDPC编译码算法matlab性能仿真,对比固定码率LDPC的系统传输性能

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 基于序列的SNR估计 2.2 基于SNR估计值进行码率切换 2.3 根据数据量进行码率切换 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印)&…...

opencv 模板匹配方法汇总

在OpenCV中,模板匹配是一种在较大图像中查找特定模板图像位置的技术。OpenCV提供了多种模板匹配方法,通过cv2.matchTemplate函数实现,该函数支持的匹配方式主要有以下6种,下面详细介绍每种方法的原理、特点和适用场景。 1. cv2.T…...

Embedding技术:DeepWalkNode2vec

引言 在推荐系统中,Graph Embedding技术已经成为一种强大的工具,用于捕捉用户和物品之间的复杂关系。本文将介绍Graph Embedding的基本概念、原理及其在推荐系统中的应用。 什么是Graph Embedding? Graph Embedding是一种将图中的节点映射…...

微信小程序注册组件

在微信小程序中注册组件分为自定义组件的创建和全局/局部注册,下面为你详细介绍具体步骤和示例。 自定义组件的创建 自定义组件由四个文件组成,分别是 .js(脚本文件)、.json(配置文件)、.wxml&#xff08…...

【docker】安装mysql,修改端口号并重启,root改密

我的docker笔记 【centOS】安装docker环境&#xff0c;替换国内镜像 1. 配置镜像源 使用阿里云镜像加速器&#xff0c;编辑/etc/docker/daemon.json sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https:/…...

自定义wordpress三级导航菜单代码

首先&#xff0c;在你的主题functions.php文件中&#xff0c;添加以下代码以注册一个新的菜单位置&#xff1a; function mytheme_register_menus() {register_nav_menus(array(primary-menu > __(Primary Menu, mytheme))); } add_action(init, mytheme_register_menus); …...

洛谷 P1480 A/B Problem(高精度详解)c++

题目链接&#xff1a;P1480 A/B Problem - 洛谷 1.题目分析 1&#xff1a;说明这里是高精度除以低精度的形式&#xff0c;为什么不是高精度除以高精度的形式&#xff0c;是因为它很少见&#xff0c;它的模拟方式是用高精度减法来做的&#xff0c;并不能用小学列竖式的方法模拟…...

JAVA入门——网络编程简介

自己学习时的笔记&#xff0c;可能有点水&#xff08; 以后可能还会补充&#xff08;大概率不会&#xff09; 一、基本概念 网络编程三要素&#xff1a; IP 设备在网络中的唯一标识 端口号 应用软件在设备中的唯一标识两个字节表示的整数&#xff0c;0~1023用于知名的网络…...

Ubuntu 合上屏幕 不待机 设置

有时候需要Ubuntu的机器合上屏幕的时候也能正常工作&#xff0c;而不是处于待机状态。 需要进行配置文件的设置&#xff0c;并重启即可。 1. 修改配置文件 /etc/systemd/logind.conf sudo vi /etc/systemd/logind.conf 然后输入i&#xff0c;进入插入状态&#xff0c;修改如…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...