//////////////////////////////////////////////////////////////////////////////// /// @file reg_pwr.h /// @author AE TEAM /// @brief THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE SERIES OF /// MM32 FIRMWARE LIBRARY. //////////////////////////////////////////////////////////////////////////////// /// @attention /// /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS. /// /// <H2><CENTER>© COPYRIGHT MINDMOTION </CENTER></H2> //////////////////////////////////////////////////////////////////////////////// // Define to prevent recursive inclusion #ifndef __REG_PWR_H #define __REG_PWR_H // Files includes #include <stdint.h> #include <stdbool.h> #include "types.h" #if defined ( __CC_ARM ) #pragma anon_unions #endif //////////////////////////////////////////////////////////////////////////////// /// @brief PWR Base Address Definition //////////////////////////////////////////////////////////////////////////////// #define PWR_BASE (APB1PERIPH_BASE + 0x7000) ///< Base Address: 0x40007000 //////////////////////////////////////////////////////////////////////////////// /// @brief PWR Register Structure Definition //////////////////////////////////////////////////////////////////////////////// typedef struct { union { __IO u32 CR; ///< Control register, offset: 0x00 __IO u32 CR1; }; union { __IO u32 CSR; ///< Control Status register offset: 0x04 __IO u32 CSR1; }; __IO u32 CR2; ///< Control register 2 offset: 0x08 __IO u32 CR3; ///< Control register 3 offset: 0x0C __IO u32 CR4; ///< Control register 4 offset: 0x10 __IO u32 CR5; ///< Control register 5 offset: 0x14 __IO u32 CR6; ///< Control register 6 offset: 0x18 __IO u32 SR; ///< Status register offset: 0x1C __IO u32 SCR; ///< clear status register offset: 0x20 __IO u32 CFGR; ///< Configuration register offset: 0x24 } PWR_TypeDef; //////////////////////////////////////////////////////////////////////////////// /// @brief PWR type pointer Definition //////////////////////////////////////////////////////////////////////////////// #define PWR ((PWR_TypeDef*) PWR_BASE) //////////////////////////////////////////////////////////////////////////////// /// @brief PWR_CR register Bit definition //////////////////////////////////////////////////////////////////////////////// #define PWR_CR_LDPS_Pos (0) #define PWR_CR_LDPS (0x01U << PWR_CR_LDPS_Pos) ///< Domain Write Protction #define PWR_CR_PDDS_Pos (1) #define PWR_CR_PDDS (0x01U << PWR_CR_PDDS_Pos) ///< Power Down Deepsleep #define PWR_CR_CSBF_Pos (3) #define PWR_CR_CSBF (0x01U << PWR_CR_CSBF_Pos) ///< Clear Standby Flag #define PWR_CR_LPR_Pos (13) #define PWR_CR_LPR (0x01U << PWR_CR_LPR_Pos) ///< Low power run #define PWR_CR_VOS_Pos (14) #define PWR_CR_VOS0 (0x00U << PWR_CR_VOS_Pos) ///< Modulator Voltage Output Select 1.80V #define PWR_CR_VOS1 (0x01U << PWR_CR_VOS_Pos) ///< Modulator Voltage Output Select 1.70V #define PWR_CR_VOS2 (0x02U << PWR_CR_VOS_Pos) ///< Modulator Voltage Output Select 1.60V #define PWR_CR_VOS3 (0x03U << PWR_CR_VOS_Pos) ///< Modulator Voltage Output Select 1.55V //////////////////////////////////////////////////////////////////////////////// /// @brief PWR_CSR register Bit definition //////////////////////////////////////////////////////////////////////////////// #define PWR_CSR_SBF_Pos (1) #define PWR_CSR_SBF (0x01U << PWR_CSR_SBF_Pos) ///< Standby Flag #define PWR_CSR_VOSRDY_Pos (14) #define PWR_CSR_VOSRDY (0x01U << PWR_CR_VOSRDY_Pos) ///< Voltage Modulator Output Selection Ready //////////////////////////////////////////////////////////////////////////////// /// @brief PWR_CR2 register Bit definition //////////////////////////////////////////////////////////////////////////////// #define PWR_CR2_EWUP1_Pos (0) #define PWR_CR2_EWUP1 (0x01U << PWR_CR2_EWUP1_Pos) ///< Enable WKUP1 wake-up pin #define PWR_CR2_EWUP2_Pos (1) #define PWR_CR2_EWUP2 (0x01U << PWR_CR2_EWUP2_Pos) ///< Enable WKUP2 wake-up pin #define PWR_CR2_EWUP3_Pos (2) #define PWR_CR2_EWUP3 (0x01U << PWR_CR2_EWUP3_Pos) ///< Enable WKUP3 wake-up pin #define PWR_CR2_EWUP4_Pos (3) #define PWR_CR2_EWUP4 (0x01U << PWR_CR2_EWUP4_Pos) ///< Enable WKUP4 wake-up pin #define PWR_CR2_EWUP5_Pos (4) #define PWR_CR2_EWUP5 (0x01U << PWR_CR2_EWUP5_Pos) ///< Enable WKUP5 wake-up pin #define PWR_CR2_EWUP6_Pos (5) #define PWR_CR2_EWUP6 (0x01U << PWR_CR2_EWUP6_Pos) ///< Enable WKUP6 wake-up pin #define PWR_CR2_ENWU_Pos (15) #define PWR_CR2_ENWU (0x01U << PWR_CR2_ENWU_Pos) ///< Enable wakeup module //////////////////////////////////////////////////////////////////////////////// /// @brief PWR_CR3 register Bit definition //////////////////////////////////////////////////////////////////////////////// #define PWR_CR3_WP1_Pos (0) #define PWR_CR3_WP1 (0x01U << PWR_CR3_WP1_Pos) ///< WKUP1 used for event polarity detection #define PWR_CR3_WP2_Pos (1) #define PWR_CR3_WP2 (0x01U << PWR_CR3_WP2_Pos) ///< WKUP2 used for event polarity detection #define PWR_CR3_WP3_Pos (2) #define PWR_CR3_WP3 (0x01U << PWR_CR3_WP3_Pos) ///< WKUP3 used for event polarity detection #define PWR_CR3_WP4_Pos (3) #define PWR_CR3_WP4 (0x01U << PWR_CR3_WP4_Pos) ///< WKUP4 used for event polarity detection #define PWR_CR3_WP5_Pos (4) #define PWR_CR3_WP5 (0x01U << PWR_CR3_WP5_Pos) ///< WKUP5 used for event polarity detection #define PWR_CR3_WP6_Pos (5) #define PWR_CR3_WP6 (0x01U << PWR_CR3_WP6_Pos) ///< WKUP6 used for event polarity detection //////////////////////////////////////////////////////////////////////////////// /// @brief PWR_CR4 register Bit definition //////////////////////////////////////////////////////////////////////////////// #define PWR_CR4_FILTSEL0_Pos (0) #define PWR_CR4_FILTSEL0 (0x01U << PWR_CR4_FILTSEL0_Pos) ///< selection wake-up source #define PWR_CR4_FILTE0_Pos (2) #define PWR_CR4_FILTE0 (0x01U << PWR_CR4_FILTE0_Pos) ///< enable Filter 0 #define PWR_CR4_FILTF0_Pos (4) #define PWR_CR4_FILTF0 (0x01U << PWR_CR4_FILTF0_Pos) ///< Whether the wake source passes through filter 0 #define PWR_CR4_FILTCNT0_Pos (8) #define PWR_CR4_FILTCNT0 (0xFFU << PWR_CR4_FILTCNT0_Pos) ///< Filter 0 counter //////////////////////////////////////////////////////////////////////////////// /// @brief PWR_CR5 register Bit definition //////////////////////////////////////////////////////////////////////////////// #define PWR_CR5_FILTSEL1_Pos (0) #define PWR_CR5_FILTSEL1 (0x01U << PWR_CR5_FILTSEL1_Pos) ///< selection wake-up source #define PWR_CR5_FILTE1_Pos (2) #define PWR_CR5_FILTE1 (0x01U << PWR_CR5_FILTE1_Pos) ///< enable Filter 1 #define PWR_CR5_FILTF1_Pos (4) #define PWR_CR5_FILTF1 (0x01U << PWR_CR5_FILTF1_Pos) ///< Whether the wake source passes through filter 1 #define PWR_CR5_FILTCNT1_Pos (8) #define PWR_CR5_FILTCNT1 (0xFFU << PWR_CR5_FILTCNT1_Pos) ///< Filter 1 counter //////////////////////////////////////////////////////////////////////////////// /// @brief PWR_CR6 register Bit definition //////////////////////////////////////////////////////////////////////////////// #define PWR_CR6_STDBY_FS_W_Pos (0) #define PWR_CR6_STDBY_FS_W1 (0x00U << PWR_CR6_STDBY_FS_W_Pos) ///< 1 LSI cycle wake #define PWR_CR6_STDBY_FS_W2 (0x01U << PWR_CR6_STDBY_FS_W_Pos) ///< 2 LSI cycle wake #define PWR_CR6_STDBY_FS_W3 (0x02U << PWR_CR6_STDBY_FS_W_Pos) ///< 3 LSI cycle wake #define PWR_CR6_STDBY_FS_W4 (0x03U << PWR_CR6_STDBY_FS_W_Pos) ///< 4 LSI cycle wake #define PWR_CR6_STDBY_FS_W5 (0x04U << PWR_CR6_STDBY_FS_W_Pos) ///< 5 LSI cycle wake #define PWR_CR6_STDBY_FS_W6 (0x05U << PWR_CR6_STDBY_FS_W_Pos) ///< 6 LSI cycle wake #define PWR_CR6_STDBY_FS_W7 (0x06U << PWR_CR6_STDBY_FS_W_Pos) ///< 7 LSI cycle wake #define PWR_CR6_STDBY_FS_W8 (0x07U << PWR_CR6_STDBY_FS_W_Pos) ///< 8 LSI cycle wake //////////////////////////////////////////////////////////////////////////////// /// @brief PWR_SR register Bit definition //////////////////////////////////////////////////////////////////////////////// #define PWR_SR_WUF1_Pos (0) #define PWR_SR_WUF1 (0x01U << PWR_SR_WUF1_Pos) ///< wake-up flag 1 #define PWR_SR_WUF2_Pos (1) #define PWR_SR_WUF2 (0x01U << PWR_SR_WUF2_Pos) ///< wake-up flag 2 #define PWR_SR_WUF3_Pos (2) #define PWR_SR_WUF3 (0x01U << PWR_SR_WUF3_Pos) ///< wake-up flag 3 #define PWR_SR_WUF4_Pos (3) #define PWR_SR_WUF4 (0x01U << PWR_SR_WUF4_Pos) ///< wake-up flag 4 #define PWR_SR_WUF5_Pos (4) #define PWR_SR_WUF5 (0x01U << PWR_SR_WUF5_Pos) ///< wake-up flag 5 #define PWR_SR_WUF6_Pos (5) #define PWR_SR_WUF6 (0x01U << PWR_SR_WUF6_Pos) ///< wake-up flag 6 //////////////////////////////////////////////////////////////////////////////// /// @brief PWR_SCR register Bit definition //////////////////////////////////////////////////////////////////////////////// #define PWR_SCR_CWUF1_Pos (0) #define PWR_SCR_CWUF1 (0x01U << PWR_SCR_CWUF1_Pos) ///< clear wake-up flag 1 #define PWR_SCR_CWUF2_Pos (1) #define PWR_SCR_CWUF2 (0x01U << PWR_SCR_CWUF2_Pos) ///< clear wake-up flag 2 #define PWR_SCR_CWUF3_Pos (2) #define PWR_SCR_CWUF3 (0x01U << PWR_SCR_CWUF3_Pos) ///< clear wake-up flag 3 #define PWR_SCR_CWUF4_Pos (3) #define PWR_SCR_CWUF4 (0x01U << PWR_SCR_CWUF4_Pos) ///< clear wake-up flag 4 #define PWR_SCR_CWUF5_Pos (4) #define PWR_SCR_CWUF5 (0x01U << PWR_SCR_CWUF5_Pos) ///< clear wake-up flag 5 #define PWR_SCR_CWUF6_Pos (5) #define PWR_SCR_CWUF6 (0x01U << PWR_SCR_CWUF6_Pos) ///< clear wake-up flag 6 //////////////////////////////////////////////////////////////////////////////// /// @brief PWR_CFGR register Bit definition //////////////////////////////////////////////////////////////////////////////// #define PWR_CFGR_LSICALSEL_Pos (0) #define PWR_CFGR_LSICALSEL (0x1FU << PWR_CFGR_LSICALSEL_Pos) ///< Enable internal clock calibration #define PWR_CFGR_LSICAL_Pos (5) #define PWR_CFGR_LSICAL (0x1FU << PWR_CFGR_LSICAL_Pos) ///< Internal high-speed clock calibration /// @} /// @} /// @} //////////////////////////////////////////////////////////////////////////////// #endif ////////////////////////////////////////////////////////////////////////////////