123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- #ifndef GD32F30X_PMU_H
- #define GD32F30X_PMU_H
- #include "gd32f30x.h"
- #define PMU PMU_BASE
- #define PMU_CTL REG32((PMU) + 0x00000000U)
- #define PMU_CS REG32((PMU) + 0x00000004U)
- #define PMU_CTL_LDOLP BIT(0)
- #define PMU_CTL_STBMOD BIT(1)
- #define PMU_CTL_WURST BIT(2)
- #define PMU_CTL_STBRST BIT(3)
- #define PMU_CTL_LVDEN BIT(4)
- #define PMU_CTL_LVDT BITS(5,7)
- #define PMU_CTL_BKPWEN BIT(8)
- #define PMU_CTL_LDLP BIT(10)
- #define PMU_CTL_LDNP BIT(11)
- #define PMU_CTL_LDOVS BITS(14,15)
- #define PMU_CTL_HDEN BIT(16)
- #define PMU_CTL_HDS BIT(17)
- #define PMU_CTL_LDEN BITS(18,19)
- #define PMU_CS_WUF BIT(0)
- #define PMU_CS_STBF BIT(1)
- #define PMU_CS_LVDF BIT(2)
- #define PMU_CS_WUPEN BIT(8)
- #define PMU_CS_LDOVSRF BIT(14)
- #define PMU_CS_HDRF BIT(16)
- #define PMU_CS_HDSRF BIT(17)
- #define PMU_CS_LDRF BITS(18,19)
- #define PMU_LDO_NORMAL ((uint32_t)0x00000000U)
- #define PMU_LDO_LOWPOWER PMU_CTL_LDOLP
- #define CTL_LVDT(regval) (BITS(5,7)&((uint32_t)(regval)<<5))
- #define PMU_LVDT_0 CTL_LVDT(0)
- #define PMU_LVDT_1 CTL_LVDT(1)
- #define PMU_LVDT_2 CTL_LVDT(2)
- #define PMU_LVDT_3 CTL_LVDT(3)
- #define PMU_LVDT_4 CTL_LVDT(4)
- #define PMU_LVDT_5 CTL_LVDT(5)
- #define PMU_LVDT_6 CTL_LVDT(6)
- #define PMU_LVDT_7 CTL_LVDT(7)
- #define CTL_LDLP(regval) (BIT(10)&((uint32_t)(regval)<<10))
- #define PMU_NORMALDR_LOWPWR CTL_LDLP(0)
- #define PMU_LOWDR_LOWPWR CTL_LDLP(1)
- #define CTL_LDNP(regval) (BIT(11)&((uint32_t)(regval)<<11))
- #define PMU_NORMALDR_NORMALPWR CTL_LDNP(0)
- #define PMU_LOWDR_NORMALPWR CTL_LDNP(1)
- #define CTL_LDOVS(regval) (BITS(14,15)&((uint32_t)(regval)<<14))
- #define PMU_LDOVS_LOW CTL_LDOVS(1)
- #define PMU_LDOVS_MID CTL_LDOVS(2)
- #define PMU_LDOVS_HIGH CTL_LDOVS(3)
- #define CTL_HDS(regval) (BIT(17)&((uint32_t)(regval)<<17))
- #define PMU_HIGHDR_SWITCH_NONE CTL_HDS(0)
- #define PMU_HIGHDR_SWITCH_EN CTL_HDS(1)
- #define PMU_LOWDRIVER_DISABLE ((uint32_t)0x00000000U)
- #define PMU_LOWDRIVER_ENABLE PMU_CTL_LDEN
- #define CS_LDRF(regval) (BITS(18,19)&((uint32_t)(regval)<<18))
- #define PMU_LDRF_NORMAL CS_LDRF(0)
- #define PMU_LDRF_LOWDRIVER CS_LDRF(3)
- #define PMU_FLAG_WAKEUP PMU_CS_WUF
- #define PMU_FLAG_STANDBY PMU_CS_STBF
- #define PMU_FLAG_LVD PMU_CS_LVDF
- #define PMU_FLAG_LDOVSRF PMU_CS_LDOVSRF
- #define PMU_FLAG_HDRF PMU_CS_HDRF
- #define PMU_FLAG_HDSRF PMU_CS_HDSRF
- #define PMU_FLAG_LDRF PMU_CS_LDRF
- #define PMU_FLAG_RESET_WAKEUP ((uint8_t)0x00U)
- #define PMU_FLAG_RESET_STANDBY ((uint8_t)0x01U)
- #define WFI_CMD ((uint8_t)0x00U)
- #define WFE_CMD ((uint8_t)0x01U)
- void pmu_deinit(void);
- void pmu_lvd_select(uint32_t lvdt_n);
- void pmu_ldo_output_select(uint32_t ldo_output);
- void pmu_lvd_disable(void);
- void pmu_highdriver_switch_select(uint32_t highdr_switch);
- void pmu_highdriver_mode_enable(void);
- void pmu_highdriver_mode_disable(void);
- void pmu_lowdriver_mode_enable(void);
- void pmu_lowdriver_mode_disable(void);
- void pmu_lowpower_driver_config(uint32_t mode);
- void pmu_normalpower_driver_config(uint32_t mode);
- void pmu_to_sleepmode(uint8_t sleepmodecmd);
- void pmu_to_deepsleepmode(uint32_t ldo, uint32_t lowdrive, uint8_t deepsleepmodecmd);
- void pmu_to_standbymode(void);
- void pmu_wakeup_pin_enable(void);
- void pmu_wakeup_pin_disable(void);
- void pmu_backup_write_enable(void);
- void pmu_backup_write_disable(void);
- FlagStatus pmu_flag_get(uint32_t flag);
- void pmu_flag_clear(uint32_t flag);
- #endif
|