source: trunk/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_pwr.h

Last change on this file was 6, checked in by f.jahn, 8 months ago
File size: 14.4 KB
Line 
1/**
2 ******************************************************************************
3 * @file stm32g0xx_hal_pwr.h
4 * @author MCD Application Team
5 * @brief Header file of PWR HAL module.
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2018 STMicroelectronics.
10 * All rights reserved.
11 *
12 * This software is licensed under terms that can be found in the LICENSE file
13 * in the root directory of this software component.
14 * If no LICENSE file comes with this software, it is provided AS-IS.
15 *
16 ******************************************************************************
17 */
18
19/* Define to prevent recursive inclusion -------------------------------------*/
20#ifndef STM32G0xx_HAL_PWR_H
21#define STM32G0xx_HAL_PWR_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/* Includes ------------------------------------------------------------------*/
28#include "stm32g0xx_hal_def.h"
29
30/** @addtogroup STM32G0xx_HAL_Driver
31 * @{
32 */
33
34/** @defgroup PWR PWR
35 * @brief PWR HAL module driver
36 * @{
37 */
38
39/* Exported types ------------------------------------------------------------*/
40/** @defgroup PWR_Exported_Types PWR Exported Types
41 * @{
42 */
43
44/**
45 * @}
46 */
47
48/* Exported constants --------------------------------------------------------*/
49/** @defgroup PWR_Exported_Constants PWR Exported Constants
50 * @{
51 */
52
53/** @defgroup PWR_WakeUp_Pins PWR WakeUp pins
54 * @{
55 */
56#define PWR_WAKEUP_PIN1 PWR_CR3_EWUP1 /*!< Wakeup pin 1 (with high level detection) */
57#define PWR_WAKEUP_PIN2 PWR_CR3_EWUP2 /*!< Wakeup pin 2 (with high level detection) */
58#if defined(PWR_CR3_EWUP3)
59#define PWR_WAKEUP_PIN3 PWR_CR3_EWUP3 /*!< Wakeup pin 3 (with high level detection) */
60#endif /* PWR_CR3_EWUP3 */
61#define PWR_WAKEUP_PIN4 PWR_CR3_EWUP4 /*!< Wakeup pin 4 (with high level detection) */
62#if defined(PWR_CR3_EWUP5)
63#define PWR_WAKEUP_PIN5 PWR_CR3_EWUP5 /*!< Wakeup pin 5 (with high level detection) */
64#endif /* PWR_CR3_EWUP5 */
65#define PWR_WAKEUP_PIN6 PWR_CR3_EWUP6 /*!< Wakeup pin 6 (with high level detection) */
66#define PWR_WAKEUP_PIN1_HIGH PWR_CR3_EWUP1 /*!< Wakeup pin 1 (with high level detection) */
67#define PWR_WAKEUP_PIN2_HIGH PWR_CR3_EWUP2 /*!< Wakeup pin 2 (with high level detection) */
68#if defined(PWR_CR3_EWUP3)
69#define PWR_WAKEUP_PIN3_HIGH PWR_CR3_EWUP3 /*!< Wakeup pin 3 (with high level detection) */
70#endif /* PWR_CR3_EWUP3 */
71#define PWR_WAKEUP_PIN4_HIGH PWR_CR3_EWUP4 /*!< Wakeup pin 4 (with high level detection) */
72#if defined(PWR_CR3_EWUP5)
73#define PWR_WAKEUP_PIN5_HIGH PWR_CR3_EWUP5 /*!< Wakeup pin 5 (with high level detection) */
74#endif /* PWR_CR3_EWUP5*/
75#define PWR_WAKEUP_PIN6_HIGH PWR_CR3_EWUP6 /*!< Wakeup pin 6 (with high level detection) */
76#define PWR_WAKEUP_PIN1_LOW ((PWR_CR4_WP1 << PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP1) /*!< Wakeup pin 1 (with low level detection) */
77#define PWR_WAKEUP_PIN2_LOW ((PWR_CR4_WP2 << PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP2) /*!< Wakeup pin 2 (with low level detection) */
78#if defined(PWR_CR3_EWUP3)
79#define PWR_WAKEUP_PIN3_LOW ((PWR_CR4_WP3 << PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP3) /*!< Wakeup pin 3 (with low level detection) */
80#endif /* PWR_CR3_EWUP3 */
81#define PWR_WAKEUP_PIN4_LOW ((PWR_CR4_WP4 << PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP4) /*!< Wakeup pin 4 (with low level detection) */
82#if defined(PWR_CR3_EWUP5)
83#define PWR_WAKEUP_PIN5_LOW ((PWR_CR4_WP5 << PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP5) /*!< Wakeup pin 5 (with low level detection) */
84#endif /* PWR_CR3_EWUP5 */
85#define PWR_WAKEUP_PIN6_LOW ((PWR_CR4_WP6 << PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP6) /*!< Wakeup pin 6 (with low level detection) */
86/**
87 * @}
88 */
89
90/** @defgroup PWR_Low_Power_Mode_Selection PWR Low Power Mode Selection
91 * @{
92 */
93#define PWR_LOWPOWERMODE_STOP0 (0x00000000u) /*!< Stop 0: stop mode with main regulator */
94#define PWR_LOWPOWERMODE_STOP1 (PWR_CR1_LPMS_0) /*!< Stop 1: stop mode with low power regulator */
95#define PWR_LOWPOWERMODE_STANDBY (PWR_CR1_LPMS_0 | PWR_CR1_LPMS_1) /*!< Standby mode */
96#if defined(PWR_SHDW_SUPPORT)
97#define PWR_LOWPOWERMODE_SHUTDOWN (PWR_CR1_LPMS_2) /*!< Shutdown mode */
98#endif /* PWR_SHDW_SUPPORT */
99/**
100 * @}
101 */
102
103/** @defgroup PWR_Regulator_state_in_SLEEP_STOP_mode PWR regulator mode
104 * @{
105 */
106#define PWR_MAINREGULATOR_ON (0x00000000u) /*!< Regulator in main mode */
107#define PWR_LOWPOWERREGULATOR_ON PWR_CR1_LPR /*!< Regulator in low-power mode */
108/**
109 * @}
110 */
111
112/** @defgroup PWR_SLEEP_mode_entry PWR SLEEP mode entry
113 * @{
114 */
115#define PWR_SLEEPENTRY_WFI ((uint8_t)0x01u) /*!< Wait For Interruption instruction to enter Sleep mode */
116#define PWR_SLEEPENTRY_WFE ((uint8_t)0x02u) /*!< Wait For Event instruction to enter Sleep mode */
117/**
118 * @}
119 */
120
121/** @defgroup PWR_STOP_mode_entry PWR STOP mode entry
122 * @{
123 */
124#define PWR_STOPENTRY_WFI ((uint8_t)0x01u) /*!< Wait For Interruption instruction to enter Stop mode */
125#define PWR_STOPENTRY_WFE ((uint8_t)0x02u) /*!< Wait For Event instruction to enter Stop mode */
126/**
127 * @}
128 */
129
130/** @defgroup PWR_Flag PWR Status Flags
131 * @brief Elements values convention: 0000 00XX 000Y YYYYb
132 * - Y YYYY : Flag position in the XX register (5 bits)
133 * - XX : Status register (2 bits)
134 * - 01: SR1 register
135 * - 10: SR2 register
136 * The only exception is PWR_FLAG_WU, encompassing all
137 * wake-up flags and set to PWR_SR1_WUF.
138 * @{
139 */
140#define PWR_FLAG_WUF1 (0x00010000u | PWR_SR1_WUF1) /*!< Wakeup event on wakeup pin 1 */
141#define PWR_FLAG_WUF2 (0x00010000u | PWR_SR1_WUF2) /*!< Wakeup event on wakeup pin 2 */
142#if defined(PWR_CR3_EWUP3)
143#define PWR_FLAG_WUF3 (0x00010000u | PWR_SR1_WUF3) /*!< Wakeup event on wakeup pin 3 */
144#endif /* PWR_CR3_EWUP3 */
145#define PWR_FLAG_WUF4 (0x00010000u | PWR_SR1_WUF4) /*!< Wakeup event on wakeup pin 4 */
146#if defined(PWR_CR3_EWUP5)
147#define PWR_FLAG_WUF5 (0x00010000u | PWR_SR1_WUF5) /*!< Wakeup event on wakeup pin 5 */
148#endif /* PWR_CR3_EWUP5 */
149#define PWR_FLAG_WUF6 (0x00010000u | PWR_SR1_WUF6) /*!< Wakeup event on wakeup pin 6 */
150#define PWR_FLAG_WUF (0x00010000u | PWR_SR1_WUF) /*!< Wakeup event on all wakeup pin */
151#define PWR_FLAG_SB (0x00010000u | PWR_SR1_SBF) /*!< Standby flag */
152#define PWR_FLAG_WUFI (0x00010000u | PWR_SR1_WUFI) /*!< Wakeup on internal wakeup line */
153#define PWR_FLAG_FLASH_READY (0x00020000u | PWR_SR2_FLASH_RDY) /*!< Flash ready */
154#define PWR_FLAG_REGLPS (0x00020000u | PWR_SR2_REGLPS) /*!< Regulator Low Power started */
155#define PWR_FLAG_REGLPF (0x00020000u | PWR_SR2_REGLPF) /*!< Regulator Low Power flag */
156#if defined(PWR_PVD_SUPPORT)
157#define PWR_FLAG_PVDO (0x00020000u | PWR_SR2_PVDO) /*!< Power Voltage Detector output */
158#endif /* PWR_PVD_SUPPORT */
159#if defined(PWR_PVM_SUPPORT)
160#define PWR_FLAG_PVMO_USB (0x00020000u | PWR_SR2_PVMO_USB) /*!< Power Voltage Monitoring output */
161#endif /* PWR_PVM_SUPPORT */
162
163/**
164 * @}
165 */
166
167/**
168 * @}
169 */
170
171/* Exported macros -----------------------------------------------------------*/
172/** @defgroup PWR_Exported_Macros PWR Exported Macros
173 * @{
174 */
175/** @brief Check whether or not a specific PWR flag is set.
176 * @param __FLAG__ specifies the flag to check.
177 * This parameter can be one a combination of following values:
178 * @arg PWR_FLAG_WUF1: Wake Up Flag 1. Indicates that a wakeup event
179 * was received from the WKUP pin 1.
180 * @arg PWR_FLAG_WUF2: Wake Up Flag 2. Indicates that a wakeup event
181 * was received from the WKUP pin 2.
182 * @arg PWR_FLAG_WUF3: Wake Up Flag 3. Indicates that a wakeup event
183 * was received from the WKUP pin 3. (*)
184 * @arg PWR_FLAG_WUF4: Wake Up Flag 4. Indicates that a wakeup event
185 * was received from the WKUP pin 4.
186 * @arg PWR_FLAG_WUF5: Wake Up Flag 5. Indicates that a wakeup event
187 * was received from the WKUP pin 5. (*)
188 * @arg PWR_FLAG_WUF6: Wake Up Flag 6. Indicates that a wakeup event
189 * was received from the WKUP pin 6.
190 * @arg PWR_FLAG_SB: StandBy Flag. Indicates that the system
191 * entered StandBy mode.
192 * @arg PWR_FLAG_WUFI: Wake-Up Flag Internal. Set when a wakeup is
193 * detected on the internal wakeup line.
194 * OR a combination of following values:
195 * @arg PWR_FLAG_FLASH_READY: Flash is ready. Indicates whether flash
196 * can be used or not
197 * @arg PWR_FLAG_REGLPS: Low Power Regulator Started. Indicates whether
198 * or not the low-power regulator is ready.
199 * @arg PWR_FLAG_REGLPF: Low Power Regulator Flag. Indicates whether the
200 * regulator is ready in main mode or is in low-power mode.
201 * @if defined(STM32G081xx)
202 * @arg PWR_FLAG_PVDO: Power Voltage Detector Output. Indicates whether
203 * VDD voltage is below or above the selected PVD threshold.
204 * @endif
205 * @retval The new state of __FLAG__ (TRUE or FALSE).
206 */
207#define __HAL_PWR_GET_FLAG(__FLAG__) (((__FLAG__) & 0x00010000u) ?\
208 ((PWR->SR1 & ((__FLAG__) & ~0x00030000u)) == ((__FLAG__) & ~0x00030000u)) :\
209 ((PWR->SR2 & ((__FLAG__) & ~0x00030000u)) == ((__FLAG__) & ~0x00030000u)))
210
211/** @brief Clear a specific PWR flag.
212 * @param __FLAG__ specifies the flag to clear.
213 * This parameter can be a combination of following values:
214 * @arg PWR_FLAG_WUF1: Wake Up Flag 1. Indicates that a wakeup event
215 * was received from the WKUP pin 1.
216 * @arg PWR_FLAG_WUF2: Wake Up Flag 2. Indicates that a wakeup event
217 * was received from the WKUP pin 2.
218 * @arg PWR_FLAG_WUF3: Wake Up Flag 3. Indicates that a wakeup event
219 * was received from the WKUP pin 3. (*)
220 * @arg PWR_FLAG_WUF4: Wake Up Flag 4. Indicates that a wakeup event
221 * was received from the WKUP pin 4.
222 * @arg PWR_FLAG_WUF5: Wake Up Flag 5. Indicates that a wakeup event
223 * was received from the WKUP pin 5. (*)
224 * @arg PWR_FLAG_WUF6: Wake Up Flag 6. Indicates that a wakeup event
225 * was received from the WKUP pin 6.
226 * @arg PWR_FLAG_WUF: Encompasses all Wake Up Flags.
227 * @arg PWR_FLAG_SB: Standby Flag. Indicates that the system
228 * entered Standby mode.
229 * @retval None
230 */
231#define __HAL_PWR_CLEAR_FLAG(__FLAG__) (PWR->SCR = (__FLAG__))
232
233/**
234 * @}
235 */
236
237/* Private constants-------------------------------------------------------*/
238/** @defgroup PWR_WUP_Polarity Shift to apply to retrieve polarity information from PWR_WAKEUP_PINy_xxx constants
239 * @{
240 */
241#define PWR_WUP_POLARITY_SHIFT 0x08u /*!< Internal constant used to retrieve wakeup pin polariry */
242/**
243 * @}
244 */
245
246/* Private macros --------------------------------------------------------*/
247/** @defgroup PWR_Private_Macros PWR Private Macros
248 * @{
249 */
250
251#define IS_PWR_WAKEUP_PIN(PIN) ((((PIN) & ((PWR_CR4_WP << 8U) | (PWR_CR3_EWUP))) != 0x00000000u) && \
252 (((PIN) & ~((PWR_CR4_WP << 8U) | (PWR_CR3_EWUP))) == 0x00000000u))
253
254#define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_MAINREGULATOR_ON) || \
255 ((REGULATOR) == PWR_LOWPOWERREGULATOR_ON))
256
257#define IS_PWR_SLEEP_ENTRY(ENTRY) (((ENTRY) == PWR_SLEEPENTRY_WFI) || \
258 ((ENTRY) == PWR_SLEEPENTRY_WFE))
259
260#define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPENTRY_WFI) || \
261 ((ENTRY) == PWR_STOPENTRY_WFE))
262/**
263 * @}
264 */
265
266/* Include PWR HAL Extended module */
267#include "stm32g0xx_hal_pwr_ex.h"
268
269/* Exported functions --------------------------------------------------------*/
270/** @defgroup PWR_Exported_Functions PWR Exported Functions
271 * @{
272 */
273
274/** @defgroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions
275 * @{
276 */
277
278/* Initialization and de-initialization functions *******************************/
279void HAL_PWR_DeInit(void);
280/**
281 * @}
282 */
283
284/** @defgroup PWR_Exported_Functions_Group2 Peripheral Control functions
285 * @{
286 */
287/* Peripheral Control functions ************************************************/
288void HAL_PWR_EnableBkUpAccess(void);
289void HAL_PWR_DisableBkUpAccess(void);
290
291/* WakeUp pins configuration functions ****************************************/
292void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinPolarity);
293void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx);
294
295/* Low Power modes configuration functions ************************************/
296void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry);
297void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry);
298void HAL_PWR_EnterSTANDBYMode(void);
299void HAL_PWR_EnableSleepOnExit(void);
300void HAL_PWR_DisableSleepOnExit(void);
301void HAL_PWR_EnableSEVOnPend(void);
302void HAL_PWR_DisableSEVOnPend(void);
303
304/**
305 * @}
306 */
307
308/**
309 * @}
310 */
311
312/**
313 * @}
314 */
315
316/**
317 * @}
318 */
319
320#ifdef __cplusplus
321}
322#endif
323
324
325#endif /* STM32G0xx_HAL_PWR_H */
Note: See TracBrowser for help on using the repository browser.