简介
- GPIO(General Purpose Input Output)有输入输出两种模式,并且可配置8中输入输出模式。
- 引脚电平为0~3.3V,部分引脚可容忍5V(输入的5V,所有引脚输出最大为3.3V)。
- 输出模式:输出模式下可控制端口输出高低电平,用以驱动LED,控制蜂鸣器,模拟通信协议输出时序(IIC,SPI等协议)等。
- 输入模式:输入模式下可读取端口的高低电平,用于读取按键输入,外接模块电平信号输入,ADC电压采集,模拟通信协议接收数据等。
GPIO的基本结构
要注意在STM32中所有的GPIO都是在APB2外设总线上的,在使用GPIO时,打开时钟的方式是一样的。
GPIO模式
模式名称 | 性质 | 特征 | 代码 |
---|---|---|---|
浮空输入 | 数字输入 | 可读取引脚电平,若引脚悬空,则电平不确定 | GPIO_Mode_IN_FLOATING |
上拉输入 | 数字输入 | 可读取引脚电平,内部连接上拉电阻,悬空时默认高电平 | GPIO_Mode_IPU |
下拉输入 | 数字输入 | 可读取引脚电平,内部连接下拉电镀,悬空时默认低电平 | GPIO_Mode_IPD |
模拟输入 | 数字输入 | GPIO无效,引脚直接接入内部ADC | GPIO_Mode_AIN |
开漏输出 | 数字输出 | 可输出引脚电平,高电平为高阻态,低电平接VSS | GPIO_Mode_Out_OD |
推挽输出 | 数字输出 | 可输出引脚电平,高电平接VDD,低电平接VSS | GPIO_Mode_PP |
复用开漏输出 | 数字输出 | 由片上外设控制高电平为高阻态,低电平接VSS | GPIO_Mode_AF_OD |
复用推挽输出 | 数字输出 | 由片上外设控制,高电平接VDD,低电平接VSS | GPIO_Mode_AF_PP |
GPIO库函数
函数名 | 功能 |
---|---|
GPIO_DeInit | 复位所指定的GPIO外设 |
GPIO_AFIODeInit | 复位所指定的AFIO外设 |
GPIO_Init | 用结构体的参数初始化GPIO口 |
GPIO_StructInit | 把结构体变量赋一个默认值 |
GPIO_ReadInputDataBit | GPIO读取函数 |
GPIO_ReadInputData | GPIO读取函数 |
GPIO_ReadOutputDataBit | GPIO读取函数 |
GPIO_ReadOutputData | GPIO读取函数 |
GPIO_SetBits | GPIO写入函数 |
GPIO_ResetBits | GPIO写入函数 |
GPIO_WriteBit | GPIO写入函数 |
GPIO_Write | GPIO写入函数 |
GPIO_PinLockConfig | 锁定GPIO的引脚防止意外更改 |
GPIO_EventOutputConfig | 配置AFIO事件输出功能 |
GPIO_EventOutputCmd | 配置AFIO事件输出功能 |
GPIO_PinRemapConfig | 进行引脚重映射 |
GPIO_EXTILineConfig | 配置AFIO的数据选择器,设置中断引脚 |
GPIO_ETH_MediaInterfaceConfig | 配置以太网外设 |
上面表格为全部官方所封装的GPIO函数,其中有部分函数是关于AFIO的,表格中只提及了函数功能,具体参数配置可在官方给出的stm32f10x_gpio.c,stm32f10x_gpio.h中查看