单片机外设快速入门篇(五)——GPIO篇

news/2025/3/21 20:45:55/

文章目录

  • 一、GPIO输入模式
  • ​二.GPIO输出模式
  • 三.GPIO配置步骤

GPIO_2">一、GPIO输入模式

​1. 浮空输入(Floating Input)​
​原理:引脚电平完全由外部电路决定,无内部上拉或下拉电阻。
​特点:
悬空时电平不确定(易受干扰)。
需外部电路确保稳定电平。
​适用场景:外部信号源已有明确电平驱动(如SPI通信、ADC采样)。
​2. 上拉输入(Pull-up Input)​
​原理:内部上拉电阻将引脚默认拉至高电平(VCC)。
​特点:
悬空时引脚为高电平。
外部接地时变为低电平。
​适用场景:按键检测(按键未按下时为高电平,按下时接地为低电平)。
​3. 下拉输入(Pull-down Input)​
​原理:内部下拉电阻将引脚默认拉至低电平(GND)。
​特点:
悬空时引脚为低电平。
外部接高电平时变为高电平。
​适用场景:传感器触发信号(如高电平有效的中断信号)。

GPIO_22">​二.GPIO输出模式

​1. 推挽输出(Push-Pull Output)​
​原理:
输出高电平时:MOS管导通,引脚连接VCC。
输出低电平时:MOS管导通,引脚连接GND。
​特点:
高低电平驱动能力强,可直接驱动LED、继电器等。
电平稳定,抗干扰能力强。
​适用场景:普通数字信号输出(如控制LED、蜂鸣器)。

​2. 开漏输出(Open-Drain Output)​
​原理:
输出低电平时:MOS管导通,引脚连接GND。
输出高电平时:MOS管关闭,引脚为高阻态(需外接上拉电阻)。
​特点:
高电平依赖外部上拉电阻。
支持“线与”逻辑(多设备共享总线)。
​适用场景:
I²C、SMBus等通信总线。
电平转换(如5V与3.3V设备兼容)。

​3. 复用功能输出(Alternate Function Output)​
​原理:GPIO引脚配置为特定外设功能(如UART、SPI、PWM等)。
​特点:信号由外设模块自动控制。
​适用场景:外设专用通信或控制(如定时器输出PWM波)。

特殊模式
​1. 模拟输入(Analog Input)​
​原理:引脚直接连接ADC(模数转换器),读取模拟电压。
​适用场景:传感器模拟信号采集(如温度、光照强度)。
​2. 高阻态(High-Z)​
​原理:引脚既非输入也非输出,呈现高阻抗状态。
​适用场景:总线冲突避免或信号隔离。

GPIO_57">三.GPIO配置步骤

​时钟使能:开启对应GPIO端口的时钟。
​引脚模式设置:选择输入/输出/复用/模拟模式。
​输出类型设置:推挽或开漏输出。
​上拉/下拉配置:选择是否启用内部电阻。
​速度配置:设置输出驱动速度(低速/中速/高速)。

// STM32 HAL库配置示例(推挽输出)
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_5;           // 选择引脚
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出
GPIO_InitStruct.Pull = GPIO_NOPULL;         // 不启用上拉/下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // 高速驱动
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);     // 初始化GPIOA

http://www.ppmy.cn/news/1580967.html

相关文章

基于Spring Boot的流浪动物救助平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

在uml中,为什么用泛化而不用继承这个词语?

背景 作为Java开发者,UML(统一建模语言)我们学习的时间和应用java语言开发的时间已经有10余年了,我们学习的知识越来越多,因为不擅长做结构化,不擅长提问题,以至于知识都是割裂的,所…

区块链智能合约实训室解决方案

一、建设背景与趋势 区块链,这一融合了分布式储存、信息传输、密码学、匿名技术和经济学等多领域学科的创新技术,自诞生以来便引发了全球范围内的广泛关注。从最初的概念提出到如今在各个行业的深入应用,区块链正以前所未有的速度改变着我们…

企业微信单点登录集成

1.进入企业微信后台应用管理配置应用信息 2.配置网页授权及JS-SDK (设置可信域名需要和企业信息相关) 通过配置IIS设置可快速解决,在自己的域名管理平台配置域名解析到自己的服务器上; window搜索IIS 配置web信息,将下载的文件…

如何启用 HTTPS 并配置免费的 SSL 证书

引言 HTTPS 已成为现代网站安全性的基础要求。通过 SSL/TLS 证书对数据进行加密,不仅可以保护用户隐私,还能提升搜索引擎排名并增强用户信任。本指南将详细介绍如何通过 Lets Encrypt(免费、自动化的证书颁发机构)为您的网站启用…

C++内存分配方式

文章目录 1、静态内存分配2、栈内存分配3、堆内存分配4、内存池分配5、placement new语法工作原理示例 placement new应用场景 在C 中,内存分配主要有以下几种方式: 1、静态内存分配 特点:在编译时就确定了内存的分配和释放,内存…

qml中ComboBox组件onCurrentIndexChanged与onActivated的使用

在qml页面中使用ComboBox时,一般会有以下用法: ComboBox{id: boxmodel: yourBindingModelonCurrentIndexChanged: { //业务代码} } 通常不会有什么问题,切换下拉列表时触发onCurrentIndexChanged,然后执行业务代码。 但是&am…

MATLAB语法速成-对照C语言学习

一、变量与数据类型 变量声明:MATLAB 是动态类型语言,无需提前声明变量类型。例如: a 5; % 定义一个整数变量 b 3.14; % 定义一个浮点数变量 c Hello; % 定义一个字符串变量数据类型:常见的数据类型有数值类型(整…