【STM32开发】GPIO最全解析及应用实例

目录

【1】GPIO概述

GPIO的基本概念

GPIO的应用

【2】GPIO功能描述

1.IO功能框图

2.知识补充

3.功能详述

浮空输入

上拉输入

下拉输入

模拟输入

推挽输出

开漏输出

复用开漏输出和复用推挽输出

【3】GPIO常用寄存器

相关寄存器介绍

4个32位配置寄存器

2个32位数据寄存器

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

2个32位 复用功能配置寄存器

常用寄存器详述

GPIO端口模式寄存器(GPIOx_MODER)(x=A...D,F)

GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x = A..D,F)

GPIO 口输出速度寄存器 (GPIOx_OSPEEDR) (x = A..D,F)

GPIO 口上拉 / 下拉寄存器 (GPIOx_PUPDR) (x = A..D,F)

GPIO 端口输入数据寄存器 (GPIOx_IDR) (x = A..D,F)

GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A..D,F)

GPIO 端口置位 / 复位寄存器 (GPIOx_BSRR) (x = A..D,F)

 

【4】GPIO实验:点亮LED灯

实验步骤

1.观察开发板

2.分析原理图

3.分析寄存器

4.编写代码

5.编译下载

6.运行测试

结语


【1】GPIO概述

GPIO的基本概念

GPIO,即通用输入输出接口,是一种在数字电子系统中常见的接口类型。GPIO接口既可以作为输入引脚接收来自外部设备的电信号,也可以作为输出引脚向外部设备发送电信号。其“通用”二字意味着GPIO接口具有高度的灵活性,可以根据需要配置为输入或输出模式,实现与外部设备的通信和控制。

GPIO的应用

GPIO在嵌入式系统中的应用极为广泛,包括但不限于以下几个方面:

  1. 设备控制:通过GPIO控制LED灯、数码管、继电器等外部设备的开关状态。
  2. 数据采集:读取按键、光照传感器、ADC(模拟数字转换器)等外部设备的输入信号。
  3. 通信接口:GPIO可以作为串口(如USART)、I2C、SPI等通信协议的数据收发管脚,实现与外部设备的通信。
  4. 复用功能:在某些情况下,GPIO引脚可以被配置为特定外设的接口,如定时器的外部触发输入等。

【2】GPIO功能描述

      查看技术手册的图 第8章通用IO 

1.IO功能框图

2.知识补充

   这里对图中涉及的一些知识点做简要说明,以帮助初学者能够读懂功能框图。

1.模拟信号和数字信号的区别?

模拟信号:连续变化的值,例如读取到的连续的电压值、温度、压力等。

数字信号:离散的数值,通常可以用“0”和“1”两种状态来表示。

2. 施密特触发器的作用

由于外部输入的信号,可能会出现脉冲等噪声的影响,为了让信号更加清晰,所以就设置了TTL施密特触发器来进行整形。

3.VCC、VDD和VSS说明

VCC:接入电路的电压

VDD:器件内部的工作电压,通常VCC>VDD

VSS:电路公共接地端电压

3.功能详述

浮空输入

IO--TTL施密特触发器--输入寄存器--读

通俗讲就是让管脚什么都不接,悬空着。

此时VDD和VSS所在路径的两个开关同时断开。因为没有上拉和下拉,所以当IO口没有接输入的时候,此时的电平状态会是一个不确定的值,完全由外部输入决定。

一般实际运用时,引脚不建议悬空,易受干扰。

优势:

这一种输入模式的电平会完全取决于外部电路而与内部电路无关。

缺点:

在没有外部电路接入的时候,IO脚浮空会使得电平不确定

应用:

该模式是STM32复位之后的默认模式,一般用作对开关按键的读取或用于标准的通讯协议,比如IIC、USART的等。

上拉输入

IO--上拉电阻--TTL施密特触发器--输入寄存器--读

上拉就是把电位拉高。此时如果I/O口断开不接外设,输入端的电平会保持在高电平。

上拉输入就是信号进入芯片后加了一个上拉电阻,再经过施密特触发器转换成0、1信号,读取此时的引脚电平为高电平

上拉:当我们闭合上拉电阻的开关,断开下拉电阻的开关的时候,也就是此时为上拉通路导通。

优势:输入的电平不会因上下浮动而导致输入信号不稳定,在没有信号输入的情况下可以稳定在高电平。

下拉输入

IO--下拉电阻--TTL施密特触发器--输入寄存器--读

下拉就是把电位拉低。与上拉原理相似。

下拉输入就是信号进入芯片后加了一个下拉电阻,再经过施密特触发器转换成0、1信号,读取此时的引脚电平为低电平;

优势:输入的电平不会上下浮动而导致输入信号不稳定,在没有信号输入的情况下可以稳定在低电平。

模拟输入

IO----模拟

信号进入后不经过上拉电阻或者下拉电阻,关闭施密特触发器,经由另一线路把电压信号传送到片上外设模块。所以可以理解为模拟输入的信号是未经处理的信号,是原汁原味的信号。

应用:当 GPIO 引脚用于 ADC 采集电压的输入通道时,则需要选择“模拟输入”功能,因为经过施密特触发器后信号只有 0、1 两种状态,所以 ADC 外设要采集到原始的模拟信号,信号源输入必须在施密特触发器之前。

推挽输出

输出寄存器上的’0’激活 N-MOS,而输出寄存器上的’1’将激活 P-MOS,具备输出高低电平的能力。

当上面的MOS管导通时,GPIO输出高电平1,称为“推”,

当下面MOS管导通时,GPIO输出低电平0,称为“挽”。

高低电平值由芯片内部的电源决定。

开漏输出

输出寄存器上的’0’激活 N-MOS,使得输出接地。

输出寄存器上的’1’将端口置于高阻状态 (P-MOS从不被激活)。

所以引脚既不输出高电平,也不输出低电平。

即:写0输出低电平,写1输出高阻态(High Impedance)

无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动。

可以利用改变上拉电源的电压来适应所需,进而提高外部电路的驱动能力。

复用开漏输出和复用推挽输出

复用推挽和复用开漏其实很简单,如果不想用单片机内部来输出控制,那么可以进行复用,将输出转移到其他外设上面,由外设的信号驱动输出缓冲器。

【3】GPIO常用寄存器

相关寄存器介绍

4个32位配置寄存器

GPIOx_MODER:模式寄存器,用于配置GPIO引脚的工作模式(输入、输出、复用、模拟等)。

GPIOx_OTYPER:输出类型寄存器,用于配置GPIO引脚为输出时的类型(推挽输出或开漏输出)。

GPIOx_OSPEEDR:输出速度寄存器,用于配置GPIO引脚输出信号的速度。

GPIOx_PUPDR:上拉/下拉寄存器,用于配置GPIO引脚的上拉或下拉电阻。

2个32位数据寄存器

GPIOx_IDR:输入数据寄存器,只读,用于读取GPIO引脚当前的输入电平状态。

GPIOx_ODR:输出数据寄存器,用于设置GPIO引脚当前的输出电平状态。

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

GPIOx_BSRR :可以直接置位或复位,对其他位没影响

2个32位 复用功能配置寄存器

GPIOx_AFRH 复用功能高位寄存器(8-16)

GPIOx_AFRL 复用功能低位寄存器 (0-7)

常用寄存器详述

GPIO端口模式寄存器(GPIOx_MODER)(x=A...D,F)

偏移地址:0x00

复位值:

0xEBFF FFFF 端口A

0xFFFF FFFF 其他口

GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x = A..D,F)

偏移地址:0x04

复位值: 0x0000 0000

GPIO 口输出速度寄存器 (GPIOx_OSPEEDR) (x = A..D,F)

偏移地址:0x08

复位值: 0x0000 0000

GPIO 口上拉 / 下拉寄存器 (GPIOx_PUPDR) (x = A..D,F)

偏移地址:0x0C

复位值:

0x2400 0000 端口A

0x0000 0000 其它端口

GPIO 端口输入数据寄存器 (GPIOx_IDR) (x = A..D,F)

偏移地址:0x10

复位值: 0x0000 XXXX (X 表明不定 )

GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A..D,F)

偏移地址:0x14

复位值: 0x0000 0000

GPIO 端口置位 / 复位寄存器 (GPIOx_BSRR) (x = A..D,F)

偏移地址:0x18

复位值:0x0000 0000

【4】GPIO实验:点亮LED灯

实验步骤

1.观察开发板

查看LED灯的丝印

2.分析原理图

      找到控制LED灯的引脚编号,并通过分析电路,确定输出高/低电平信号来点亮LED。

      这里我们以PB1引脚为例,假设让芯片的PB1引脚输出低电平信号即可点亮LED灯。

3.分析寄存器

1)使能GPIOB端口时钟

RCC->IOPENR |= 1<<1;   //使能GPIOB端口时钟

2)配置GPIO模式

将PB1引脚配置为输出模式

3)配置输出类型

将PB1配置为推挽输出模式

4)配置输出数据寄存器

让PB1输出低电平信号

方式一:配置置位复位寄存器

方式二:配置输出数据寄存器

4.编写代码

5.编译下载

6.运行测试

下载完代码后,按下单片机复位键重新上电,观察LED状态。

结语

STM32的GPIO接口功能强大、配置灵活,是嵌入式系统开发中不可或缺的一部分。通过合理配置GPIO引脚的工作模式、输出类型、速度等参数,可以实现与外部设备的有效通信和控制。本文详细介绍了GPIO的概念、应用、功能及相关寄存器,并给出了一个简单的开发示例,希望能为开发者在STM32 GPIO开发过程中提供一些帮助。

创作不易,如果感觉这篇文章对你有帮助,记得点赞收藏。

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

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

相关文章

机器学习如何用于音频分析?

机器学习如何用于音频分析&#xff1f; 一、说明 近十年来&#xff0c;机器学习越来越受欢迎。事实上&#xff0c;它被用于医疗保健、农业和制造业等众多行业。随着技术和计算能力的进步&#xff0c;机器学习有很多潜在的应用正在被创造出来。由于数据以多种格式大量可用&…

JVM系列(十) -垃圾收集器介绍

一、摘要 在之前的几篇文章中,我们介绍了 JVM 内部布局、对象的创建过程、运行期的相关优化手段以及垃圾对象的回收算法等相关知识。 今天通过这篇文章,结合之前的知识,我们一起来了解一下 JVM 中的垃圾收集器。 二、垃圾收集器 如果说收集算法是内存回收的方法论,那么…

OrangePi AIpro 香橙派 昇腾 Ascend C 算子开发 与 调用 - 通过aclnn调用的方式调用AddCustom算子

OrangePi AIpro 香橙派 昇腾 Ascend C 算子开发 与 调用 通过aclnn调用的方式调用 - AddCustom算子 - 单算子API执行(aclnn) 多种算子调用方式 *开发时间使用场景调用方式运行硬件基于Kernel直调工程&#xff08;快速&#xff09;少单算子调用&#xff0c;快速验证算法逻辑IC…

Kafka【十二】消费者拉取主题分区的分配策略

【1】消费者组、leader和follower 消费者想要拉取主题分区的数据&#xff0c;首先必须要加入到一个组中。 但是一个组中有多个消费者的话&#xff0c;那么每一个消费者该如何消费呢&#xff0c;是不是像图中一样的消费策略呢&#xff1f;如果是的话&#xff0c;那假设消费者组…

C语言-程序环境 #预处理 #编译 #汇编 #链接 #执行环境

文章目录 前言 一、程序的环境翻译和执行环境 二、翻译环境 (一)、整体把握 (一)、编译 1、预处理(预编译) 2、编译 a、词法分析 b、语法分析 c、语义分析 d、符号汇总 3、汇编 (二)、链接 三、运行环境 总结​​​​​​​ 前言 路漫漫其修远兮&#xff0c;吾将…

9月7日微语报,星期六,农历八月初五

&#xff19;月&#xff17;日微语报&#xff0c;星期六&#xff0c;农历八月初五&#xff0c;周末愉快&#xff01; 一份微语报&#xff0c;众览天下事&#xff01; 1、21个部门&#xff1a;符合条件的流动儿童家庭或可配公租房。 2、多所高校2025年招生简章显示&#xff0…

API安全 | 发现API的5个小tips

在安全测试目标时&#xff0c;最有趣的测试部分是它的 API。API 是动态的&#xff0c;它们比应用程序的其他部分更新得更频繁&#xff0c;并且负责许多后端繁重的工作。在现代应用程序中&#xff0c;我们通常会看到 REST API&#xff0c;但也会看到其他形式&#xff0c;例如 Gr…

Jenkins构建CI/CD

CI/CD 软件开发的连续方法基于自动执行脚本&#xff0c;以最大限度地减少在开发应用程序时引入错误的可能性。从新代码的开发到部署&#xff0c;它们需要较少的人为干预甚至根本不需要干预。 它涉及在每次小迭代中不断构建&#xff0c;测试和部署代码更改&#xff0c;从而减少…

对极约束及其性质 —— 公式详细推导

Title: 对极约束及其性质 —— 公式详细推导 文章目录 前言1. 对极约束 (Epipolar Constraint)2. 坐标转换 (Coordinate Transformations)3. 像素坐标 (Pixel Coordinates)4. 像素坐标转换 (Transformations of Pixel Coordinates)5. 本质矩阵 (Essential Matrix)6. 线坐标 (Co…

单调栈的实现

这是C算法基础-数据结构专栏的第二十四篇文章&#xff0c;专栏详情请见此处。 引入 单调栈就是满足单调性的栈结构&#xff0c;它最经典的应用就是给定一个序列&#xff0c;找出每个数左边离它最近的比它大/小的数。 下面我们就来讲单调栈的实现。 定义 单调栈就是满足单调性…

pycharm破解教程

下载pycharm https://www.jetbrains.com/pycharm/download/other.html 破解网站 https://hardbin.com/ipfs/bafybeih65no5dklpqfe346wyeiak6wzemv5d7z2ya7nssdgwdz4xrmdu6i/ 点击下载破解程序 安装pycharm 自己选择安装路径 安装完成后运行破解程序 等到Done图标出现 选择Ac…

精准设计与高效开发:用六西格玛设计DFSS实现新能源汽车开发突破

快速变化的市场需求和激烈的竞争迫使制造企业不得不持续创新和优化产品开发流程。如何在保证产品质量的前提下&#xff0c;加快产品开发周期&#xff0c;成为许多企业亟待解决的问题。六西格玛中的DFSS&#xff08;Design for Six Sigma&#xff09;模型提供了一种系统的方法&a…

【银河麒麟高级服务器操作系统实例】虚拟化平台系统服务中断现象分析及处理建议

服务器环境以及配置 【机型】虚机 处理器&#xff1a; Kunpeng-920 内存&#xff1a; 40G 【内核版本】 4.19.90-23.8.v2101.ky10.aarch64 【OS镜像版本】 银河麒麟操作系统 Kylin-Server-10-SP1-Release-Build20-20210518-arm64 【第三方软件】 智能运维系统、mysq…

5G移动网络运维实验(训)室解决方案

随着第五代移动通信技术&#xff08;5G&#xff09;的快速普及和工业互联网的迅猛发展&#xff0c;全球制造业正面临着前所未有的深刻变革。5G技术凭借其超高的传输速率、极低的延迟以及大规模的连接能力&#xff0c;为工业自动化、智能制造等领域带来了革命性的技术支持。为了…

Vatee万腾平台:赋能企业,共筑智慧经济新高地

在智慧经济时代的大潮中&#xff0c;企业如何把握机遇&#xff0c;实现转型升级&#xff0c;成为行业内的佼佼者&#xff1f;Vatee万腾平台以其卓越的技术实力、前瞻性的战略眼光和全方位的服务体系&#xff0c;正逐步成为企业数字化转型的坚实后盾&#xff0c;赋能企业&#x…

软考真题之软件设计师的程序语言设计题型(上午题)

目录 编程程序和解释程序 相关习题 函数 编译,解释和翻译阶段 符号表 ​编辑 相关习题 ​编辑 词法分析 语法分析 语义分析 目标代码生成 相关习题 中间代码生成 正规式 相关习题 有限自动机 相关习题 上下文无关文法 相关习题 比较偏的真题 编程程序和解…

Python OpenCV 影像处理:傅立叶转换

►前言 上篇介绍基于计算影像的梯度&#xff0c;通过在影像中找到梯度值的变化来识别边缘。 本篇将介绍傅立叶变换的基本原理&#xff0c;了解傅立叶变换是如何将影像从空间域转换到频率域的&#xff0c;以及为什么这种转换在影像处理过程中是有用的。以及傅立叶变换的实际应…

微服务日常总结

1.当我们在开发中&#xff0c;需要连接多个库时&#xff0c;可以在yml中进行配置。 当在查询的时候&#xff0c;跨库时&#xff0c;需要通过DS 注解来指定&#xff0c;需要yml配置需要保持一致。 2. 当我们想把数据存入到clob类型中&#xff0c;需要再字段 的占位符后面加上j…

微服务--Nacos

一、Nacos简介 Nacos&#xff08;Naming and Configuration Service&#xff09;是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它致力于帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos支持几乎所有主流类型的服…

AFSim 仿真系统----性能工具

什么是 WPR/WPA&#xff1f; Windows 性能记录器 (WPR) 和 Windows 性能分析器 (WPA) 是 Windows 性能工具包中提供的性能监控工具。它们是免费的工具&#xff0c;可以通过下载和安装 Windows 评估和部署工具包 (ADK) 来获得。 WPR 是一个工具&#xff0c;允许用户动态部署事…