stm32F103RCT6端口复用
时间: 2025-02-20 21:33:02 浏览: 66
### 配置STM32F103RCT6微控制器的端口复用功能
#### GPIO概述
通用输入输出接口(General Purpose Input Output, GPIO)允许开发者通过编程控制外部设备。对于STM32系列单片机而言,GPIO提供了多种操作模式来适应不同的应用场景需求。
#### GPIO的工作模式
STM32F103RCT6支持8种基本工作模式[^1]:
- 输入浮空 (Input Floating)
- 输入上拉 (Input Pull-up)
- 输入下拉 (Input Pull-down)
- 复用推挽输出 (Alternate Function Push- 复用开漏输出 (Alternate Function Open Drain)
- 推挽输出 (Push-pull Output)
- 开漏输出 (Open-drain Output)
- 模拟输入 (Analog Input)
#### GPIO相关寄存器介绍
为了实现上述各种模式的功能切换以及状态读取等功能,每组I/O口中包含了多个重要的寄存器用于配置和管理这些引脚的行为:
- **CRL/CRH**: 这些是配置寄存器,用来设置对应管脚的具体属性,比如速度、上下拉电阻等特性。
- **IDR**: 数据输入寄存器,反映当前实际电平情况。
- **ODR**: 输出数据寄存器,决定了该引脚要输出什么样的逻辑信号。
- **BSRR/BRR/LCKR**: 分别负责执行位带设定清除动作、单独清零某一位的操作还有锁定某些特定配置防止意外更改的作用[^2]。
#### 实现端口复用配置实例
当涉及到外设通信时,通常会使用到复用功能。下面是一个具体的例子——将PA9配置成USART1_TXD线路上使用的TX引脚:
```c
#include "stm32f1xx_hal.h"
void MX_GPIO_Init(void){
__HAL_RCC_GPIOA_CLK_ENABLE(); //使能GPIOA时钟
GPIO_InitTypeDef GPIO_InitStruct = {0};
/*Configure GPIO pin : PA9 */
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; // 设置为复用推挽输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL; // 不启用内部上下拉电阻
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;// 设定高速度等级
HAL_GPIO_Init(GPIOA,&GPIO_InitStruct); // 初始化指定参数给选定的GPIO引脚
}
```
这段代码展示了如何利用库函数`HAL_GPIO_Init()`完成对PA9引脚作为串行发送端(TX)用途下的初始化过程。这里选择了“复用推挽输出”的方式,并关闭了内置的上下拉机制以减少不必要的干扰;同时指定了较高的传输速率以便更好地满足实时通讯的要求。
阅读全文
相关推荐


















