UART can’t send correct data in low power mode on stm32l151

I want to use uart function on STM32l151. It is ok when MCU run in normal mode. When I set configUSETICKLESSIDLE is 1. The uart can’t send the correct data to pc terminal. I use oscilloscope to check uart data timing. If it is normal, the timing is ok. If it is wrong, the time is 1.5 times as long as the normal time. How do I check low power mode process? Thanks

UART can’t send correct data in low power mode on stm32l151

You would have to check the device data sheet to see the effect on the UART of entering low power mode (for example, its clock may stop), and how long it takes to exit low power mode. However it might be easier just to not enter low power mode while the UART is in use. You can use the pre and post sleep macros to abort entering low power mode.

UART can’t send correct data in low power mode on stm32l151

I don’t implement the MCU low power mode in FreeRTOS yet. I only use the default portSUPPRESSTICKSAND_SLEEP. Could it affect the uart? Thanks

UART can’t send correct data in low power mode on stm32l151

Evidence would seem to show that something is effecting the UART – whether that is software or hardware I can’t say. Is the UART interrupt driven?

UART can’t send correct data in low power mode on stm32l151

I only use USARTSendData. It is one byte function from STM32l151 driver. The timing is wrong in low power mode. Uart has the interrupt to MCU. If the configUSETICKLESS_IDLE is 0, the uart function is ok. So I thing software maybe be the answer. I want to find where could effect the uart.

UART can’t send correct data in low power mode on stm32l151

Sorry. I found the wrong. The system clock is difference between in the low power mode and in normal mode. Thanks