1. STM32F103 GPIO引脚功能概述
STM32F103系列微控制器的GPIO(通用输入输出)模块是其最基础也最核心的外设之一。作为嵌入式开发者,我们必须深入理解每个GPIO引脚的多重身份和灵活配置方式。
GPIO模块的主要特点包括:
- 每个GPIO端口最多16个引脚(PA0-PA15, PB0-PB15等)
- 独立可配置的输入/输出模式
- 可编程的输出速度(2MHz/10MHz/50MHz)
- 内置上拉/下拉电阻
- 支持外部中断/唤醒功能
- 灵活的复用功能映射机制
在实际项目中,我曾遇到一个典型的GPIO配置问题:某次需要同时使用USART1和TIM1的PWM输出,但发现PA9和PA10引脚被两个外设复用。通过深入研究GPIO复用功能映射,最终采用AFIO重映射功能解决了冲突。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. GPIO工作模式详解
2.1 输入模式配置
输入模式是GPIO最基础的功能,STM32F103提供四种输入配置:
-
浮空输入(GPIO_MODE_IN_FLOATING)
- 典型应用:外部按键检测
- 特点:引脚悬空时电平不确定
- 配置示例:
c复制
GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-
上拉输入(GPIO_MODE_INPUT + GPIO_PULLUP)
- 典型应用:节省外部上拉电阻
- 特点:默认高电平,按下按键变低
- 注意事项:上拉电阻约40kΩ
-
下拉输入(GPIO_MODE_INPUT + GPIO_PULLDOWN)
- 典型应用:确保悬空时为确定电平
- 特点:默认低电平
-
模拟输入(GPIO_MODE_ANALOG)
- 典型应用:ADC采样
- 特点:禁用施密特触发器,直接连接至ADC
重要提示:PC13-PC15引脚在STM32F103C8T6上只能用作特定功能,不能配置为普通GPIO输入。我曾在一个项目中误将PC14配置为输入模式,导致系统无法正常工作。
2.2 输出模式配置
输出模式分为推挽和开漏两种:
-
推挽输出(GPIO_MODE_OUTPUT_PP)
- 特点:可输出高/低电平
- 驱动能力:±20mA(单个引脚)
- 典型应用:LED控制、普通数字输出
-
**开漏输出(GPIO_MOD
