[STM32L4] HAL_Init函数问题还是开发板有问题?

[复制链接]
887|12
jerry尧 发表于 2025-9-19 11:06 | 显示全部楼层 |阅读模式

用STM32L4R5ZI开发板运行低功耗代码,让开发板进入待机模式,但程序在时钟初始化部分卡住了。重启开发板后,它会运行HAL_Init,但仍处于低功耗模式(运行时钟部分时电流约为600 uA,而非预期的10+ mA),并且会卡住(电流维持在2.3 mA左右)。拔掉USB线重新插上后,仍然处于相同状态(卡在2.3 mA)。

可能是以下原因之一:

我的代码有问题,导致开发板进入了无法退出的异常状态

我的预估有误,根据代码逻辑,这种行为是正常的

我的开发板有问题

HAL_Init没有按预期工作

我使用的是STM32CubeIDE V1.8.0和L4框架V1.17.2。目前我不知道该如何进一步排查问题,因为根本原因尚不明确。

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  HAL_Delay(5000);  // Added in case it's putting it in sleep mode when trying to program

/* I did try this code at one point, not sure if any of this could've broken something */
//        /* Enable Power Clock */
//        __HAL_RCC_PWR_CLK_ENABLE();
//
//        /* Enable backup domain for LSE/RTC control */
//        HAL_PWR_EnableBkUpAccess();
//
//        /* Swith off LSE clock (to make sure RTC is off) */
//        LSE_OFF_Config();
//
//        /* Configure the main internal regulator output voltage (Range1 by default)*/
//        HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);
//
//        /* Disable Power Clock */
//        __HAL_RCC_PWR_CLK_DISABLE();
  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_LPUART1_UART_Init();
  MX_USART3_UART_Init();
  MX_USB_OTG_FS_PCD_Init();
  /* USER CODE BEGIN 2 */

  buf_len = sprintf(UART_Buffer, "\n\r Start of user code \n\r");
  HAL_UART_Transmit(&hlpuart1, (uint8_t *)UART_Buffer, buf_len, 100);

  test_standby();                         // 0.65 mA -> Down to 0.6 mA after updated clock setting
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

海滨消消 发表于 2025-9-22 16:14 | 显示全部楼层
时钟初始化可能失败了。
elephant00 发表于 2025-9-22 16:28 | 显示全部楼层
HAL 库版本与芯片可能不兼容。
豌豆爹 发表于 2025-9-22 17:15 | 显示全部楼层
用了无效的时钟源?
海滨消消 发表于 2025-9-22 18:16 | 显示全部楼层
PLL 配置错误?
classroom 发表于 2025-9-22 19:16 | 显示全部楼层
PWR配置不对?
duo点 发表于 2025-9-22 19:17 | 显示全部楼层
未正确设置唤醒引脚或 RTC 闹钟,导致 MCU 无法退出低功耗模式。
cr315 发表于 2025-9-22 20:17 | 显示全部楼层
可能未禁用所有外设时钟,导致部分电路仍在耗电。
flycamelaaa 发表于 2025-9-22 21:29 | 显示全部楼层
电源电路是否稳定?
jcky001 发表于 2025-9-22 21:30 | 显示全部楼层
进入待机模式前禁用所有外设.
onlycook 发表于 2025-9-22 22:30 | 显示全部楼层
简化时钟配置,用 HSI,检查晶振是否正常
powerantone 发表于 2025-9-22 23:31 | 显示全部楼层
禁用所有外设时钟,检查电源管理配置
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

86

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部