stm32L0退出stop模式后LPUART初始化失败
可能的原因是,在进入stop模式时,LPUART的时钟被关闭了,导致LPUART初始化失败。
解决方法如下:
-
在进入stop模式前,先关闭LPUART模块,避免时钟关闭的影响。
-
在退出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初始化失败,处理异常情况
}
原文地址: http://www.cveoy.top/t/topic/b6ee 著作权归作者所有。请勿转载和采集!