STM32 JNTRST JTDI JTDO引脚用做普通IO方法

该博客介绍了如何在STM32中通过编程禁用JTAG功能,从而将PB4、PB3、PA15引脚释放为普通IO使用。在GPIO_Configuration函数中,通过GPIO_PinRemapConfig禁用JTAG并启用SWD调试,然后配置GPIOB的多个引脚为推挽输出模式,以便于进行外部设备的控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32默认启动时PB4、PB3、PA15三个引脚不是普通IO,而是JTAG的复用功能,分别为JNTRST、JTDI、JTDO。

当我们试用SWD接口调试仿真时,这三个引脚可以用作普通IO。

具体做法就是禁用JTAG功能。只需使用以下语句即可。

在这里插入图片描述

//=============================================================================
//文件名称:GPIO_Configuration
//功能概要:GPIO初始化
//参数说明:无
//函数返回:无
//=============================================================================
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //使能PB端口时钟	
	
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); /*使能SWD 禁用JTAG*/
	
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;//端口配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO口速度为50MHz
  GPIO_Init(GPIOB, &GPIO_InitStructure);//根据设定参数初始化GPIOA
	
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;//端口配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO口速度为50MHz
  GPIO_Init(GPIOB, &GPIO_InitStructure);//根据设定参数初始化GPIOA
}
### STM32 JTDI Pin Output Voltage Specification 对于STM32微控制器系列中的JTDI引脚,默认情况下其主要功能是作为JTAG调试接口的一部分。关于JTDI引脚的具体输出电压规格,并未直接提及1.5V这一数值[^1]。 通常,在正常工作状态下,GPIO引脚(包括可配置为GPIO模式下的JTDI引脚)的高电平输出接近于供电电压VDD,而非固定值如1.5V。这意味着如果系统的电源电压设置为3.3V,则当该引脚被设定为高电平时会输出大约3.3V;如果是5V系统则可能达到近似5V的水平[^2]。 值得注意的是,虽然理论上可以将PA15(JTDI)重新配置成普通IO端口来实现其他用途比如控制蜂鸣器,但这并不改变它作为一个通用推挽输出或开漏输出时遵循的标准逻辑电平规则——即取决于所使用的MCU的工作电压范围而不是特定到某一个预设值像1.5V那样[^3]。 因此,除非有特别的应用场景或者硬件设计需求指定了不同的电气特性,否则不应该假设任何GPIO引脚会有不同于典型CMOS/TTL兼容级别的输出电压等级。 ```c // 配置PA15为普通IO输出模式示例代码 void configure_PA15_as_GPIO(void){ GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); // 启用GPIOA时钟 GPIO_InitStruct.Pin = GPIO_PIN_15; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出模式 GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值