19#ifndef __STM32F4xx_LL_PWR_H
20#define __STM32F4xx_LL_PWR_H
53#define LL_PWR_CR_CSBF PWR_CR_CSBF
54#define LL_PWR_CR_CWUF PWR_CR_CWUF
63#define LL_PWR_CSR_WUF PWR_CSR_WUF
64#define LL_PWR_CSR_SBF PWR_CSR_SBF
65#define LL_PWR_CSR_PVDO PWR_CSR_PVDO
66#define LL_PWR_CSR_VOS PWR_CSR_VOSRDY
67#if defined(PWR_CSR_EWUP)
68#define LL_PWR_CSR_EWUP1 PWR_CSR_EWUP
69#elif defined(PWR_CSR_EWUP1)
70#define LL_PWR_CSR_EWUP1 PWR_CSR_EWUP1
72#if defined(PWR_CSR_EWUP2)
73#define LL_PWR_CSR_EWUP2 PWR_CSR_EWUP2
75#if defined(PWR_CSR_EWUP3)
76#define LL_PWR_CSR_EWUP3 PWR_CSR_EWUP3
85#if defined(PWR_CR_VOS_0)
86#define LL_PWR_REGU_VOLTAGE_SCALE3 (PWR_CR_VOS_0)
87#define LL_PWR_REGU_VOLTAGE_SCALE2 (PWR_CR_VOS_1)
88#define LL_PWR_REGU_VOLTAGE_SCALE1 (PWR_CR_VOS_0 | PWR_CR_VOS_1)
90#define LL_PWR_REGU_VOLTAGE_SCALE1 (PWR_CR_VOS)
91#define LL_PWR_REGU_VOLTAGE_SCALE2 0x00000000U
100#define LL_PWR_MODE_STOP_MAINREGU 0x00000000U
101#define LL_PWR_MODE_STOP_LPREGU (PWR_CR_LPDS)
102#if defined(PWR_CR_MRUDS) && defined(PWR_CR_LPUDS) && defined(PWR_CR_FPDS)
103#define LL_PWR_MODE_STOP_MAINREGU_UNDERDRIVE (PWR_CR_MRUDS | PWR_CR_FPDS)
104#define LL_PWR_MODE_STOP_LPREGU_UNDERDRIVE (PWR_CR_LPDS | PWR_CR_LPUDS | PWR_CR_FPDS)
106#if defined(PWR_CR_MRLVDS) && defined(PWR_CR_LPLVDS) && defined(PWR_CR_FPDS)
107#define LL_PWR_MODE_STOP_MAINREGU_DEEPSLEEP (PWR_CR_MRLVDS | PWR_CR_FPDS)
108#define LL_PWR_MODE_STOP_LPREGU_DEEPSLEEP (PWR_CR_LPDS | PWR_CR_LPLVDS | PWR_CR_FPDS)
110#define LL_PWR_MODE_STANDBY (PWR_CR_PDDS)
118#define LL_PWR_REGU_DSMODE_MAIN 0x00000000U
119#define LL_PWR_REGU_DSMODE_LOW_POWER (PWR_CR_LPDS)
127#define LL_PWR_PVDLEVEL_0 (PWR_CR_PLS_LEV0)
128#define LL_PWR_PVDLEVEL_1 (PWR_CR_PLS_LEV1)
129#define LL_PWR_PVDLEVEL_2 (PWR_CR_PLS_LEV2)
130#define LL_PWR_PVDLEVEL_3 (PWR_CR_PLS_LEV3)
131#define LL_PWR_PVDLEVEL_4 (PWR_CR_PLS_LEV4)
132#define LL_PWR_PVDLEVEL_5 (PWR_CR_PLS_LEV5)
133#define LL_PWR_PVDLEVEL_6 (PWR_CR_PLS_LEV6)
134#define LL_PWR_PVDLEVEL_7 (PWR_CR_PLS_LEV7)
141#if defined(PWR_CSR_EWUP)
142#define LL_PWR_WAKEUP_PIN1 (PWR_CSR_EWUP)
144#if defined(PWR_CSR_EWUP1)
145#define LL_PWR_WAKEUP_PIN1 (PWR_CSR_EWUP1)
147#if defined(PWR_CSR_EWUP2)
148#define LL_PWR_WAKEUP_PIN2 (PWR_CSR_EWUP2)
150#if defined(PWR_CSR_EWUP3)
151#define LL_PWR_WAKEUP_PIN3 (PWR_CSR_EWUP3)
177#define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__))
184#define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__)
201#if defined(PWR_CR_FISSR)
208__STATIC_INLINE
void LL_PWR_EnableFLASHInterfaceSTOP(
void)
210 SET_BIT(PWR->CR, PWR_CR_FISSR);
218__STATIC_INLINE
void LL_PWR_DisableFLASHInterfaceSTOP(
void)
220 CLEAR_BIT(PWR->CR, PWR_CR_FISSR);
228__STATIC_INLINE uint32_t LL_PWR_IsEnabledFLASHInterfaceSTOP(
void)
230 return (READ_BIT(PWR->CR, PWR_CR_FISSR) == (PWR_CR_FISSR));
234#if defined(PWR_CR_FMSSR)
241__STATIC_INLINE
void LL_PWR_EnableFLASHMemorySTOP(
void)
243 SET_BIT(PWR->CR, PWR_CR_FMSSR);
251__STATIC_INLINE
void LL_PWR_DisableFLASHMemorySTOP(
void)
253 CLEAR_BIT(PWR->CR, PWR_CR_FMSSR);
261__STATIC_INLINE uint32_t LL_PWR_IsEnabledFLASHMemorySTOP(
void)
263 return (READ_BIT(PWR->CR, PWR_CR_FMSSR) == (PWR_CR_FMSSR));
266#if defined(PWR_CR_UDEN)
280__STATIC_INLINE
void LL_PWR_EnableUnderDriveMode(
void)
282 SET_BIT(PWR->CR, PWR_CR_UDEN);
290__STATIC_INLINE
void LL_PWR_DisableUnderDriveMode(
void)
292 CLEAR_BIT(PWR->CR, PWR_CR_UDEN);
300__STATIC_INLINE uint32_t LL_PWR_IsEnabledUnderDriveMode(
void)
302 return (READ_BIT(PWR->CR, PWR_CR_UDEN) == (PWR_CR_UDEN));
306#if defined(PWR_CR_ODSWEN)
312__STATIC_INLINE
void LL_PWR_EnableOverDriveSwitching(
void)
314 SET_BIT(PWR->CR, PWR_CR_ODSWEN);
322__STATIC_INLINE
void LL_PWR_DisableOverDriveSwitching(
void)
324 CLEAR_BIT(PWR->CR, PWR_CR_ODSWEN);
332__STATIC_INLINE uint32_t LL_PWR_IsEnabledOverDriveSwitching(
void)
334 return (READ_BIT(PWR->CR, PWR_CR_ODSWEN) == (PWR_CR_ODSWEN));
337#if defined(PWR_CR_ODEN)
343__STATIC_INLINE
void LL_PWR_EnableOverDriveMode(
void)
345 SET_BIT(PWR->CR, PWR_CR_ODEN);
353__STATIC_INLINE
void LL_PWR_DisableOverDriveMode(
void)
355 CLEAR_BIT(PWR->CR, PWR_CR_ODEN);
363__STATIC_INLINE uint32_t LL_PWR_IsEnabledOverDriveMode(
void)
365 return (READ_BIT(PWR->CR, PWR_CR_ODEN) == (PWR_CR_ODEN));
368#if defined(PWR_CR_MRUDS)
374__STATIC_INLINE
void LL_PWR_EnableMainRegulatorDeepSleepUDMode(
void)
376 SET_BIT(PWR->CR, PWR_CR_MRUDS);
384__STATIC_INLINE
void LL_PWR_DisableMainRegulatorDeepSleepUDMode(
void)
386 CLEAR_BIT(PWR->CR, PWR_CR_MRUDS);
394__STATIC_INLINE uint32_t LL_PWR_IsEnabledMainRegulatorDeepSleepUDMode(
void)
396 return (READ_BIT(PWR->CR, PWR_CR_MRUDS) == (PWR_CR_MRUDS));
400#if defined(PWR_CR_LPUDS)
406__STATIC_INLINE
void LL_PWR_EnableLowPowerRegulatorDeepSleepUDMode(
void)
408 SET_BIT(PWR->CR, PWR_CR_LPUDS);
416__STATIC_INLINE
void LL_PWR_DisableLowPowerRegulatorDeepSleepUDMode(
void)
418 CLEAR_BIT(PWR->CR, PWR_CR_LPUDS);
426__STATIC_INLINE uint32_t LL_PWR_IsEnabledLowPowerRegulatorDeepSleepUDMode(
void)
428 return (READ_BIT(PWR->CR, PWR_CR_LPUDS) == (PWR_CR_LPUDS));
432#if defined(PWR_CR_MRLVDS)
438__STATIC_INLINE
void LL_PWR_EnableMainRegulatorLowVoltageMode(
void)
440 SET_BIT(PWR->CR, PWR_CR_MRLVDS);
448__STATIC_INLINE
void LL_PWR_DisableMainRegulatorLowVoltageMode(
void)
450 CLEAR_BIT(PWR->CR, PWR_CR_MRLVDS);
458__STATIC_INLINE uint32_t LL_PWR_IsEnabledMainRegulatorLowVoltageMode(
void)
460 return (READ_BIT(PWR->CR, PWR_CR_MRLVDS) == (PWR_CR_MRLVDS));
464#if defined(PWR_CR_LPLVDS)
470__STATIC_INLINE
void LL_PWR_EnableLowPowerRegulatorLowVoltageMode(
void)
472 SET_BIT(PWR->CR, PWR_CR_LPLVDS);
480__STATIC_INLINE
void LL_PWR_DisableLowPowerRegulatorLowVoltageMode(
void)
482 CLEAR_BIT(PWR->CR, PWR_CR_LPLVDS);
490__STATIC_INLINE uint32_t LL_PWR_IsEnabledLowPowerRegulatorLowVoltageMode(
void)
492 return (READ_BIT(PWR->CR, PWR_CR_LPLVDS) == (PWR_CR_LPLVDS));
505__STATIC_INLINE
void LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling)
507 MODIFY_REG(PWR->CR, PWR_CR_VOS, VoltageScaling);
519__STATIC_INLINE uint32_t LL_PWR_GetRegulVoltageScaling(
void)
521 return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_VOS));
528__STATIC_INLINE
void LL_PWR_EnableFlashPowerDown(
void)
530 SET_BIT(PWR->CR, PWR_CR_FPDS);
538__STATIC_INLINE
void LL_PWR_DisableFlashPowerDown(
void)
540 CLEAR_BIT(PWR->CR, PWR_CR_FPDS);
548__STATIC_INLINE uint32_t LL_PWR_IsEnabledFlashPowerDown(
void)
550 return (READ_BIT(PWR->CR, PWR_CR_FPDS) == (PWR_CR_FPDS));
558__STATIC_INLINE
void LL_PWR_EnableBkUpAccess(
void)
560 SET_BIT(PWR->CR, PWR_CR_DBP);
568__STATIC_INLINE
void LL_PWR_DisableBkUpAccess(
void)
570 CLEAR_BIT(PWR->CR, PWR_CR_DBP);
578__STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(
void)
580 return (READ_BIT(PWR->CR, PWR_CR_DBP) == (PWR_CR_DBP));
589__STATIC_INLINE
void LL_PWR_EnableBkUpRegulator(
void)
591 SET_BIT(PWR->CSR, PWR_CSR_BRE);
601__STATIC_INLINE
void LL_PWR_DisableBkUpRegulator(
void)
603 CLEAR_BIT(PWR->CSR, PWR_CSR_BRE);
611__STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpRegulator(
void)
613 return (READ_BIT(PWR->CSR, PWR_CSR_BRE) == (PWR_CSR_BRE));
624__STATIC_INLINE
void LL_PWR_SetRegulModeDS(uint32_t RegulMode)
626 MODIFY_REG(PWR->CR, PWR_CR_LPDS, RegulMode);
636__STATIC_INLINE uint32_t LL_PWR_GetRegulModeDS(
void)
638 return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_LPDS));
663__STATIC_INLINE
void LL_PWR_SetPowerMode(uint32_t PDMode)
665#if defined(PWR_CR_MRUDS) && defined(PWR_CR_LPUDS) && defined(PWR_CR_FPDS)
666 MODIFY_REG(PWR->CR, (PWR_CR_PDDS | PWR_CR_LPDS | PWR_CR_FPDS | PWR_CR_LPUDS | PWR_CR_MRUDS), PDMode);
667#elif defined(PWR_CR_MRLVDS) && defined(PWR_CR_LPLVDS) && defined(PWR_CR_FPDS)
668 MODIFY_REG(PWR->CR, (PWR_CR_PDDS | PWR_CR_LPDS | PWR_CR_FPDS | PWR_CR_LPLVDS | PWR_CR_MRLVDS), PDMode);
670 MODIFY_REG(PWR->CR, (PWR_CR_PDDS| PWR_CR_LPDS), PDMode);
695__STATIC_INLINE uint32_t LL_PWR_GetPowerMode(
void)
697#if defined(PWR_CR_MRUDS) && defined(PWR_CR_LPUDS) && defined(PWR_CR_FPDS)
698 return (uint32_t)(READ_BIT(PWR->CR, (PWR_CR_PDDS | PWR_CR_LPDS | PWR_CR_FPDS | PWR_CR_LPUDS | PWR_CR_MRUDS)));
699#elif defined(PWR_CR_MRLVDS) && defined(PWR_CR_LPLVDS) && defined(PWR_CR_FPDS)
700 return (uint32_t)(READ_BIT(PWR->CR, (PWR_CR_PDDS | PWR_CR_LPDS | PWR_CR_FPDS | PWR_CR_LPLVDS | PWR_CR_MRLVDS)));
702 return (uint32_t)(READ_BIT(PWR->CR, (PWR_CR_PDDS| PWR_CR_LPDS)));
720__STATIC_INLINE
void LL_PWR_SetPVDLevel(uint32_t PVDLevel)
722 MODIFY_REG(PWR->CR, PWR_CR_PLS, PVDLevel);
738__STATIC_INLINE uint32_t LL_PWR_GetPVDLevel(
void)
740 return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_PLS));
748__STATIC_INLINE
void LL_PWR_EnablePVD(
void)
750 SET_BIT(PWR->CR, PWR_CR_PVDE);
758__STATIC_INLINE
void LL_PWR_DisablePVD(
void)
760 CLEAR_BIT(PWR->CR, PWR_CR_PVDE);
768__STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(
void)
770 return (READ_BIT(PWR->CR, PWR_CR_PVDE) == (PWR_CR_PVDE));
787__STATIC_INLINE
void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin)
789 SET_BIT(PWR->CSR, WakeUpPin);
806__STATIC_INLINE
void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin)
808 CLEAR_BIT(PWR->CSR, WakeUpPin);
825__STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin)
827 return (READ_BIT(PWR->CSR, WakeUpPin) == (WakeUpPin));
844__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU(
void)
846 return (READ_BIT(PWR->CSR, PWR_CSR_WUF) == (PWR_CSR_WUF));
854__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SB(
void)
856 return (READ_BIT(PWR->CSR, PWR_CSR_SBF) == (PWR_CSR_SBF));
864__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_BRR(
void)
866 return (READ_BIT(PWR->CSR, PWR_CSR_BRR) == (PWR_CSR_BRR));
873__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(
void)
875 return (READ_BIT(PWR->CSR, PWR_CSR_PVDO) == (PWR_CSR_PVDO));
883__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VOS(
void)
885 return (READ_BIT(PWR->CSR, LL_PWR_CSR_VOS) == (LL_PWR_CSR_VOS));
887#if defined(PWR_CR_ODEN)
893__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_OD(
void)
895 return (READ_BIT(PWR->CSR, PWR_CSR_ODRDY) == (PWR_CSR_ODRDY));
899#if defined(PWR_CR_ODSWEN)
905__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_ODSW(
void)
907 return (READ_BIT(PWR->CSR, PWR_CSR_ODSWRDY) == (PWR_CSR_ODSWRDY));
911#if defined(PWR_CR_UDEN)
917__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_UD(
void)
919 return (READ_BIT(PWR->CSR, PWR_CSR_UDRDY) == (PWR_CSR_UDRDY));
927__STATIC_INLINE
void LL_PWR_ClearFlag_SB(
void)
929 SET_BIT(PWR->CR, PWR_CR_CSBF);
937__STATIC_INLINE
void LL_PWR_ClearFlag_WU(
void)
939 SET_BIT(PWR->CR, PWR_CR_CWUF);
941#if defined(PWR_CSR_UDRDY)
947__STATIC_INLINE
void LL_PWR_ClearFlag_UD(
void)
949 WRITE_REG(PWR->CSR, PWR_CSR_UDRDY);
957#if defined(USE_FULL_LL_DRIVER)
961ErrorStatus LL_PWR_DeInit(
void);