可能的原因是,在进入stop模式时,LPUART的时钟被关闭了,导致LPUART初始化失败。

解决方法如下:

  1. 在进入stop模式前,先关闭LPUART模块,避免时钟关闭的影响。

  2. 在退出stop模式后,重新使能LPUART模块的时钟,并重新初始化LPUART。

示例代码如下:

// 关闭LPUART模块
HAL_UART_DeInit(&hlpuart1); 

// 进入stop模式

// 退出stop模式后,重新使能LPUART模块的时钟
__HAL_RCC_USART1_CLK_ENABLE();

// 重新初始化LPUART
hlpuart1.Instance = USART1;
hlpuart1.Init.BaudRate = 115200;
hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;
hlpuart1.Init.StopBits = UART_STOPBITS_1;
hlpuart1.Init.Parity = UART_PARITY_NONE;
hlpuart1.Init.Mode = UART_MODE_TX_RX;
hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
hlpuart1.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&hlpuart1) != HAL_OK)
{
  // LPUART初始化失败,处理异常情况
}
stm32L0退出stop模式后LPUART初始化失败

原文地址: http://www.cveoy.top/t/topic/b6ee 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录