目录
GPIO端口8种模式
-
输入浮空
-
输入上拉
-
输入下拉
-
模拟输入
-
开漏输出
-
推挽输出
-
推挽复用功能
-
开漏复用功能
查看STM32F10x中文参考手册和STM32F4xx中文参考手册,确定上面8种模式是大体一致的。
STM32F103的GPIO配置
STM32F103的GPIO_InitTypedDef结构体如下:
typedef struct { uint16_t GPIO_Pin; /* 引脚 */ GPIOSpeed_TypeDef GPIO_Speed; /* 速度 */ GPIOMode_TypeDef GPIO_Mode; /* 工作模式 */ }GPIO_InitTypeDef;
STM32F103的GPIO_Mode取值如下:
工作模式 | F103对应值 |
---|---|
输入浮空 | GPIO_Mode_IN_FLOATING |
输入上拉 | GPIO_Mode_IPU |
输入下拉 | GPIO_Mode_IPD |
模拟输入 | GPIO_Mode_AIN |
开漏输出 | GPIO_Mode_Out_OD |
推挽输出 | GPIO_Mode_Out_PP |
推挽复用功能 | GPIO_Mode_AF_PP |
开漏复用功能 | GPIO_Mode_AF_OD |
STM32F103的GPIO_Speed取值如下:
最大输出频率 | F103对应值 |
---|---|
10MHz | GPIO_Speed_10MHz |
2MHz | GPIO_Speed_2MHz |
50MHz | GPIO_Speed_50MHz |
STM32FF10x手册中的部分说明:
STM32F407的GPIO配置
STM32F407的GPIO_InitTypedDef结构体如下:
typedef struct { uint32_t GPIO_Pin; /* 引脚 */ GPIOMode_TypeDef GPIO_Mode; /* 工作模式 */ GPIOSpeed_TypeDef GPIO_Speed; /* 速度 */ GPIOOType_TypeDef GPIO_OType; /* 输出类型 */ GPIOPuPd_TypeDef GPIO_PuPd; /* 上拉/下拉 */ }GPIO_InitTypeDef;
STM32F407的GPIO_Mode取值如下:
工作模式 | F407对应值 |
---|---|
输入 | GPIO_Mode_IN |
输出 | GPIO_Mode_OUT |
复用功能 | GPIO_Mode_AF |
模拟 | GPIO_Mode_AN |
STM32F407的GPIO_Speed取值如下:
最大输出频率 | F407对应值 |
---|---|
2MHz | GPIO_Speed_2MHz |
25MHz | GPIO_Speed_25MHz |
50MHz | GPIO_Speed_50MHz |
100MHz | GPIO_Speed_100MHz |
STM32F407的GPIO_OType取值如下:
输出类型 | F407对应值 |
---|---|
推挽 | GPIO_OType_PP |
开漏 | GPIO_OType_OD |
STM32F407的GPIO_PuPd取值如下:
极性 | F407对应值 |
---|---|
浮空 | GPIO_PuPd_NOPULL |
上拉 | GPIO_PuPd_UP |
下拉 | GPIO_PuPd_DOWN |
F4的GPIO的8种模式配置
模式类型 | GPIO_MODE | GPIO_OTYPE | GPIO_PUPD |
---|---|---|---|
输入浮空 | GPIO_Mode_IN | 不配置或任意配置 | GPIO_PuPd_NOPULL |
输入上拉 | GPIO_Mode_IN | 不配置或任意配置 | GPIO_PuPd_UP |
输入下拉 | GPIO_Mode_IN | 不配置或任意配置 | GPIO_PuPd_DOWN |
模拟功能 | GPIO_Mode_AN | 不配置或任意配置 | GPIO_PuPd_NOPULL |
开漏输出 | GPIO_Mode_OUT | GPIO_OType_OD | GPIO_PuPd_NOPULL / GPIO_PuPd_UP / GPIO_PuPd_DOWN |
推挽输出 | GPIO_Mode_OUT | GPIO_OType_PP | GPIO_PuPd_NOPULL / GPIO_PuPd_UP / GPIO_PuPd_DOWN |
推挽复用功能 | GPIO_Mode_AF | GPIO_OType_PP | GPIO_PuPd_NOPULL / GPIO_PuPd_UP / GPIO_PuPd_DOWN |
开漏复用功能 | GPIO_Mode_AF | GPIO_OType_OD | GPIO_PuPd_NOPULL / GPIO_PuPd_UP / GPIO_PuPd_DOWN |
PS:开漏输出、推挽输出、推挽复用功能、开漏复用功能的GPIO_PUPD三种都可设置,是根据F4手册说的“具有上拉或下拉功能的XXXX”,不过得分情况使用。如果是输出,一般选GPIO_PuPd_NOPULL,引脚能够正确地输出高电平低电平信号;如果是输入,具体看应用默认输入值0或1,0则GPIO_PuPd_DOWN,1则GPIO_PuPd_UP。
STM32F407手册部分说明: