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

Last change on this file was 6, checked in by f.jahn, 3 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.