Skip to content

Commit 605059e

Browse files
author
Helmut Tschemernjak
committed
Fixed a problem that the STOP2 was falling back to STOP1 because
the LPR was not turned on. Now the deepsleep mode only needs 1.6uA instead of 10uA.
1 parent 450701f commit 605059e

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

targets/TARGET_STM/sleep.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,20 @@ void hal_deepsleep(void)
5252

5353
// Request to enter STOP mode with regulator in low power mode
5454
#if TARGET_STM32L4
55-
if (__HAL_RCC_PWR_IS_CLK_ENABLED()) {
56-
HAL_PWREx_EnableLowPowerRunMode();
57-
HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);
58-
HAL_PWREx_DisableLowPowerRunMode();
59-
} else {
55+
int pwrClockEnabled = __HAL_RCC_PWR_IS_CLK_ENABLED();
56+
int lowPowerModeEnabled = PWR->CR1 & PWR_CR1_LPR;
57+
58+
if (!pwrClockEnabled)
6059
__HAL_RCC_PWR_CLK_ENABLE();
61-
HAL_PWREx_EnableLowPowerRunMode();
62-
HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);
60+
if (lowPowerModeEnabled)
6361
HAL_PWREx_DisableLowPowerRunMode();
62+
63+
HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);
64+
65+
if (lowPowerModeEnabled)
66+
HAL_PWREx_EnableLowPowerRunMode();
67+
if (!pwrClockEnabled)
6468
__HAL_RCC_PWR_CLK_DISABLE();
65-
}
6669
#else /* TARGET_STM32L4 */
6770
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
6871
#endif /* TARGET_STM32L4 */

0 commit comments

Comments
 (0)