stm32/powerctrl: Save and restore EWUP state when configuring standby.
This allows the user to enable wake-up sources using the EWUP bits, on F7 MCUs. Disabling the wake-up sources while clearing the wake-up flags follows the reference manual and ST examples.
This commit is contained in:
parent
85ea4ac0e5
commit
0facd891e7
|
@ -712,10 +712,14 @@ void powerctrl_enter_standby_mode(void) {
|
|||
RTC->ISR &= ~ISR_BITS;
|
||||
|
||||
#if defined(STM32F7)
|
||||
// Save EWUP state
|
||||
uint32_t csr2_ewup = PWR->CSR2 & (PWR_CSR2_EWUP6 | PWR_CSR2_EWUP5 | PWR_CSR2_EWUP4 | PWR_CSR2_EWUP3 | PWR_CSR2_EWUP2 | PWR_CSR2_EWUP1);
|
||||
// disable wake-up flags
|
||||
PWR->CSR2 &= ~(PWR_CSR2_EWUP6 | PWR_CSR2_EWUP5 | PWR_CSR2_EWUP4 | PWR_CSR2_EWUP3 | PWR_CSR2_EWUP2 | PWR_CSR2_EWUP1);
|
||||
// clear global wake-up flag
|
||||
PWR->CR2 |= PWR_CR2_CWUPF6 | PWR_CR2_CWUPF5 | PWR_CR2_CWUPF4 | PWR_CR2_CWUPF3 | PWR_CR2_CWUPF2 | PWR_CR2_CWUPF1;
|
||||
// Restore EWUP state
|
||||
PWR->CSR2 |= csr2_ewup;
|
||||
#elif defined(STM32H7)
|
||||
EXTI_D1->PR1 = 0x3fffff;
|
||||
PWR->WKUPCR |= PWR_WAKEUP_FLAG1 | PWR_WAKEUP_FLAG2 | PWR_WAKEUP_FLAG3 | PWR_WAKEUP_FLAG4 | PWR_WAKEUP_FLAG5 | PWR_WAKEUP_FLAG6;
|
||||
|
|
Loading…
Reference in New Issue