GPIO 四种输入模式
- 浮空输入 GPIO_Mode_IN_FLOATING
- 上拉输入 GPIO_Mode_IPU
- 下拉输入 GPIO_Mode_IPD
- 模拟输入 GPIO_Mode_AIN
GPIO四种输出模式
- 开漏输出 GPIO_MODE_OUTPUT_OD
- 推挽输出 GPIO_MODE_OUTPUT_PP
- 开漏复用输出 GPIO_MODE_AF_OD
- 推挽复用输出 GPIO_MODE_AF_PP
基于stm32F4xx的GPIO配置
- 时钟使能 (AHB1总线控制GPIO时钟)(F4系列特性)
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE) - 初始化结构体设置工作模式
示例
__HAL_RCC_GPIOF_CLK_ENABLE()
GPIO_InitTypeDef gpio_init_struct;
gpio_init_struct.Pin = LED0_GPIO_PIN; /* LED0ӽޅ */
gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; /* ΆάˤԶ */
gpio_init_struct.Pull = GPIO_PULLUP; /* ʏ- */
gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; /* ٟ̙ */
HAL_GPIO_Init(LED0_GPIO_PORT, &gpio_init_struct);
结构体定义:
typedef struct
{
uint32_t Pin; /*!< Specifies the GPIO pins to be configured.
This parameter can be any value of @ref GPIO_pins_define */
uint32_t Mode; /*!< Specifies the operating mode for the selected pins.
This parameter can be a value of @ref GPIO_mode_define */
uint32_t Pull; /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.
This parameter can be a value of @ref GPIO_pull_define */
uint32_t Speed; /*!< Specifies the speed for the selected pins.
This parameter can be a value of @ref GPIO_speed_define */
uint32_t Alternate; /*!< Peripheral to be connected to the selected pins.
This parameter can be a value of @ref GPIO_Alternate_function_selection */
}GPIO_InitTypeDef;
(1) 作为普通GPIO输入:
根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。
(2) 作为普通GPIO输出:
根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。
(3) 作为普通模拟输入:
配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。(A/D模拟输入)
(4) 作为内置外设的输入:
根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。
(5)作为内置外设的输出:
根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。
原文链接
1、普通推挽输出(GPIO_Mode_Out_PP):
使用场合: 一般用在0V和3.3V的场合。线路经过两个P_MOS 和N_MOS 管,负责上拉和下拉电流。
使用方法: 直接使用
输出电平: 推挽输出的低电平是0V,高电平是3.3V。
2、普通开漏输出(GPIO_Mode_Out_OD):
使用场合: 一般用在电平不匹配的场合,如需要输出5V的高电平。
使用方法: 就需要再外部接一个上拉电阻,电源为5V,把GPIO设置为开漏模式, 当输出高组态时,由上拉电阻和电源向外输出5V的电压。
输出电平: 在开漏输出模式时,如果输出为0,低电平,则使N_MOS 导通,使输 出接地。若控制输出为1(无法直接输出高电平),则既不输出高电平 也不输出低电平,为高组态。为正常使用,必须在外部接一个上拉电 阻。
特性: 它具“线与”特性,即很多个开漏模式 引脚连接到一起时,只有当所有 引脚都输出高阻态,才由上拉电阻提供高电平,此高电平的电压为外部 上拉电阻所接的电源的电压。若其中一个引脚为低电平,那线路就相当 于短路接地,使得整条线路都为低电平,0 伏。
3、复用推挽输出(GPIO_Mode_AF_PP): 用作串口的输出。
4、复用开漏输出(GPIO_Mode_AF_OD): 用在IIC。
所有的开漏输出都需要接上拉电阻。
原文链接