You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32L462CEU6TR MCU PB3引脚异常电压及功耗问题排查

解决STM32L462CEU6TR STOP2模式下PB3(SWO)引脚异常功耗问题

问题根源

PB3作为SWO引脚,属于TPIU(跟踪端口接口单元)的一部分。即使将引脚配置为模拟模式,若调试相关硬件模块未完全关闭,TPIU仍可能保持激活状态,导致引脚出现异常电压并产生额外功耗。

解决方案

1. 禁用TPIU及调试接口的低功耗保留功能

在进入STOP2模式前,添加代码关闭TPIU并配置调试接口在低功耗模式下停止工作:

// 关闭TPIU
CoreDebug->DEMCR &= ~CoreDebug_DEMCR_TRCENA_Msk;
TPI->ACPR = 0;
TPI->SPPR = 0;
TPI->FFCR = 0x100;

// 配置调试接口在STOP模式下停止工作
DBGMCU->CR &= ~(DBGMCU_CR_DBG_STOP | DBGMCU_CR_DBG_STANDBY);

2. 单独明确配置PB3引脚

避免使用GPIO_PIN_All批量配置,单独对PB3进行配置,确保GPIO功能完全覆盖复用功能:

// 单独配置PB3为模拟模式,无上下拉
GPIO_InitStruct.Pin = GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

3. 确保GPIOB时钟正确关闭

在配置完所有GPIO后,确认GPIOB的时钟已被禁用:

__HAL_RCC_GPIOB_CLK_DISABLE();

修改后的关键代码片段

在进入STOP2模式前的代码块修改如下:

/* Set all GPIO in analog state to reduce power consumption,
   except GPIOC to keep user button interrupt enabled */
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOE_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE();

GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Pin = GPIO_PIN_All;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// 先批量配置GPIOB除PB3外的引脚
GPIO_InitStruct.Pin = GPIO_PIN_All & ~GPIO_PIN_3;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
// 单独配置PB3
GPIO_InitStruct.Pin = GPIO_PIN_3;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);

// 禁用TPIU和调试接口低功耗功能
CoreDebug->DEMCR &= ~CoreDebug_DEMCR_TRCENA_Msk;
TPI->ACPR = 0;
TPI->SPPR = 0;
TPI->FFCR = 0x100;
DBGMCU->CR &= ~(DBGMCU_CR_DBG_STOP | DBGMCU_CR_DBG_STANDBY);

__HAL_RCC_GPIOA_CLK_DISABLE();
__HAL_RCC_GPIOB_CLK_DISABLE();
__HAL_RCC_GPIOD_CLK_DISABLE();
__HAL_RCC_GPIOE_CLK_DISABLE();
__HAL_RCC_GPIOH_CLK_DISABLE();

/* Enter STOP 2 mode */
HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);

额外注意事项

  • 确认调试器已经断开连接,因为调试器连接时会强制激活调试接口,导致上述配置失效。
  • 查阅STM32L4参考手册中STOP2模式下的引脚状态和电源域配置,确保没有其他模块占用PB3引脚。

内容的提问来源于stack exchange,提问作者Jorge Benedicto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:15:48