平时在开发STM32时我们都会去配置每一个io口状态例如以下程序gpio_init_struct.Pin LED0_GPIO_PIN; 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);其中以下这两项配置相对来说比较重要模式io速度gpio_init_struct.Mode GPIO_MODE_OUTPUT_PP; gpio_init_struct.Speed GPIO_SPEED_FREQ_HIGH;根据手册可以发现模式可以分为以下几种输入功能引脚作为输入状态获取外部电压的状态高 低 两个电压状态─ 输入浮空 特点引脚内部不接入上下拉电阻其电压状态会随着外部电压状态变化而变化。 应用通常用于 I2C、USART 等需要外部上拉或特定协议控制的场景 ─ 输入上拉 特点引脚内部接入上拉电阻30~50k左右引脚内部通过一个电阻连接到 VCC高电平)外界不接负载时为高电平。 应用通常用于按键和开关检测等场景 ─ 输入下拉 特点引脚内部接入下拉电阻引脚内部通过一个电阻连接到 GND (低电平)外界不接负载时低电平。 应用通常用于默认电压为低状态场景模拟限号输入功能─ 模拟输入 特点引脚内部不接入下拉电阻且关闭施密特触发器外部电压会直接通过引脚进入ADCSTM32输入电压范围为0~3.3v。 应用通常用于测量电压值场景如传感器模拟信号采集过零检测等输出功能引脚作为输出与输入状态相反输出状态引脚将输出电压“驱动”外部负载高 低 两个电压状态─ 开漏输出 特点如图所示黄色部分输出“1”时P-MOS直接导通引脚直接接入VCC,即输出电压为VCC电压。 输出“0”时N-MOS直接导通引脚直接接入GND,即输出电压为GND电压。 应用通常用于驱动 LED蜂鸣器等低功率负载较大负载依旧建议外加上拉电阻。 ─ 推挽式输出 特点如图所示黄色部分P-MOS部分无效N-MOS工作状态为1时则N-MOS不导通高阻态模式状态为0时则N-MOS不导通。可以支持不同电压域通信比如 3.3V MCU 控制 5V设备 。 应用通常用于I2C 总线、单总线1-Wire或需要电平转换的场景。复用功能引脚不作为普通的 GPIO 使用而是交给片上外设如 SPI、UART、PWM控制时引脚就进入了复用模式。 ─ 推挽式复用功能 特点引脚状态是推挽结构输出不是数据寄存器ODR来负责而是由自外设寄存器来负责如 SPI 的时钟信号 SCK。 应用通常用于UART 的 TX 脚、SPI 的所有信号脚、PWM 输出场景。 ─ 开漏复用功能 特点引脚状态是推挽结构输入结果不是数据寄存器ODR来负责出处理而是由自外设寄存器来负责如 SPI 的时钟信号 SCK。 应用通常用于I2C 总线的 SCL 和 SDA 脚场景。引脚速率对于引脚速度要明白这里的“速度”并不是指数据传输的波特率而是指信号从低电平跳变到高电平或反之的上升沿和下降沿的陡峭程度。在stm32F103MCU中引脚速度有以下几个选项─ 低速 特点 引脚速度约为2MHz可以理解为高低电平反转速度最慢当然反转产生的电压噪声比较小电流相对来说比较稳定。 应用可以用用与LED、mos管控制。 ─ 中速 特点 引脚速度约为10MHz引脚反转速度和功耗方面居中。 应用在串行通讯spi 、iic、串口方面应用比较广。 ─ 高速 特点 引脚速度约为50MHz引脚输出驱动器全速工作。信号的上升/下降沿非常陡峭纳秒级电平反转产生的电压噪声比较大因此相对来说功耗比较大。应用在spi、fsmc、PWM输出应用比较广。
stm32 gpio配置分析
发布时间:2026/5/16 20:02:38
平时在开发STM32时我们都会去配置每一个io口状态例如以下程序gpio_init_struct.Pin LED0_GPIO_PIN; 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);其中以下这两项配置相对来说比较重要模式io速度gpio_init_struct.Mode GPIO_MODE_OUTPUT_PP; gpio_init_struct.Speed GPIO_SPEED_FREQ_HIGH;根据手册可以发现模式可以分为以下几种输入功能引脚作为输入状态获取外部电压的状态高 低 两个电压状态─ 输入浮空 特点引脚内部不接入上下拉电阻其电压状态会随着外部电压状态变化而变化。 应用通常用于 I2C、USART 等需要外部上拉或特定协议控制的场景 ─ 输入上拉 特点引脚内部接入上拉电阻30~50k左右引脚内部通过一个电阻连接到 VCC高电平)外界不接负载时为高电平。 应用通常用于按键和开关检测等场景 ─ 输入下拉 特点引脚内部接入下拉电阻引脚内部通过一个电阻连接到 GND (低电平)外界不接负载时低电平。 应用通常用于默认电压为低状态场景模拟限号输入功能─ 模拟输入 特点引脚内部不接入下拉电阻且关闭施密特触发器外部电压会直接通过引脚进入ADCSTM32输入电压范围为0~3.3v。 应用通常用于测量电压值场景如传感器模拟信号采集过零检测等输出功能引脚作为输出与输入状态相反输出状态引脚将输出电压“驱动”外部负载高 低 两个电压状态─ 开漏输出 特点如图所示黄色部分输出“1”时P-MOS直接导通引脚直接接入VCC,即输出电压为VCC电压。 输出“0”时N-MOS直接导通引脚直接接入GND,即输出电压为GND电压。 应用通常用于驱动 LED蜂鸣器等低功率负载较大负载依旧建议外加上拉电阻。 ─ 推挽式输出 特点如图所示黄色部分P-MOS部分无效N-MOS工作状态为1时则N-MOS不导通高阻态模式状态为0时则N-MOS不导通。可以支持不同电压域通信比如 3.3V MCU 控制 5V设备 。 应用通常用于I2C 总线、单总线1-Wire或需要电平转换的场景。复用功能引脚不作为普通的 GPIO 使用而是交给片上外设如 SPI、UART、PWM控制时引脚就进入了复用模式。 ─ 推挽式复用功能 特点引脚状态是推挽结构输出不是数据寄存器ODR来负责而是由自外设寄存器来负责如 SPI 的时钟信号 SCK。 应用通常用于UART 的 TX 脚、SPI 的所有信号脚、PWM 输出场景。 ─ 开漏复用功能 特点引脚状态是推挽结构输入结果不是数据寄存器ODR来负责出处理而是由自外设寄存器来负责如 SPI 的时钟信号 SCK。 应用通常用于I2C 总线的 SCL 和 SDA 脚场景。引脚速率对于引脚速度要明白这里的“速度”并不是指数据传输的波特率而是指信号从低电平跳变到高电平或反之的上升沿和下降沿的陡峭程度。在stm32F103MCU中引脚速度有以下几个选项─ 低速 特点 引脚速度约为2MHz可以理解为高低电平反转速度最慢当然反转产生的电压噪声比较小电流相对来说比较稳定。 应用可以用用与LED、mos管控制。 ─ 中速 特点 引脚速度约为10MHz引脚反转速度和功耗方面居中。 应用在串行通讯spi 、iic、串口方面应用比较广。 ─ 高速 特点 引脚速度约为50MHz引脚输出驱动器全速工作。信号的上升/下降沿非常陡峭纳秒级电平反转产生的电压噪声比较大因此相对来说功耗比较大。应用在spi、fsmc、PWM输出应用比较广。