stm32f103c8t6引脚PB3PB4
时间: 2025-05-16 12:03:41 浏览: 22
### STM32F103C8T6 PB3 和 PB4 引脚功能及使用方法
STM32F103C8T6 的 PB3 和 PB4 是多功能引脚,默认情况下被分配用于 JTAG 调试接口。如果需要将这些引脚作为通用输入输出 (GPIO) 使用,则需通过特定的配置来禁用其默认的 JTAG 功能。
#### 默认功能
PB3 和 PB4 在出厂设置下通常作为 JTAG 接口的一部分,分别对应以下信号:
- **PB3**: JTDO/TRACESWO
- **PB4**: NJTRST
因此,在未修改配置的情况下,这两个引脚无法直接用作普通的 GPIO 输入或输出[^3]。
#### 配置为普通 GPIO
为了使 PB3 和 PB4 成为可用的 GPIO 引脚,可以按照以下方式完成必要的初始化操作:
##### 方法一:软件配置
可以通过标准外设库中的函数实现对 JTAG 功能的屏蔽并启用 SWD(串行线调试)。具体代码如下所示:
```c
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); // 关闭 JTAG 功能(PB3/PB4),仅保留 SWD(PA13/PA14)
```
上述代码的作用是关闭完整的 JTAG 支持而仅仅保留更轻量级的 SWD 调试模式,从而释放 PB3 和 PB4 供其他用途使用[^2]。
##### 方法二:CubeMX 设置
另一种更为简便的方式是在 STMicroelectronics 提供的 CubeMX 工具中调整项目参数。只需执行下列步骤即可轻松解决问题:
1. 打开 CubeMX 并加载目标项目的配置文件;
2. 进入 “System Core -> Debug” 页面;
3. 将选项从默认的 “Full Debug” 更改为 “Serial Wire”,这样会自动处理好所有相关的寄存器设定工作以便于后续开发过程中自由操控 PB3 和 PB4[^4]。
之后重新生成代码并将更新后的固件下载到设备当中去验证效果如何。
#### 示例程序片段
下面给出一段简单的例子展示怎样初始化以及控制 PB3 或者说 PC13 (假设已经完成了前面提到过的重映射过程)成为 LED 控制端子:
```c
#include "stm32f1xx_hal.h"
int main(void){
HAL_Init();
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* Configure pin as output */
GPIO_InitStruct.Pin = GPIO_PIN_3; // Set to desired pin number here e.g., Pin 3 for PB3.
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB,&GPIO_InitStruct);
while(1){
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_3); // Toggle state of selected pin every second.
HAL_Delay(1000);
}
}
```
此段代码展示了基本的 GPIO 输出配置流程,并实现了周期性的高低电平切换动作,适用于测试目的下的简单应用场合。
阅读全文
相关推荐















