嵌入式开发笔记:STM32的外设GPIO知识学习

GPIO简介:

• GPIO ( General Purpose Input Output )通用输入输出口
• 可配置为 8 种输入输出模式
• 引脚电平: 0V~3.3V ,部分引脚可容忍 5V (如舵机和驱动直流电机)
• 输出模式下可控制端口输出高低电平,用以驱动 LED 、控制蜂鸣器、模拟通信协议输出时序等
• 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、 ADC 电压采集、模拟通信协议接收数据等


GPIO基本结构:


GPIO位结构:


GPIO模式:

提示:通过配置GPIO的端口配置寄存器,端口可以配置成以下8种模式

|----------|--------|---------------------------|
| 模式名称 | 性质 | 特征 |
| 浮空输入 | 数字输入 | 可读取引脚电平,若引脚悬空,则电平不确定 |
| 上拉输入 | 数字输入 | 可读取引脚电平,内部连接上拉电阻,悬空时默认高电平 |
| 下拉输入 | 数字输入 | 可读取引脚电平,内部连接下拉电阻,悬空时默认低电平 |
| 模拟输入 | 模拟输入 | GPIO无效,引脚直接接入内部ADC |
| 开漏输出 | 数字输出 | 可输出引脚电平,高电平为高阻态,低电平接VSS |
| 推挽输出 | 数字输出 | 可输出引脚电平,高电平接VDD,低电平接VSS |
| 复用开漏输出 | 数字输出 | 由片上外设控制,高电平为高阻态,低电平接VSS |
| 复用推挽输出 | 数字输出 | 由片上外设控制,高电平接VDD,低电平接VSS |

浮空/上拉/下拉输入:

模拟输入:

开漏/推挽输出 :

复用开漏/推挽输出

GPIO库函数 :

|-------------------------------|-------------------------------------------------|
| ### 函数名 | ### 描述 |
| ###### GPIO_DeInit | ###### 将外设 GPIOx 寄存器重设为缺省值 |
| ###### GPIO_AFIODeInit | ###### 将复用功能(重映射事件控制和 EXTI 设置)重设为缺省值 |
| ###### GPIO_Init | ###### 根据 GPIO_InitStruct 中指定的参数初始化外设 GPIOx 寄存器 |
| ###### GPIO_StructInit | ###### 把 GPIO_InitStruct 中的每一个参数按缺省值填入 |
| ###### GPIO_ReadInputDataBit | ###### 读取指定端口管脚的输入 |
| ###### GPIO_ReadInputData | ###### 读取指定的 GPIO 端口输入 |
| ###### GPIO_ReadOutputDataBit | ###### 读取指定端口管脚的输出 |
| ###### GPIO_ReadOutputData | ###### 读取指定的 GPIO 端口输出 |
| ###### GPIO_SetBits | ###### 设置指定的数据端口位 |
| ###### GPIO_ResetBits | ###### 清除指定的数据端口位 |
| ###### GPIO_WriteBit | ###### 设置或者清除指定的数据端口位 |
| ###### GPIO_Write | ###### 向指定 GPIO 数据端口写入数据 |
| ###### GPIO_PinLockConfig | ###### 锁定 GPIO 管脚设置寄存器 |
| ###### GPIO_EventOutputConfig | ###### 选择 GPIO 管脚用作事件输出 |
| ###### GPIO_EventOutputCmd | ###### 使能或者失能事件输出 |
| ###### GPIO_PinRemapConfig | ###### 改变指定管脚的映射 |
| ###### GPIO_EXTILineConfig | ###### 选择 GPIO 管脚用作外部中断线路 |

相关推荐
兔子不吃草~15 小时前
Transformer学习记录与CNN思考
学习·cnn·transformer
ZZHow102415 小时前
Maven入门_简介、安装与配置
java·笔记·maven
月阳羊15 小时前
【硬件-笔试面试题-95】硬件/电子工程师,笔试面试题(知识点:RC电路中的时间常数)
java·经验分享·单片机·嵌入式硬件·面试
与己斗其乐无穷16 小时前
C++学习记录(8)list
学习
有谁看见我的剑了?16 小时前
k8s-容器探针和生命周期回调学习
学习·容器·kubernetes
芜狄18 小时前
UCOSIII移植——学习笔记1
笔记·嵌入式硬件·学习·stm32f103rct6·ucosiii实时操作系统
所愿ღ18 小时前
JavaWeb-Servlet总结及JSP
java·笔记·servlet
小莞尔19 小时前
【51单片机】【protues仿真】基于51单片机数控直流稳压电源系统
c语言·stm32·单片机·嵌入式硬件·51单片机
小莞尔19 小时前
【51单片机】【protues仿真】基于51单片机密码锁系统
c语言·stm32·单片机·嵌入式硬件·51单片机
黑不拉几的小白兔19 小时前
stm32教程:USART串口通信
stm32·单片机·嵌入式硬件