1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045 |
- #include "stm32f4xx_pwr.h"
- #include "stm32f4xx_rcc.h"
-
- #define PWR_OFFSET (PWR_BASE - PERIPH_BASE)
- #define CR_OFFSET (PWR_OFFSET + 0x00)
- #define DBP_BitNumber 0x08
- #define CR_DBP_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (DBP_BitNumber * 4))
- #define PVDE_BitNumber 0x04
- #define CR_PVDE_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (PVDE_BitNumber * 4))
- #define FPDS_BitNumber 0x09
- #define CR_FPDS_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (FPDS_BitNumber * 4))
- #define PMODE_BitNumber 0x0E
- #define CR_PMODE_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (PMODE_BitNumber * 4))
- #define ODEN_BitNumber 0x10
- #define CR_ODEN_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (ODEN_BitNumber * 4))
- #define ODSWEN_BitNumber 0x11
- #define CR_ODSWEN_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (ODSWEN_BitNumber * 4))
- #if defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F446xx)
- #define MRUDS_BitNumber 0x0B
- #define CR_MRUDS_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (MRUDS_BitNumber * 4))
- #define LPUDS_BitNumber 0x0A
- #define CR_LPUDS_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (LPUDS_BitNumber * 4))
- #endif
- #if defined(STM32F401xx) || defined(STM32F410xx) || defined(STM32F411xE) || defined(STM32F412xG) || defined(STM32F413_423xx)
- #define MRLVDS_BitNumber 0x0B
- #define CR_MRLVDS_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (MRLVDS_BitNumber * 4))
- #define LPLVDS_BitNumber 0x0A
- #define CR_LPLVDS_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (LPLVDS_BitNumber * 4))
- #endif
- #if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || defined(STM32F410xx) || defined(STM32F411xE) || defined(STM32F469_479xx)
- #define CSR_OFFSET (PWR_OFFSET + 0x04)
- #define EWUP_BitNumber 0x08
- #define CSR_EWUP_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (EWUP_BitNumber * 4))
- #endif
- #if defined(STM32F410xx) || defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx)
- #define CSR_OFFSET (PWR_OFFSET + 0x04)
- #define EWUP1_BitNumber 0x08
- #define CSR_EWUP1_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (EWUP1_BitNumber * 4))
- #define EWUP2_BitNumber 0x07
- #define CSR_EWUP2_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (EWUP2_BitNumber * 4))
- #if defined(STM32F410xx) || defined(STM32F412xG) || defined(STM32F413_423xx)
- #define EWUP3_BitNumber 0x06
- #define CSR_EWUP3_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (EWUP2_BitNumber * 4))
- #endif
- #endif
- #define BRE_BitNumber 0x09
- #define CSR_BRE_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (BRE_BitNumber * 4))
- #define CR_DS_MASK ((uint32_t)0xFFFFF3FC)
- #define CR_PLS_MASK ((uint32_t)0xFFFFFF1F)
- #define CR_VOS_MASK ((uint32_t)0xFFFF3FFF)
- void PWR_DeInit(void)
- {
- RCC_APB1PeriphResetCmd(RCC_APB1Periph_PWR, ENABLE);
- RCC_APB1PeriphResetCmd(RCC_APB1Periph_PWR, DISABLE);
- }
- void PWR_BackupAccessCmd(FunctionalState NewState)
- {
-
- assert_param(IS_FUNCTIONAL_STATE(NewState));
-
- *(__IO uint32_t *) CR_DBP_BB = (uint32_t)NewState;
- }
- void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel)
- {
- uint32_t tmpreg = 0;
-
-
- assert_param(IS_PWR_PVD_LEVEL(PWR_PVDLevel));
-
- tmpreg = PWR->CR;
-
-
- tmpreg &= CR_PLS_MASK;
-
-
- tmpreg |= PWR_PVDLevel;
-
-
- PWR->CR = tmpreg;
- }
- void PWR_PVDCmd(FunctionalState NewState)
- {
-
- assert_param(IS_FUNCTIONAL_STATE(NewState));
-
- *(__IO uint32_t *) CR_PVDE_BB = (uint32_t)NewState;
- }
- #if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || defined(STM32F411xE)
- void PWR_WakeUpPinCmd(FunctionalState NewState)
- {
-
- assert_param(IS_FUNCTIONAL_STATE(NewState));
- *(__IO uint32_t *) CSR_EWUP_BB = (uint32_t)NewState;
- }
- #endif
- #if defined(STM32F410xx) || defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx)
- void PWR_WakeUpPinCmd(uint32_t PWR_WakeUpPinx, FunctionalState NewState)
- {
-
- assert_param(IS_FUNCTIONAL_STATE(NewState));
- assert_param(IS_PWR_WAKEUP_PIN(NewState));
- if(PWR_WakeUpPinx == PWR_WakeUp_Pin1)
- {
- *(__IO uint32_t *) CSR_EWUP1_BB = (uint32_t)NewState;
- }
- #if defined(STM32F410xx)|| defined(STM32F412xG) || defined(STM32F413_423xx)
- else if(PWR_WakeUpPinx == PWR_WakeUp_Pin3)
- {
- *(__IO uint32_t *) CSR_EWUP3_BB = (uint32_t)NewState;
- }
- #endif
- else
- {
- *(__IO uint32_t *) CSR_EWUP2_BB = (uint32_t)NewState;
- }
- }
- #endif
- void PWR_BackupRegulatorCmd(FunctionalState NewState)
- {
-
- assert_param(IS_FUNCTIONAL_STATE(NewState));
- *(__IO uint32_t *) CSR_BRE_BB = (uint32_t)NewState;
- }
- void PWR_MainRegulatorModeConfig(uint32_t PWR_Regulator_Voltage)
- {
- uint32_t tmpreg = 0;
-
-
- assert_param(IS_PWR_REGULATOR_VOLTAGE(PWR_Regulator_Voltage));
- tmpreg = PWR->CR;
-
-
- tmpreg &= CR_VOS_MASK;
-
-
- tmpreg |= PWR_Regulator_Voltage;
-
-
- PWR->CR = tmpreg;
- }
- void PWR_OverDriveCmd(FunctionalState NewState)
- {
-
- assert_param(IS_FUNCTIONAL_STATE(NewState));
-
-
- *(__IO uint32_t *) CR_ODEN_BB = (uint32_t)NewState;
- }
- void PWR_OverDriveSWCmd(FunctionalState NewState)
- {
-
- assert_param(IS_FUNCTIONAL_STATE(NewState));
-
- *(__IO uint32_t *) CR_ODSWEN_BB = (uint32_t)NewState;
- }
- void PWR_UnderDriveCmd(FunctionalState NewState)
- {
-
- assert_param(IS_FUNCTIONAL_STATE(NewState));
- if (NewState != DISABLE)
- {
-
- PWR->CR |= (uint32_t)PWR_CR_UDEN;
- }
- else
- {
-
- PWR->CR &= (uint32_t)(~PWR_CR_UDEN);
- }
- }
- #if defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F446xx)
- void PWR_MainRegulatorUnderDriveCmd(FunctionalState NewState)
- {
-
- assert_param(IS_FUNCTIONAL_STATE(NewState));
-
- if (NewState != DISABLE)
- {
- *(__IO uint32_t *) CR_MRUDS_BB = (uint32_t)ENABLE;
- }
- else
- {
- *(__IO uint32_t *) CR_MRUDS_BB = (uint32_t)DISABLE;
- }
- }
- void PWR_LowRegulatorUnderDriveCmd(FunctionalState NewState)
- {
-
- assert_param(IS_FUNCTIONAL_STATE(NewState));
-
- if (NewState != DISABLE)
- {
- *(__IO uint32_t *) CR_LPUDS_BB = (uint32_t)ENABLE;
- }
- else
- {
- *(__IO uint32_t *) CR_LPUDS_BB = (uint32_t)DISABLE;
- }
- }
- #endif
- #if defined(STM32F401xx) || defined(STM32F410xx) || defined(STM32F411xE) || defined(STM32F412xG) || defined(STM32F413_423xx)
- void PWR_MainRegulatorLowVoltageCmd(FunctionalState NewState)
- {
-
- assert_param(IS_FUNCTIONAL_STATE(NewState));
-
- if (NewState != DISABLE)
- {
- *(__IO uint32_t *) CR_MRLVDS_BB = (uint32_t)ENABLE;
- }
- else
- {
- *(__IO uint32_t *) CR_MRLVDS_BB = (uint32_t)DISABLE;
- }
- }
- void PWR_LowRegulatorLowVoltageCmd(FunctionalState NewState)
- {
-
- assert_param(IS_FUNCTIONAL_STATE(NewState));
-
- if (NewState != DISABLE)
- {
- *(__IO uint32_t *) CR_LPLVDS_BB = (uint32_t)ENABLE;
- }
- else
- {
- *(__IO uint32_t *) CR_LPLVDS_BB = (uint32_t)DISABLE;
- }
- }
- #endif
- void PWR_FlashPowerDownCmd(FunctionalState NewState)
- {
-
- assert_param(IS_FUNCTIONAL_STATE(NewState));
- *(__IO uint32_t *) CR_FPDS_BB = (uint32_t)NewState;
- }
- void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry)
- {
- uint32_t tmpreg = 0;
-
-
- assert_param(IS_PWR_REGULATOR(PWR_Regulator));
- assert_param(IS_PWR_STOP_ENTRY(PWR_STOPEntry));
-
-
- tmpreg = PWR->CR;
-
- tmpreg &= CR_DS_MASK;
-
-
- tmpreg |= PWR_Regulator;
-
-
- PWR->CR = tmpreg;
-
-
- SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
-
-
- if(PWR_STOPEntry == PWR_STOPEntry_WFI)
- {
-
- __WFI();
- }
- else
- {
-
- __WFE();
- }
-
- SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk);
- }
- void PWR_EnterUnderDriveSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry)
- {
- uint32_t tmpreg = 0;
-
-
- assert_param(IS_PWR_REGULATOR_UNDERDRIVE(PWR_Regulator));
- assert_param(IS_PWR_STOP_ENTRY(PWR_STOPEntry));
-
-
- tmpreg = PWR->CR;
-
- tmpreg &= CR_DS_MASK;
-
-
- tmpreg |= PWR_Regulator;
-
-
- PWR->CR = tmpreg;
-
-
- SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
-
-
- if(PWR_STOPEntry == PWR_STOPEntry_WFI)
- {
-
- __WFI();
- }
- else
- {
-
- __WFE();
- }
-
- SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk);
- }
- void PWR_EnterSTANDBYMode(void)
- {
-
- PWR->CR |= PWR_CR_PDDS;
-
-
- SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
-
-
- #if defined ( __CC_ARM )
- __force_stores();
- #endif
-
- __WFI();
- }
- FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG)
- {
- FlagStatus bitstatus = RESET;
-
-
- assert_param(IS_PWR_GET_FLAG(PWR_FLAG));
-
- if ((PWR->CSR & PWR_FLAG) != (uint32_t)RESET)
- {
- bitstatus = SET;
- }
- else
- {
- bitstatus = RESET;
- }
-
- return bitstatus;
- }
- void PWR_ClearFlag(uint32_t PWR_FLAG)
- {
-
- assert_param(IS_PWR_CLEAR_FLAG(PWR_FLAG));
-
- #if defined (STM32F427_437xx) || defined (STM32F429_439xx)
- if (PWR_FLAG != PWR_FLAG_UDRDY)
- {
- PWR->CR |= PWR_FLAG << 2;
- }
- else
- {
- PWR->CSR |= PWR_FLAG_UDRDY;
- }
- #endif
- #if defined (STM32F40_41xxx) || defined (STM32F401xx) || defined (STM32F410xx) || defined (STM32F411xE) || defined(STM32F412xG) || defined(STM32F413_423xx)
- PWR->CR |= PWR_FLAG << 2;
- #endif
- }
|