Skip to content

Commit e22f26f

Browse files
authored
Merge pull request #3663 from helmut64/STM32L4_deepsleep_fix
Fixed a problem that the STOP2 was falling back to STOP1
2 parents d8151d7 + 10bb94a commit e22f26f

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

targets/TARGET_STM/sleep.c

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,22 @@ 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+
}
61+
if (lowPowerModeEnabled) {
6362
HAL_PWREx_DisableLowPowerRunMode();
63+
}
64+
65+
HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);
66+
67+
if (lowPowerModeEnabled) {
68+
HAL_PWREx_EnableLowPowerRunMode();
69+
}
70+
if (!pwrClockEnabled) {
6471
__HAL_RCC_PWR_CLK_DISABLE();
6572
}
6673
#else /* TARGET_STM32L4 */

0 commit comments

Comments
 (0)