From 97b194f753853638227136f0af786872f5236a30 Mon Sep 17 00:00:00 2001 From: rusefillc Date: Mon, 17 Jan 2022 01:25:31 -0500 Subject: [PATCH] PA0 wake up - sharing is caring? --- .../boards/proteus/board_configuration.cpp | 23 ----------------- .../hw_layer/ports/stm32/stm32_common.cpp | 25 ++++++++++++++++++- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/firmware/config/boards/proteus/board_configuration.cpp b/firmware/config/boards/proteus/board_configuration.cpp index a640e13f5d..1d086be2c6 100644 --- a/firmware/config/boards/proteus/board_configuration.cpp +++ b/firmware/config/boards/proteus/board_configuration.cpp @@ -229,26 +229,3 @@ void boardPrepareForStop() { #endif } - -void boardPrepareForStandby() { - -#ifdef STM32F7XX - PWR->CSR2 |= PWR_CSR2_EWUP1; //EWUP1: Enable Wakeup pin for PA0 - PWR->CR2 |= PWR_CR2_CWUPF1; //Clear Wakeup Pin flag for PA0 -#endif - -#ifdef STM32F4XX - - PWR->CR |= PWR_CR_CWUF; //Clear Wakeup Pin flag for PA0 - PWR->CSR |= PWR_CSR_EWUP; //Enable Wakeup Pin for PA0 - -#endif - -#ifdef STM32H7XX - // Wake on wakeup pin 0 - PA0 - PWR->WKUPEPR = PWR_WKUPEPR_WKUPEN1; - - // clear all possible wakeup bits - PWR->WKUPCR = 0xFFFFFFFF; -#endif -} diff --git a/firmware/hw_layer/ports/stm32/stm32_common.cpp b/firmware/hw_layer/ports/stm32/stm32_common.cpp index f9e287ba9f..78c9fb7c7c 100644 --- a/firmware/hw_layer/ports/stm32/stm32_common.cpp +++ b/firmware/hw_layer/ports/stm32/stm32_common.cpp @@ -802,6 +802,29 @@ __attribute__((weak)) void boardPrepareForStop() { palEnableLineEvent(PAL_LINE(GPIOA, 0), PAL_EVENT_MODE_RISING_EDGE); } -__attribute__((weak)) void boardPrepareForStandby() { } + +void boardPreparePA0ForStandby() { +#ifdef STM32F4XX + PWR->CR |= PWR_CR_CWUF; //Clear Wakeup Pin flag for PA0 + PWR->CSR |= PWR_CSR_EWUP; //Enable Wakeup Pin for PA0 +#endif + +#ifdef STM32F7XX + PWR->CSR2 |= PWR_CSR2_EWUP1; //EWUP1: Enable Wakeup pin for PA0 + PWR->CR2 |= PWR_CR2_CWUPF1; //Clear Wakeup Pin flag for PA0 +#endif + +#ifdef STM32H7XX + // Wake on wakeup pin 0 - PA0 + PWR->WKUPEPR = PWR_WKUPEPR_WKUPEN1; + + // clear all possible wakeup bits + PWR->WKUPCR = 0xFFFFFFFF; +#endif +} + +__attribute__((weak)) void boardPrepareForStandby() { + boardPreparePA0ForStandby(); +} #endif // EFI_PROD_CODE