Ensure PWR is enabled before configuration

This commit is contained in:
Steins7 2024-07-27 14:15:31 +02:00
parent a02bcecaec
commit 0b483c535b

View File

@ -11,6 +11,7 @@
#include "pwr.h" #include "pwr.h"
#include "pwr_regs.h" #include "pwr_regs.h"
#include "scb.h" #include "scb.h"
#include "rcc.h"
//--local definitions----------------------------------------------------------- //--local definitions-----------------------------------------------------------
@ -30,19 +31,28 @@ void pwr_sleep(void)
void pwr_stop(enum PwrWakeupSpeed speed) void pwr_stop(enum PwrWakeupSpeed speed)
{ {
rcc_enable(RCC_AHB_NONE, RCC_APB1_PWR, RCC_APB2_NONE);
scb_configure_deepsleep(true); scb_configure_deepsleep(true);
regs->CR.PDDS = 0; regs->CR.PDDS = 0;
regs->CR.LPDS = speed; regs->CR.LPDS = speed;
__asm("wfi"); __asm("wfi");
rcc_configure(RCC_PRESET_SPEED);
} }
void pwr_standby(void) void pwr_standby(void)
{ {
rcc_enable(RCC_AHB_NONE, RCC_APB1_PWR, RCC_APB2_NONE);
scb_configure_deepsleep(true); scb_configure_deepsleep(true);
regs->CR.PDDS = 1; regs->CR.PDDS = 1;
__asm("wfi"); __asm("wfi");
rcc_configure(RCC_PRESET_SPEED);
} }
void pwr_configure_bkp_write(bool enable)
{
rcc_enable(RCC_AHB_NONE, RCC_APB1_PWR, RCC_APB2_NONE);
regs->CR.DBP = enable;
}
//--local functions------------------------------------------------------------- //--local functions-------------------------------------------------------------