news 2026/10/29 20:26:42

GPIO概念

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GPIO概念

1. 什么是GPIO

•GPIO是通用输入输出端口,是(General-purpose input output)的英文简写。是所有微控制器必不可少的外设之一,其作用是可以由STM32直接驱动从而和外界进行交互,从而实现和外界设备进行通信,控制,采集以及捕获的功能。
•GPIO口可以配置成多种工作模式,如图:

•STM32单片机中有多组GPIO口,例如:GPIOA,GPIOB等等,每组最多有16个引脚,不同型号的单片机所拥有的GPIO口数量不同。

•STM32单片机引脚的电压为0-3.3v,部分引脚为5v。

2. GPIO的4种输出模式

•这四种输出模式为:通用输出推挽,通用输出开漏,复用输出推挽,通用输出开漏。

•GPIO输出的结构简图:有两种方法可以控制GPIO的输出,一种是CPU,一种是其他片上外设。

•输出高电压,还是低电压本质上是控制那个MOS管闭合,那个MOS官断开。

• 如图:

2.1 通用输出推挽和通用输出开漏的区别

2.1.1 通用输出推挽

•简图

•推挽:既能输出低电压也能输出高电压。在推挽输出工作模式下,P-MOS和N-MOS都工作,当输出高电压的时候,N-MOS不导通,P-MOS导通输出高电压。当输出低电压的时候,P-MOS不导通,N-MOS导通输出低电压,因此P-MOS和N-MOS是交替执行的。

2.1.2 通用输出开漏

•简图

•开漏输出:只能输出低电压。在开漏输出工作模式下,只有N-MOS工作,只有N-MOS导通输出低电压。就算我们要求输出高电压它也是无效的,P-MOS不会工作。

•这是由于三极管内部的的漏极是开路的,也就是无论写1还是写0,P-MOS始终是断开的,所以vdd这一极是没有办法导通的。就算在输出寄存器里面写1,此时,N-MOS不导通,并且P-MOS也不工作,此时整个引脚上面的电流恒为0(无论是加多大电压),但是此时写1,由于这两个三极管都没法导通,在这个时候无论我们给这个引脚给多大电压,此时这个引脚是高阻抗状态(根据欧姆定律)。

•三极管的内部图:

2.2 复用和通用的区别

•简图

•本质上,通用 是 由cpu控制,复用 是 由片上其他外设控制,如果片上的其他外设用到GPIO,那么外设也可以控制GPIO来进行输出。本质上就是控制权是CPU还是片上外设。

•例如,串口发送数据那样,就要通过GPIO来发送。如图:

3. GPIO的输出速度

•什么是GPIO的最大输出速度:向GPIO交替写0和1 并且 输出不失真(输出的波形是否正常)的 数据(有效电压)的 最快速度。

• 如图:

3.1 上升时间,下降时间和保持时间的概念

•在理想的状态,写0和写1是立刻得到的,如图:

•就是0立刻变成1,1立刻变成0。

•但是实际上,0变1,1变0是需要时间来慢慢变成的,如图:

•上升时间是低电压变成高电压的时间,下降时间是高电压变成低电压的,保持时间是保持有效电压(3.3v)的时间。

3.2 什么限制了GPIO的最大输出速度

•上升时间和下降时间的长短影响了最大输出速度。其实就是写0和写1的速度,如图:

•注:时间 和 速度,可不能混淆。

•第三种已经是没法输出有效电压了。

•速度越来越快 保持有效电压的时间 就越来越短。

•例如,假如我们想保持第三种的速度,但是又不想数据失真,就可以减少上升和下降的时间,也就是让线变得陡峭。

•如图:

3.3 F103系列的三种速度

•如图:

•最大输出速度如何选择

•选取 满足要求 的最小值,过于陡峭的边沿会增加耗电、并引入EMI(电磁干扰)问题,如图:

4. LED闪灯

• 示例代码

#include "stm32f10x.h" #include "delay.h" int main(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//开启GPIOC的时钟 GPIO_InitTypeDef gpio_struct = {0}; gpio_struct.GPIO_Mode = GPIO_Mode_Out_OD; gpio_struct.GPIO_Pin = GPIO_Pin_13; gpio_struct.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOC,&gpio_struct);//配置GPIO while(1) { GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);//亮 Delay(100); GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);//熄灭 Delay(100); } }

5. 输入模式

5.1 GPIO输入的结构简图

•如图:

•上拉和下拉电阻 是 提供稳定电压,如果没有这两个电阻,那么此时的引脚状态是浮空的,会受外界静电等影响,那么会使这里面的数据寄存器一会0,一会1那样,如果没有外接其他模块。

•施密特触发器:将输入的电压值转为数值(0或者1)

•如果外界有输入,那么3.3v还是直接输入转化为1,0v还是0。不会受到上拉或者下拉电阻影响。

•施密特触发器的一段是没电流流过(无论是加多大的电压),就会导致那端电阻是非常大的,当上拉电阻闭合,如果此时,没有外接其他模块或者没有输入的时候,那么由于vdd是提供3.3v电压,此时这个触发器的电阻比上拉电阻的阻值大,就会分走3.3v电压,所以此时经过触发器转换得到1,然后写入数据寄存器中。

6. 按键实验

• 示例代码

#include "stm32f10x.h" int main(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启GPIOA时钟 GPIO_InitTypeDef gpio_initstruct = {0}; gpio_initstruct.GPIO_Mode = GPIO_Mode_Out_PP; gpio_initstruct.GPIO_Pin = GPIO_Pin_0; gpio_initstruct.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOA,&gpio_initstruct); gpio_initstruct.GPIO_Mode = GPIO_Mode_IPU; gpio_initstruct.GPIO_Pin = GPIO_Pin_1; GPIO_Init(GPIOA,&gpio_initstruct); while(1)//这个led是外接的 { if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1) == Bit_RESET){ GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);//亮 }else { GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);//灭 } } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 16:43:16

VMware macOS虚拟化解锁工具Unlocker完整使用指南

VMware macOS虚拟化解锁工具Unlocker完整使用指南 【免费下载链接】unlocker 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 在传统PC硬件上运行macOS系统一直是技术爱好者关注的热点话题,VMware macOS解锁工具Unlocker通过创新的二进制修补技术…

作者头像 李华
网站建设 2026/10/28 16:36:06

WeMod专业版完全解锁指南:3步实现永久免费特权体验

想要零成本获取WeMod专业版的全部高级功能?这款专业的WeMod解锁工具通过智能路径识别和双重补丁模式,让你轻松实现永久免费的专业版体验。WeMod Patcher作为专门针对游戏辅助工具的解锁方案,采用安全的本地文件修改技术,确保补丁过…

作者头像 李华
网站建设 2026/10/28 17:25:54

MAA明日方舟智能辅助工具:重新定义你的游戏体验

MAA明日方舟智能辅助工具:重新定义你的游戏体验 【免费下载链接】MaaAssistantArknights 一款明日方舟游戏小助手 项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights 还在为明日方舟的重复操作感到疲惫吗?MAA智能辅助工具…

作者头像 李华
网站建设 2026/10/28 17:03:06

如何彻底解决手柄漂移问题?Joy-Con Toolkit专业调试指南

在紧张的游戏对抗中,你是否曾因手柄摇杆自动移动而错失关键操作?或者面对单调的手柄配色感到审美疲劳?Joy-Con Toolkit作为一款完全免费的开源工具,专门为任天堂Joy-Con手柄提供全方位的调试和个性化服务,让普通玩家也…

作者头像 李华
网站建设 2026/10/27 9:40:50

MTKClient终极指南:从零开始掌握联发科设备调试

MTKClient作为一款革命性的联发科设备调试工具,以其跨平台特性和图形化界面,彻底改变了传统刷机操作的复杂体验。无论你是设备维修新手还是技术爱好者,都能通过本指南快速上手,掌握设备调试的无限可能。 【免费下载链接】mtkclien…

作者头像 李华
网站建设 2026/10/27 9:40:50

Godot游戏解包终极指南:5分钟快速提取PCK文件资源

Godot游戏解包终极指南:5分钟快速提取PCK文件资源 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 你是否曾经想要查看Godot游戏内部的资源文件,却不知道如何操作?…

作者头像 李华