深入解析 STM32 GPIO:结构、配置与应用实践

devtools/2025/2/12 2:36:45/

        理解 GPIO 的工作原理和配置方法是掌握 STM32 开发的基础,后续的外设(如定时器、ADC、通信接口)都依赖于 GPIO 的正确配置。

目录

一、GPIO 的基本概念

二、GPIO 的主要功能

三、GPIO 的内部结构

四、GPIO 的工作模式

1. 输入模式

2. 输出模式

3. 复用功能模式

4. 模拟模式

五、GPIO 的配置寄存器

六、GPIO 的配置步骤(以点亮 LED 为例)

1. 使能 GPIO 时钟

2. 配置 GPIO 模式

3. 控制电平

七、GPIO 的应用场景

八、注意事项

九、总结


一、GPIO 的基本概念

        GPIO(General Purpose Input/Output,通用输入输出)是 STM32 微控制器上的一种多功能引脚,可以通过软件配置为输入或输出模式,用于与外部设备进行数字信号交互。每个 GPIO 引脚都可以独立配置,支持多种工作模式和功能。


二、GPIO 的主要功能

  1. 数字输入:读取外部信号的电平状态(高电平或低电平)。

  2. 数字输出:控制引脚输出高电平或低电平。

  3. 复用功能:将引脚配置为特殊功能(如串口、SPI、I2C 等)。

  4. 模拟功能:将引脚配置为模拟输入(用于 ADC)或模拟输出(用于 DAC)。


三、GPIO 的内部结构

STM32 的 GPIO 内部结构较为复杂,但可以简化为以下几个关键部分:

  1. 输入驱动器

    • 通过施密特触发器将外部信号转换为数字信号(0 或 1)。

    • 支持上拉/下拉电阻,用于稳定电平。

  2. 输出驱动器

    • 推挽输出:通过 PMOS 和 NMOS 管实现高电平和低电平输出。

    • 开漏输出:仅通过 NMOS 管实现低电平输出,高电平需要外部上拉电阻。

  3. 复用功能选择器

    • 将引脚连接到内部外设(如 USART、SPI 等)。

  4. 模拟开关

    • 将引脚连接到 ADC 或 DAC。


四、GPIO 的工作模式

STM32 的 GPIO 支持多种工作模式,具体如下:

1. 输入模式
  • 浮空输入(Floating Input)

    • 引脚电平完全由外部电路决定,内部无上拉/下拉电阻。

    • 适用于外部电路已提供明确电平的场景。


http://www.ppmy.cn/devtools/157658.html

相关文章

npm与包

在 Node.js 的生态系统中,npm(Node Package Manager)扮演着至关重要的角色。它不仅是管理项目依赖的强大工具,还提供了丰富的第三方库和工具,极大地提高了开发效率。本文将详细介绍 npm 的基本概念、常用命令以及如何创…

w196Spring Boot高校教师科研管理系统设计与实现

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…

机器学习 —— 深入剖析线性回归模型

一、线性回归模型简介 线性回归是机器学习中最为基础的模型之一,主要用于解决回归问题,即预测一个连续的数值。其核心思想是构建线性方程,描述自变量(特征)和因变量(目标值)之间的关系。简单来…

使用wpa_supplicant和wpa_cli 扫描wifi热点及配网

一:简要说明 交叉编译wpa_supplicant工具后会有wpa_supplicant和wpa_cli两个程序生产,如果知道需要连接的wifi热点及密码的话不需要遍历及查询所有wifi热点的名字及信号强度等信息的话,使用wpa_supplicant即可,否则还需要使用wpa_…

redis底层数据结构——整数集合

文章目录 定义内部实现升级升级的好处提升灵活性节约内存 降级总结 定义 整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层…

NetCore项目实现IP黑名单功能

文章目录 前言代码配置技术细节小结 前言 使用场景:使用IP黑名单防止已知恶意 IP 地址的访问,降低系统被攻击的风险。阻止来自特定 IP 地址的大量请求,可以减轻分布式拒绝服务(DDoS)攻击的影响。通过监控访问日志&…

【WB 深度学习实验管理】使用 PyTorch Lightning 实现高效的图像分类实验跟踪

本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到,别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在机器学习项目中,实验跟踪和结果可视化是至关重要的环节。无论是调整超参数、优化模型架构,还是监…

Linux内核链表

Linux内核链表 去掉了一些硬件级宏定义。 /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_LIST_H #define _LINUX_LIST_H#define NOT_SUPPORT_TYPEOF 0 //不支持typeof获取pos类型/*双向链表*/ /** Circular doubly linked list implementation.** Some of the in…