1 /**
2 ******************************************************************************
3 * @file stm32l1xx_ll_pwr.h
4 * @author MCD Application Team
5 * @brief Header file of PWR LL module.
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2017 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 __STM32L1xx_LL_PWR_H
21 #define __STM32L1xx_LL_PWR_H
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32l1xx.h"
29
30 /** @addtogroup STM32L1xx_LL_Driver
31 * @{
32 */
33
34 #if defined(PWR)
35
36 /** @defgroup PWR_LL PWR
37 * @{
38 */
39
40 /* Private types -------------------------------------------------------------*/
41 /* Private variables ---------------------------------------------------------*/
42 /* Private constants ---------------------------------------------------------*/
43 /* Private macros ------------------------------------------------------------*/
44 /* Exported types ------------------------------------------------------------*/
45 /* Exported constants --------------------------------------------------------*/
46 /** @defgroup PWR_LL_Exported_Constants PWR Exported Constants
47 * @{
48 */
49
50 /** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines
51 * @brief Flags defines which can be used with LL_PWR_WriteReg function
52 * @{
53 */
54 #define LL_PWR_CR_CSBF PWR_CR_CSBF /*!< Clear standby flag */
55 #define LL_PWR_CR_CWUF PWR_CR_CWUF /*!< Clear wakeup flag */
56 /**
57 * @}
58 */
59
60 /** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines
61 * @brief Flags defines which can be used with LL_PWR_ReadReg function
62 * @{
63 */
64 #define LL_PWR_CSR_WUF PWR_CSR_WUF /*!< Wakeup flag */
65 #define LL_PWR_CSR_SBF PWR_CSR_SBF /*!< Standby flag */
66 #if defined(PWR_PVD_SUPPORT)
67 #define LL_PWR_CSR_PVDO PWR_CSR_PVDO /*!< Power voltage detector output flag */
68 #endif /* PWR_PVD_SUPPORT */
69 #if defined(PWR_CSR_VREFINTRDYF)
70 #define LL_PWR_CSR_VREFINTRDYF PWR_CSR_VREFINTRDYF /*!< VREFINT ready flag */
71 #endif /* PWR_CSR_VREFINTRDYF */
72 #define LL_PWR_CSR_VOS PWR_CSR_VOSF /*!< Voltage scaling select flag */
73 #define LL_PWR_CSR_REGLPF PWR_CSR_REGLPF /*!< Regulator low power flag */
74 #define LL_PWR_CSR_EWUP1 PWR_CSR_EWUP1 /*!< Enable WKUP pin 1 */
75 #define LL_PWR_CSR_EWUP2 PWR_CSR_EWUP2 /*!< Enable WKUP pin 2 */
76 #if defined(PWR_CSR_EWUP3)
77 #define LL_PWR_CSR_EWUP3 PWR_CSR_EWUP3 /*!< Enable WKUP pin 3 */
78 #endif /* PWR_CSR_EWUP3 */
79 /**
80 * @}
81 */
82
83 /** @defgroup PWR_LL_EC_REGU_VOLTAGE Regulator Voltage
84 * @{
85 */
86 #define LL_PWR_REGU_VOLTAGE_SCALE1 (PWR_CR_VOS_0) /*!< 1.8V (range 1) */
87 #define LL_PWR_REGU_VOLTAGE_SCALE2 (PWR_CR_VOS_1) /*!< 1.5V (range 2) */
88 #define LL_PWR_REGU_VOLTAGE_SCALE3 (PWR_CR_VOS_0 | PWR_CR_VOS_1) /*!< 1.2V (range 3) */
89 /**
90 * @}
91 */
92
93 /** @defgroup PWR_LL_EC_MODE_PWR Mode Power
94 * @{
95 */
96 #define LL_PWR_MODE_STOP 0x00000000U /*!< Enter Stop mode when the CPU enters deepsleep */
97 #define LL_PWR_MODE_STANDBY (PWR_CR_PDDS) /*!< Enter Standby mode when the CPU enters deepsleep */
98 /**
99 * @}
100 */
101
102 /** @defgroup PWR_LL_EC_REGU_MODE_LP_MODES Regulator Mode In Low Power Modes
103 * @{
104 */
105 #define LL_PWR_REGU_LPMODES_MAIN 0x00000000U /*!< Voltage Regulator in main mode during deepsleep/sleep/low-power run mode */
106 #define LL_PWR_REGU_LPMODES_LOW_POWER (PWR_CR_LPSDSR) /*!< Voltage Regulator in low-power mode during deepsleep/sleep/low-power run mode */
107 /**
108 * @}
109 */
110 #if defined(PWR_CR_LPDS)
111 /** @defgroup PWR_LL_EC_REGU_MODE_DS_MODE Regulator Mode In Deep Sleep Mode
112 * @{
113 */
114 #define LL_PWR_REGU_DSMODE_MAIN 0x00000000U /*!< Voltage Regulator in main mode during deepsleep mode */
115 #define LL_PWR_REGU_DSMODE_LOW_POWER (PWR_CR_LPDS) /*!< Voltage Regulator in low-power mode during deepsleep mode */
116 /**
117 * @}
118 */
119 #endif /* PWR_CR_LPDS */
120
121 #if defined(PWR_PVD_SUPPORT)
122 /** @defgroup PWR_LL_EC_PVDLEVEL Power Voltage Detector Level
123 * @{
124 */
125 #define LL_PWR_PVDLEVEL_0 (PWR_CR_PLS_LEV0) /*!< Voltage threshold detected by PVD 1.9 V */
126 #define LL_PWR_PVDLEVEL_1 (PWR_CR_PLS_LEV1) /*!< Voltage threshold detected by PVD 2.1 V */
127 #define LL_PWR_PVDLEVEL_2 (PWR_CR_PLS_LEV2) /*!< Voltage threshold detected by PVD 2.3 V */
128 #define LL_PWR_PVDLEVEL_3 (PWR_CR_PLS_LEV3) /*!< Voltage threshold detected by PVD 2.5 V */
129 #define LL_PWR_PVDLEVEL_4 (PWR_CR_PLS_LEV4) /*!< Voltage threshold detected by PVD 2.7 V */
130 #define LL_PWR_PVDLEVEL_5 (PWR_CR_PLS_LEV5) /*!< Voltage threshold detected by PVD 2.9 V */
131 #define LL_PWR_PVDLEVEL_6 (PWR_CR_PLS_LEV6) /*!< Voltage threshold detected by PVD 3.1 V */
132 #define LL_PWR_PVDLEVEL_7 (PWR_CR_PLS_LEV7) /*!< External input analog voltage (Compare internally to VREFINT) */
133 /**
134 * @}
135 */
136 #endif /* PWR_PVD_SUPPORT */
137 /** @defgroup PWR_LL_EC_WAKEUP_PIN Wakeup Pins
138 * @{
139 */
140 #define LL_PWR_WAKEUP_PIN1 (PWR_CSR_EWUP1) /*!< WKUP pin 1 : PA0 */
141 #define LL_PWR_WAKEUP_PIN2 (PWR_CSR_EWUP2) /*!< WKUP pin 2 : PC13 */
142 #if defined(PWR_CSR_EWUP3)
143 #define LL_PWR_WAKEUP_PIN3 (PWR_CSR_EWUP3) /*!< WKUP pin 3 : PE6 or PA2 according to device */
144 #endif /* PWR_CSR_EWUP3 */
145 /**
146 * @}
147 */
148
149 /**
150 * @}
151 */
152
153
154 /* Exported macro ------------------------------------------------------------*/
155 /** @defgroup PWR_LL_Exported_Macros PWR Exported Macros
156 * @{
157 */
158
159 /** @defgroup PWR_LL_EM_WRITE_READ Common write and read registers Macros
160 * @{
161 */
162
163 /**
164 * @brief Write a value in PWR register
165 * @param __REG__ Register to be written
166 * @param __VALUE__ Value to be written in the register
167 * @retval None
168 */
169 #define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__))
170
171 /**
172 * @brief Read a value in PWR register
173 * @param __REG__ Register to be read
174 * @retval Register value
175 */
176 #define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__)
177 /**
178 * @}
179 */
180
181 /**
182 * @}
183 */
184
185 /* Exported functions --------------------------------------------------------*/
186 /** @defgroup PWR_LL_Exported_Functions PWR Exported Functions
187 * @{
188 */
189
190 /** @defgroup PWR_LL_EF_Configuration Configuration
191 * @{
192 */
193 /**
194 * @brief Switch the Regulator from main mode to low-power mode
195 * @rmtoll CR LPRUN LL_PWR_EnableLowPowerRunMode
196 * @note Remind to set the Regulator to low power before enabling
197 * LowPower run mode (bit @ref LL_PWR_REGU_LPMODES_LOW_POWER).
198 * @retval None
199 */
LL_PWR_EnableLowPowerRunMode(void)200 __STATIC_INLINE void LL_PWR_EnableLowPowerRunMode(void)
201 {
202 SET_BIT(PWR->CR, PWR_CR_LPRUN);
203 }
204
205 /**
206 * @brief Switch the Regulator from low-power mode to main mode
207 * @rmtoll CR LPRUN LL_PWR_DisableLowPowerRunMode
208 * @retval None
209 */
LL_PWR_DisableLowPowerRunMode(void)210 __STATIC_INLINE void LL_PWR_DisableLowPowerRunMode(void)
211 {
212 CLEAR_BIT(PWR->CR, PWR_CR_LPRUN);
213 }
214
215 /**
216 * @brief Check if the Regulator is in low-power mode
217 * @rmtoll CR LPRUN LL_PWR_IsEnabledLowPowerRunMode
218 * @retval State of bit (1 or 0).
219 */
LL_PWR_IsEnabledLowPowerRunMode(void)220 __STATIC_INLINE uint32_t LL_PWR_IsEnabledLowPowerRunMode(void)
221 {
222 return ((READ_BIT(PWR->CR, PWR_CR_LPRUN) == PWR_CR_LPRUN) ? 1UL : 0UL);
223 }
224
225 /**
226 * @brief Set voltage Regulator to low-power and switch from
227 * run main mode to run low-power mode.
228 * @rmtoll CR LPSDSR LL_PWR_EnterLowPowerRunMode\n
229 * CR LPRUN LL_PWR_EnterLowPowerRunMode
230 * @note This "high level" function is introduced to provide functional
231 * compatibility with other families. Notice that the two registers
232 * have to be written sequentially, so this function is not atomic.
233 * To assure atomicity you can call separately the following functions:
234 * - @ref LL_PWR_SetRegulModeLP(@ref LL_PWR_REGU_LPMODES_LOW_POWER);
235 * - @ref LL_PWR_EnableLowPowerRunMode();
236 * @retval None
237 */
LL_PWR_EnterLowPowerRunMode(void)238 __STATIC_INLINE void LL_PWR_EnterLowPowerRunMode(void)
239 {
240 SET_BIT(PWR->CR, PWR_CR_LPSDSR); /* => LL_PWR_SetRegulModeLP(LL_PWR_REGU_LPMODES_LOW_POWER) */
241 SET_BIT(PWR->CR, PWR_CR_LPRUN); /* => LL_PWR_EnableLowPowerRunMode() */
242 }
243
244 /**
245 * @brief Set voltage Regulator to main and switch from
246 * run main mode to low-power mode.
247 * @rmtoll CR LPSDSR LL_PWR_ExitLowPowerRunMode\n
248 * CR LPRUN LL_PWR_ExitLowPowerRunMode
249 * @note This "high level" function is introduced to provide functional
250 * compatibility with other families. Notice that the two registers
251 * have to be written sequentially, so this function is not atomic.
252 * To assure atomicity you can call separately the following functions:
253 * - @ref LL_PWR_DisableLowPowerRunMode();
254 * - @ref LL_PWR_SetRegulModeLP(@ref LL_PWR_REGU_LPMODES_MAIN);
255 * @retval None
256 */
LL_PWR_ExitLowPowerRunMode(void)257 __STATIC_INLINE void LL_PWR_ExitLowPowerRunMode(void)
258 {
259 CLEAR_BIT(PWR->CR, PWR_CR_LPRUN); /* => LL_PWR_DisableLowPowerRunMode() */
260 CLEAR_BIT(PWR->CR, PWR_CR_LPSDSR); /* => LL_PWR_SetRegulModeLP(LL_PWR_REGU_LPMODES_MAIN) */
261 }
262 /**
263 * @brief Set the main internal Regulator output voltage
264 * @rmtoll CR VOS LL_PWR_SetRegulVoltageScaling
265 * @param VoltageScaling This parameter can be one of the following values:
266 * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1
267 * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2
268 * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE3
269 * @retval None
270 */
LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling)271 __STATIC_INLINE void LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling)
272 {
273 MODIFY_REG(PWR->CR, PWR_CR_VOS, VoltageScaling);
274 }
275
276 /**
277 * @brief Get the main internal Regulator output voltage
278 * @rmtoll CR VOS LL_PWR_GetRegulVoltageScaling
279 * @retval Returned value can be one of the following values:
280 * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1
281 * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2
282 * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE3
283 */
LL_PWR_GetRegulVoltageScaling(void)284 __STATIC_INLINE uint32_t LL_PWR_GetRegulVoltageScaling(void)
285 {
286 return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_VOS));
287 }
288
289 /**
290 * @brief Enable access to the backup domain
291 * @rmtoll CR DBP LL_PWR_EnableBkUpAccess
292 * @retval None
293 */
LL_PWR_EnableBkUpAccess(void)294 __STATIC_INLINE void LL_PWR_EnableBkUpAccess(void)
295 {
296 SET_BIT(PWR->CR, PWR_CR_DBP);
297 }
298
299 /**
300 * @brief Disable access to the backup domain
301 * @rmtoll CR DBP LL_PWR_DisableBkUpAccess
302 * @retval None
303 */
LL_PWR_DisableBkUpAccess(void)304 __STATIC_INLINE void LL_PWR_DisableBkUpAccess(void)
305 {
306 CLEAR_BIT(PWR->CR, PWR_CR_DBP);
307 }
308
309 /**
310 * @brief Check if the backup domain is enabled
311 * @rmtoll CR DBP LL_PWR_IsEnabledBkUpAccess
312 * @retval State of bit (1 or 0).
313 */
LL_PWR_IsEnabledBkUpAccess(void)314 __STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void)
315 {
316 return ((READ_BIT(PWR->CR, PWR_CR_DBP) == PWR_CR_DBP) ? 1UL : 0UL);
317 }
318
319 /**
320 * @brief Set voltage Regulator mode during low power modes
321 * @rmtoll CR LPSDSR LL_PWR_SetRegulModeLP
322 * @param RegulMode This parameter can be one of the following values:
323 * @arg @ref LL_PWR_REGU_LPMODES_MAIN
324 * @arg @ref LL_PWR_REGU_LPMODES_LOW_POWER
325 * @retval None
326 */
LL_PWR_SetRegulModeLP(uint32_t RegulMode)327 __STATIC_INLINE void LL_PWR_SetRegulModeLP(uint32_t RegulMode)
328 {
329 MODIFY_REG(PWR->CR, PWR_CR_LPSDSR, RegulMode);
330 }
331
332 /**
333 * @brief Get voltage Regulator mode during low power modes
334 * @rmtoll CR LPSDSR LL_PWR_GetRegulModeLP
335 * @retval Returned value can be one of the following values:
336 * @arg @ref LL_PWR_REGU_LPMODES_MAIN
337 * @arg @ref LL_PWR_REGU_LPMODES_LOW_POWER
338 */
LL_PWR_GetRegulModeLP(void)339 __STATIC_INLINE uint32_t LL_PWR_GetRegulModeLP(void)
340 {
341 return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_LPSDSR));
342 }
343
344 #if defined(PWR_CR_LPDS)
345 /**
346 * @brief Set voltage Regulator mode during deep sleep mode
347 * @rmtoll CR LPDS LL_PWR_SetRegulModeDS
348 * @param RegulMode This parameter can be one of the following values:
349 * @arg @ref LL_PWR_REGU_DSMODE_MAIN
350 * @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER
351 * @retval None
352 */
LL_PWR_SetRegulModeDS(uint32_t RegulMode)353 __STATIC_INLINE void LL_PWR_SetRegulModeDS(uint32_t RegulMode)
354 {
355 MODIFY_REG(PWR->CR, PWR_CR_LPDS, RegulMode);
356 }
357
358 /**
359 * @brief Get voltage Regulator mode during deep sleep mode
360 * @rmtoll CR LPDS LL_PWR_GetRegulModeDS
361 * @retval Returned value can be one of the following values:
362 * @arg @ref LL_PWR_REGU_DSMODE_MAIN
363 * @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER
364 */
LL_PWR_GetRegulModeDS(void)365 __STATIC_INLINE uint32_t LL_PWR_GetRegulModeDS(void)
366 {
367 return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_LPDS));
368 }
369 #endif /* PWR_CR_LPDS */
370
371 /**
372 * @brief Set Power Down mode when CPU enters deepsleep
373 * @rmtoll CR PDDS LL_PWR_SetPowerMode
374 * @param PDMode This parameter can be one of the following values:
375 * @arg @ref LL_PWR_MODE_STOP
376 * @arg @ref LL_PWR_MODE_STANDBY
377 * @note Set the Regulator to low power (bit @ref LL_PWR_REGU_LPMODES_LOW_POWER)
378 * before setting MODE_STOP. If the Regulator remains in "main mode",
379 * it consumes more power without providing any additional feature.
380 * In MODE_STANDBY the Regulator is automatically off.
381 * @retval None
382 */
LL_PWR_SetPowerMode(uint32_t PDMode)383 __STATIC_INLINE void LL_PWR_SetPowerMode(uint32_t PDMode)
384 {
385 MODIFY_REG(PWR->CR, PWR_CR_PDDS, PDMode);
386 }
387
388 /**
389 * @brief Get Power Down mode when CPU enters deepsleep
390 * @rmtoll CR PDDS LL_PWR_GetPowerMode
391 * @retval Returned value can be one of the following values:
392 * @arg @ref LL_PWR_MODE_STOP
393 * @arg @ref LL_PWR_MODE_STANDBY
394 */
LL_PWR_GetPowerMode(void)395 __STATIC_INLINE uint32_t LL_PWR_GetPowerMode(void)
396 {
397 return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_PDDS));
398 }
399
400 #if defined(PWR_PVD_SUPPORT)
401 /**
402 * @brief Configure the voltage threshold detected by the Power Voltage Detector
403 * @rmtoll CR PLS LL_PWR_SetPVDLevel
404 * @param PVDLevel This parameter can be one of the following values:
405 * @arg @ref LL_PWR_PVDLEVEL_0
406 * @arg @ref LL_PWR_PVDLEVEL_1
407 * @arg @ref LL_PWR_PVDLEVEL_2
408 * @arg @ref LL_PWR_PVDLEVEL_3
409 * @arg @ref LL_PWR_PVDLEVEL_4
410 * @arg @ref LL_PWR_PVDLEVEL_5
411 * @arg @ref LL_PWR_PVDLEVEL_6
412 * @arg @ref LL_PWR_PVDLEVEL_7
413 * @retval None
414 */
LL_PWR_SetPVDLevel(uint32_t PVDLevel)415 __STATIC_INLINE void LL_PWR_SetPVDLevel(uint32_t PVDLevel)
416 {
417 MODIFY_REG(PWR->CR, PWR_CR_PLS, PVDLevel);
418 }
419
420 /**
421 * @brief Get the voltage threshold detection
422 * @rmtoll CR PLS LL_PWR_GetPVDLevel
423 * @retval Returned value can be one of the following values:
424 * @arg @ref LL_PWR_PVDLEVEL_0
425 * @arg @ref LL_PWR_PVDLEVEL_1
426 * @arg @ref LL_PWR_PVDLEVEL_2
427 * @arg @ref LL_PWR_PVDLEVEL_3
428 * @arg @ref LL_PWR_PVDLEVEL_4
429 * @arg @ref LL_PWR_PVDLEVEL_5
430 * @arg @ref LL_PWR_PVDLEVEL_6
431 * @arg @ref LL_PWR_PVDLEVEL_7
432 */
LL_PWR_GetPVDLevel(void)433 __STATIC_INLINE uint32_t LL_PWR_GetPVDLevel(void)
434 {
435 return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_PLS));
436 }
437
438 /**
439 * @brief Enable Power Voltage Detector
440 * @rmtoll CR PVDE LL_PWR_EnablePVD
441 * @retval None
442 */
LL_PWR_EnablePVD(void)443 __STATIC_INLINE void LL_PWR_EnablePVD(void)
444 {
445 SET_BIT(PWR->CR, PWR_CR_PVDE);
446 }
447
448 /**
449 * @brief Disable Power Voltage Detector
450 * @rmtoll CR PVDE LL_PWR_DisablePVD
451 * @retval None
452 */
LL_PWR_DisablePVD(void)453 __STATIC_INLINE void LL_PWR_DisablePVD(void)
454 {
455 CLEAR_BIT(PWR->CR, PWR_CR_PVDE);
456 }
457
458 /**
459 * @brief Check if Power Voltage Detector is enabled
460 * @rmtoll CR PVDE LL_PWR_IsEnabledPVD
461 * @retval State of bit (1 or 0).
462 */
LL_PWR_IsEnabledPVD(void)463 __STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(void)
464 {
465 return ((READ_BIT(PWR->CR, PWR_CR_PVDE) == PWR_CR_PVDE) ? 1UL : 0UL);
466 }
467 #endif /* PWR_PVD_SUPPORT */
468
469 /**
470 * @brief Enable the WakeUp PINx functionality
471 * @rmtoll CSR EWUP1 LL_PWR_EnableWakeUpPin\n
472 * @rmtoll CSR EWUP2 LL_PWR_EnableWakeUpPin\n
473 * @rmtoll CSR EWUP3 LL_PWR_EnableWakeUpPin
474 * @param WakeUpPin This parameter can be one of the following values:
475 * @arg @ref LL_PWR_WAKEUP_PIN1
476 * @arg @ref LL_PWR_WAKEUP_PIN2
477 * @arg @ref LL_PWR_WAKEUP_PIN3 (*)
478 *
479 * (*) not available on all devices
480 * @retval None
481 */
LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin)482 __STATIC_INLINE void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin)
483 {
484 SET_BIT(PWR->CSR, WakeUpPin);
485 }
486
487 /**
488 * @brief Disable the WakeUp PINx functionality
489 * @rmtoll CSR EWUP1 LL_PWR_DisableWakeUpPin\n
490 * @rmtoll CSR EWUP2 LL_PWR_DisableWakeUpPin\n
491 * @rmtoll CSR EWUP3 LL_PWR_DisableWakeUpPin
492 * @param WakeUpPin This parameter can be one of the following values:
493 * @arg @ref LL_PWR_WAKEUP_PIN1
494 * @arg @ref LL_PWR_WAKEUP_PIN2
495 * @arg @ref LL_PWR_WAKEUP_PIN3 (*)
496 *
497 * (*) not available on all devices
498 * @retval None
499 */
LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin)500 __STATIC_INLINE void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin)
501 {
502 CLEAR_BIT(PWR->CSR, WakeUpPin);
503 }
504
505 /**
506 * @brief Check if the WakeUp PINx functionality is enabled
507 * @rmtoll CSR EWUP1 LL_PWR_IsEnabledWakeUpPin\n
508 * @rmtoll CSR EWUP2 LL_PWR_IsEnabledWakeUpPin\n
509 * @rmtoll CSR EWUP3 LL_PWR_IsEnabledWakeUpPin
510 * @param WakeUpPin This parameter can be one of the following values:
511 * @arg @ref LL_PWR_WAKEUP_PIN1
512 * @arg @ref LL_PWR_WAKEUP_PIN2
513 * @arg @ref LL_PWR_WAKEUP_PIN3 (*)
514 *
515 * (*) not available on all devices
516 * @retval State of bit (1 or 0).
517 */
LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin)518 __STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin)
519 {
520 return ((READ_BIT(PWR->CSR, WakeUpPin) == WakeUpPin) ? 1UL : 0UL);
521 }
522
523 /**
524 * @brief Enable ultra low-power mode by enabling VREFINT switch off in low-power modes
525 * @rmtoll CR ULP LL_PWR_EnableUltraLowPower
526 * @retval None
527 */
LL_PWR_EnableUltraLowPower(void)528 __STATIC_INLINE void LL_PWR_EnableUltraLowPower(void)
529 {
530 SET_BIT(PWR->CR, PWR_CR_ULP);
531 }
532
533 /**
534 * @brief Disable ultra low-power mode by disabling VREFINT switch off in low-power modes
535 * @rmtoll CR ULP LL_PWR_DisableUltraLowPower
536 * @retval None
537 */
LL_PWR_DisableUltraLowPower(void)538 __STATIC_INLINE void LL_PWR_DisableUltraLowPower(void)
539 {
540 CLEAR_BIT(PWR->CR, PWR_CR_ULP);
541 }
542
543 /**
544 * @brief Check if ultra low-power mode is enabled by checking if VREFINT switch off in low-power modes is enabled
545 * @rmtoll CR ULP LL_PWR_IsEnabledUltraLowPower
546 * @retval State of bit (1 or 0).
547 */
LL_PWR_IsEnabledUltraLowPower(void)548 __STATIC_INLINE uint32_t LL_PWR_IsEnabledUltraLowPower(void)
549 {
550 return ((READ_BIT(PWR->CR, PWR_CR_ULP) == PWR_CR_ULP) ? 1UL : 0UL);
551 }
552
553 /**
554 * @brief Enable fast wakeup by ignoring VREFINT startup time when exiting from low-power mode
555 * @rmtoll CR FWU LL_PWR_EnableFastWakeUp
556 * @note Works in conjunction with ultra low power mode.
557 * @retval None
558 */
LL_PWR_EnableFastWakeUp(void)559 __STATIC_INLINE void LL_PWR_EnableFastWakeUp(void)
560 {
561 SET_BIT(PWR->CR, PWR_CR_FWU);
562 }
563
564 /**
565 * @brief Disable fast wakeup by waiting VREFINT startup time when exiting from low-power mode
566 * @rmtoll CR FWU LL_PWR_DisableFastWakeUp
567 * @note Works in conjunction with ultra low power mode.
568 * @retval None
569 */
LL_PWR_DisableFastWakeUp(void)570 __STATIC_INLINE void LL_PWR_DisableFastWakeUp(void)
571 {
572 CLEAR_BIT(PWR->CR, PWR_CR_FWU);
573 }
574
575 /**
576 * @brief Check if fast wakeup is enabled by checking if VREFINT startup time when exiting from low-power mode is ignored
577 * @rmtoll CR FWU LL_PWR_IsEnabledFastWakeUp
578 * @retval State of bit (1 or 0).
579 */
LL_PWR_IsEnabledFastWakeUp(void)580 __STATIC_INLINE uint32_t LL_PWR_IsEnabledFastWakeUp(void)
581 {
582 return ((READ_BIT(PWR->CR, PWR_CR_FWU) == PWR_CR_FWU) ? 1UL : 0UL);
583 }
584
585
586 /**
587 * @}
588 */
589
590 /** @defgroup PWR_LL_EF_FLAG_Management FLAG_Management
591 * @{
592 */
593
594 /**
595 * @brief Get Wake-up Flag
596 * @rmtoll CSR WUF LL_PWR_IsActiveFlag_WU
597 * @retval State of bit (1 or 0).
598 */
LL_PWR_IsActiveFlag_WU(void)599 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU(void)
600 {
601 return ((READ_BIT(PWR->CSR, PWR_CSR_WUF) == PWR_CSR_WUF) ? 1UL : 0UL);
602 }
603
604 /**
605 * @brief Get Standby Flag
606 * @rmtoll CSR SBF LL_PWR_IsActiveFlag_SB
607 * @retval State of bit (1 or 0).
608 */
LL_PWR_IsActiveFlag_SB(void)609 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SB(void)
610 {
611 return ((READ_BIT(PWR->CSR, PWR_CSR_SBF) == PWR_CSR_SBF) ? 1UL : 0UL);
612 }
613
614 #if defined(PWR_PVD_SUPPORT)
615 /**
616 * @brief Indicate whether VDD voltage is below the selected PVD threshold
617 * @rmtoll CSR PVDO LL_PWR_IsActiveFlag_PVDO
618 * @retval State of bit (1 or 0).
619 */
LL_PWR_IsActiveFlag_PVDO(void)620 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(void)
621 {
622 return ((READ_BIT(PWR->CSR, PWR_CSR_PVDO) == PWR_CSR_PVDO) ? 1UL : 0UL);
623 }
624 #endif /* PWR_PVD_SUPPORT */
625
626 #if defined(PWR_CSR_VREFINTRDYF)
627 /**
628 * @brief Get Internal Reference VrefInt Flag
629 * @rmtoll CSR VREFINTRDYF LL_PWR_IsActiveFlag_VREFINTRDY
630 * @retval State of bit (1 or 0).
631 */
LL_PWR_IsActiveFlag_VREFINTRDY(void)632 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VREFINTRDY(void)
633 {
634 return ((READ_BIT(PWR->CSR, PWR_CSR_VREFINTRDYF) == PWR_CSR_VREFINTRDYF) ? 1UL : 0UL);
635 }
636 #endif /* PWR_CSR_VREFINTRDYF */
637 /**
638 * @brief Indicate whether the Regulator is ready in the selected voltage range or if its output voltage is still changing to the required voltage level
639 * @rmtoll CSR VOSF LL_PWR_IsActiveFlag_VOS
640 * @retval State of bit (1 or 0).
641 */
LL_PWR_IsActiveFlag_VOS(void)642 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VOS(void)
643 {
644 return ((READ_BIT(PWR->CSR, PWR_CSR_VOSF) == PWR_CSR_VOSF) ? 1UL : 0UL);
645 }
646 /**
647 * @brief Indicate whether the Regulator is ready in main mode or is in low-power mode
648 * @rmtoll CSR REGLPF LL_PWR_IsActiveFlag_REGLPF
649 * @note Take care, return value "0" means the Regulator is ready. Return value "1" means the output voltage range is still changing.
650 * @retval State of bit (1 or 0).
651 */
LL_PWR_IsActiveFlag_REGLPF(void)652 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_REGLPF(void)
653 {
654 return ((READ_BIT(PWR->CSR, PWR_CSR_REGLPF) == PWR_CSR_REGLPF) ? 1UL : 0UL);
655 }
656 /**
657 * @brief Clear Standby Flag
658 * @rmtoll CR CSBF LL_PWR_ClearFlag_SB
659 * @retval None
660 */
LL_PWR_ClearFlag_SB(void)661 __STATIC_INLINE void LL_PWR_ClearFlag_SB(void)
662 {
663 SET_BIT(PWR->CR, PWR_CR_CSBF);
664 }
665
666 /**
667 * @brief Clear Wake-up Flags
668 * @rmtoll CR CWUF LL_PWR_ClearFlag_WU
669 * @retval None
670 */
LL_PWR_ClearFlag_WU(void)671 __STATIC_INLINE void LL_PWR_ClearFlag_WU(void)
672 {
673 SET_BIT(PWR->CR, PWR_CR_CWUF);
674 }
675
676 /**
677 * @}
678 */
679
680 #if defined(USE_FULL_LL_DRIVER)
681 /** @defgroup PWR_LL_EF_Init De-initialization function
682 * @{
683 */
684 ErrorStatus LL_PWR_DeInit(void);
685 /**
686 * @}
687 */
688 #endif /* USE_FULL_LL_DRIVER */
689
690 /** @defgroup PWR_LL_EF_Legacy_Functions PWR legacy functions name
691 * @{
692 */
693 /* Old functions name kept for legacy purpose, to be replaced by the */
694 /* current functions name. */
695 #define LL_PWR_IsActiveFlag_VOSF LL_PWR_IsActiveFlag_VOS
696 /**
697 * @}
698 */
699
700 /**
701 * @}
702 */
703
704 /**
705 * @}
706 */
707
708 #endif /* defined(PWR) */
709
710 /**
711 * @}
712 */
713
714 #ifdef __cplusplus
715 }
716 #endif
717
718 #endif /* __STM32L1xx_LL_PWR_H */
719