1 ////////////////////////////////////////////////////////////////////////////////
2 /// @file     hal_pwr.h
3 /// @author   AE TEAM
4 /// @brief    THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE PWR
5 ///           FIRMWARE LIBRARY.
6 ////////////////////////////////////////////////////////////////////////////////
7 /// @attention
8 ///
9 /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
10 /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
11 /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
12 /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
13 /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
14 /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
15 ///
16 /// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
17 ////////////////////////////////////////////////////////////////////////////////
18 
19 // Define to prevent recursive inclusion
20 #ifndef __HAL_PWR_H
21 #define __HAL_PWR_H
22 
23 // Files includes
24 #include "types.h"
25 #include "reg_pwr.h"
26 #include "reg_syscfg.h"
27 ////////////////////////////////////////////////////////////////////////////////
28 /// @addtogroup MM32_Hardware_Abstract_Layer
29 /// @{
30 
31 ////////////////////////////////////////////////////////////////////////////////
32 /// @defgroup PWR_HAL
33 /// @brief PWR HAL modules
34 /// @{
35 
36 ////////////////////////////////////////////////////////////////////////////////
37 /// @defgroup PWR_Exported_Types
38 /// @{
39 
40 typedef enum {
41     emWUP_Pin1 = 0,
42     emWUP_Pin2 = 1,
43     emWUP_Pin3,
44     emWUP_Pin4,
45     emWUP_Pin5,
46     emWUP_Pin6,
47 } emWUP_Pin_Typedef;
48 ////////////////////////////////////////////////////////////////////////////////
49 /// @brief PVD_detection_level
50 
51 typedef enum {
52     emPVD_LEVEL0  = SYSCFG_PDETCSR_PLS_1V7,
53     emPVD_LEVEL1  = SYSCFG_PDETCSR_PLS_2V0,
54     emPVD_LEVEL2  = SYSCFG_PDETCSR_PLS_2V3,
55     emPVD_LEVEL3  = SYSCFG_PDETCSR_PLS_2V6,
56     emPVD_LEVEL4  = SYSCFG_PDETCSR_PLS_2V9,
57     emPVD_LEVEL5  = SYSCFG_PDETCSR_PLS_3V2,
58     emPVD_LEVEL6  = SYSCFG_PDETCSR_PLS_3V5,
59     emPVD_LEVEL7  = SYSCFG_PDETCSR_PLS_3V8,
60     emPVD_LEVEL8  = SYSCFG_PDETCSR_PLS_4V1,
61     emPVD_LEVEL9  = SYSCFG_PDETCSR_PLS_4V4,
62     emPVD_LEVEL10 = SYSCFG_PDETCSR_PLS_4V7
63 } emPVD_Level_Typedef;
64 #define PWR_PVDLevel_1V7          SYSCFG_PDETCSR_PLS_1V7
65 #define PWR_PVDLevel_2V0          SYSCFG_PDETCSR_PLS_2V0
66 #define PWR_PVDLevel_2V3          SYSCFG_PDETCSR_PLS_2V3
67 #define PWR_PVDLevel_2V6          SYSCFG_PDETCSR_PLS_2V6
68 #define PWR_PVDLevel_2V9          SYSCFG_PDETCSR_PLS_2V9
69 #define PWR_PVDLevel_3V2          SYSCFG_PDETCSR_PLS_3V2
70 #define PWR_PVDLevel_3V5          SYSCFG_PDETCSR_PLS_3V5
71 #define PWR_PVDLevel_3V8          SYSCFG_PDETCSR_PLS_3V8
72 #define PWR_PVDLevel_4V1          SYSCFG_PDETCSR_PLS_4V1
73 #define PWR_PVDLevel_4V4          SYSCFG_PDETCSR_PLS_4V4
74 #define PWR_PVDLevel_4V7          SYSCFG_PDETCSR_PLS_4V7
75 /// @brief Regulator_state_is_STOP_mode
76 typedef enum {
77     PWR_Regulator_ON       = 0x00000000,
78     PWR_Regulator_LowPower = 0x00000001
79 
80 } emPWR_Reg_Stop_mode_Typedef;
81 
82 /// @brief STOP_mode_entry
83 typedef enum {
84     PWR_STOPEntry_WFI = 0x00000001,
85     PWR_STOPEntry_WFE = 0x00000002
86 
87 } emPWR_STOP_ModeEn_Typedef;
88 
89 /// @brief Low Power Mode
90 typedef enum {
91     LP_STOP_MODE    = 0,
92     LP_SLEEP_MODE   = 1,
93     LP_STANDBY_MODE = 2
94 } emPWR_LP_Mode_Typedef;
95 
96 /// @brief Wait_for_mode
97 typedef enum {
98     LP_WFI,
99     LP_WFE
100 } emPWR_Wait_Mode_Typedef;
101 //typedef enum {
102 //    PWR_FLAG_WU   = PWR_CSR_WUF,
103 //    PWR_FLAG_SB   = PWR_CSR_SBF,
104 
105 //    PWR_FLAG_PVDO = PWR_CSR_PVDO
106 
107 
108 //} emPWR_PWR_Flag_Typedef;
109 
110 
111 /// @}
112 
113 ///////////////////////////////////////////////////////////////////////////////
114 /// @defgroup PWR_Exported_Variables
115 /// @{
116 
117 #ifdef _HAL_PWR_C_
118 
119 #define GLOBAL
120 #else
121 #define GLOBAL extern
122 #endif
123 
124 #undef GLOBAL
125 
126 /// @}
127 
128 ////////////////////////////////////////////////////////////////////////////////
129 /// @defgroup PWR_Exported_Functions
130 /// @{
131 
132 void PWR_DeInit(void);
133 
134 void PWR_BackupAccessCmd(FunctionalState state);
135 
136 void PWR_PVDCmd(FunctionalState state);
137 void PWR_PVDLevelConfig(emPVD_Level_Typedef pvd_level);
138 void PWR_WakeUpPinCmd(FunctionalState state);
139 void PWR_EnterSTOPMode(emPWR_Reg_Stop_mode_Typedef regulator, emPWR_STOP_ModeEn_Typedef stop_entry);
140 void PWR_EnterSTANDBYMode(void);
141 
142 
143 void PWR_ClearFlag(u32 flag);
144 FlagStatus PWR_GetFlagStatus(u32 flag);
145 FlagStatus PWR_GetPVDOFlagStatus(u32 flag);
146 void exPWR_EnterLowPowerMode(emPWR_LP_Mode_Typedef lp_mode, emPWR_Wait_Mode_Typedef wait_mode);
147 
148 /// @}
149 
150 /// @}
151 
152 /// @}
153 
154 ////////////////////////////////////////////////////////////////////////////////
155 #endif // __HAL_PWR_H
156 ////////////////////////////////////////////////////////////////////////////////
157