1 /**
2 ******************************************************************************
3 * @file stm32l5xx_ll_pwr.h
4 * @author MCD Application Team
5 * @brief Header file of PWR LL module.
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2019 STMicroelectronics.
10 * All rights reserved.
11 *
12 * This software is licensed under terms that can be found in the LICENSE file in
13 * 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 /* Define to prevent recursive inclusion -------------------------------------*/
19 #ifndef STM32L5xx_LL_PWR_H
20 #define STM32L5xx_LL_PWR_H
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 /* Includes ------------------------------------------------------------------*/
27 #include "stm32l5xx.h"
28
29 /** @addtogroup STM32L5xx_LL_Driver
30 * @{
31 */
32
33 #if defined(PWR)
34
35 /** @defgroup PWR_LL PWR
36 * @{
37 */
38
39 /* Private types -------------------------------------------------------------*/
40 /* Private variables ---------------------------------------------------------*/
41
42 /* Private constants ---------------------------------------------------------*/
43
44 /* Private macros ------------------------------------------------------------*/
45
46 /* Exported types ------------------------------------------------------------*/
47 /* Exported constants --------------------------------------------------------*/
48 /** @defgroup PWR_LL_Exported_Constants PWR Exported Constants
49 * @{
50 */
51
52 /** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines
53 * @brief Flags defines which can be used with LL_PWR_WriteReg function
54 * @{
55 */
56 #define LL_PWR_SCR_CSBF PWR_SCR_CSBF
57 #define LL_PWR_SCR_CWUF PWR_SCR_CWUF
58 #define LL_PWR_SCR_CWUF5 PWR_SCR_CWUF5
59 #define LL_PWR_SCR_CWUF4 PWR_SCR_CWUF4
60 #define LL_PWR_SCR_CWUF3 PWR_SCR_CWUF3
61 #define LL_PWR_SCR_CWUF2 PWR_SCR_CWUF2
62 #define LL_PWR_SCR_CWUF1 PWR_SCR_CWUF1
63 /**
64 * @}
65 */
66
67 /** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines
68 * @brief Flags defines which can be used with LL_PWR_ReadReg function
69 * @{
70 */
71 #define LL_PWR_SR1_SMSHPRDY PWR_SR1_SMSHPRDY
72 #define LL_PWR_SR1_EXTSMSRDY PWR_SR1_EXTSMSRDY
73 #define LL_PWR_SR1_SMSBYPRDY PWR_SR1_SMSBYPRDYY
74 #define LL_PWR_SR1_SBF PWR_SR1_SBF
75 #define LL_PWR_SR1_WUF5 PWR_SR1_WUF5
76 #define LL_PWR_SR1_WUF4 PWR_SR1_WUF4
77 #define LL_PWR_SR1_WUF3 PWR_SR1_WUF3
78 #define LL_PWR_SR1_WUF2 PWR_SR1_WUF2
79 #define LL_PWR_SR1_WUF1 PWR_SR1_WUF1
80 #define LL_PWR_SR2_PVMO4 PWR_SR2_PVMO4
81 #define LL_PWR_SR2_PVMO3 PWR_SR2_PVMO3
82 #define LL_PWR_SR2_PVMO2 PWR_SR2_PVMO2
83 #define LL_PWR_SR2_PVMO1 PWR_SR2_PVMO1
84 #define LL_PWR_SR2_PVDO PWR_SR2_PVDO
85 #define LL_PWR_SR2_VOSF PWR_SR2_VOSF
86 #define LL_PWR_SR2_REGLPF PWR_SR2_REGLPF
87 #define LL_PWR_SR2_REGLPS PWR_SR2_REGLPS
88 /**
89 * @}
90 */
91
92 /** @defgroup PWR_LL_EC_REGU_VOLTAGE REGU VOLTAGE
93 * @{
94 */
95 #define LL_PWR_REGU_VOLTAGE_SCALE0 0U
96 #define LL_PWR_REGU_VOLTAGE_SCALE1 (PWR_CR1_VOS_0)
97 #define LL_PWR_REGU_VOLTAGE_SCALE2 (PWR_CR1_VOS_1)
98 /**
99 * @}
100 */
101
102 /** @defgroup PWR_LL_EC_MODE_PWR MODE PWR
103 * @{
104 */
105 #define LL_PWR_MODE_STOP0 (PWR_CR1_LPMS_STOP0)
106 #define LL_PWR_MODE_STOP1 (PWR_CR1_LPMS_STOP1)
107 #define LL_PWR_MODE_STOP2 (PWR_CR1_LPMS_STOP2)
108 #define LL_PWR_MODE_STANDBY (PWR_CR1_LPMS_STANDBY)
109 #define LL_PWR_MODE_SHUTDOWN (PWR_CR1_LPMS_SHUTDOWN)
110 /**
111 * @}
112 */
113
114 /** @defgroup PWR_LL_EC_PVM_VDDUSB_1 Peripheral voltage monitoring
115 * @{
116 */
117 #define LL_PWR_PVM_VDDUSB_1_2V (PWR_CR2_PVME1) /* Monitoring VDDUSB vs. 1.2 V */
118 #define LL_PWR_PVM_VDDIO2_0_9V (PWR_CR2_PVME2) /* Monitoring VDDIO2 vs. 0.9 V */
119 #define LL_PWR_PVM_VDDA_1_62V (PWR_CR2_PVME3) /* Monitoring VDDA vs. 1.62 V */
120 #define LL_PWR_PVM_VDDA_1_8V (PWR_CR2_PVME4) /* Monitoring VDDA vs. 1.8 V */
121 /**
122 * @}
123 */
124
125 /** @defgroup PWR_LL_EC_PVDLEVEL PVDLEVEL
126 * @{
127 */
128 #define LL_PWR_PVDLEVEL_0 (PWR_CR2_PLS_LEV0) /* VPVD0 around 2.0 V */
129 #define LL_PWR_PVDLEVEL_1 (PWR_CR2_PLS_LEV1) /* VPVD1 around 2.2 V */
130 #define LL_PWR_PVDLEVEL_2 (PWR_CR2_PLS_LEV2) /* VPVD2 around 2.4 V */
131 #define LL_PWR_PVDLEVEL_3 (PWR_CR2_PLS_LEV3) /* VPVD3 around 2.5 V */
132 #define LL_PWR_PVDLEVEL_4 (PWR_CR2_PLS_LEV4) /* VPVD4 around 2.6 V */
133 #define LL_PWR_PVDLEVEL_5 (PWR_CR2_PLS_LEV5) /* VPVD5 around 2.8 V */
134 #define LL_PWR_PVDLEVEL_6 (PWR_CR2_PLS_LEV6) /* VPVD6 around 2.9 V */
135 #define LL_PWR_PVDLEVEL_7 (PWR_CR2_PLS_LEV7) /* External input analog voltage (Compare internally to VREFINT) */
136 /**
137 * @}
138 */
139
140 /** @defgroup PWR_LL_EC_WAKEUP WAKEUP
141 * @{
142 */
143 #define LL_PWR_WAKEUP_PIN1 (PWR_CR3_EWUP1)
144 #define LL_PWR_WAKEUP_PIN2 (PWR_CR3_EWUP2)
145 #define LL_PWR_WAKEUP_PIN3 (PWR_CR3_EWUP3)
146 #define LL_PWR_WAKEUP_PIN4 (PWR_CR3_EWUP4)
147 #define LL_PWR_WAKEUP_PIN5 (PWR_CR3_EWUP5)
148 /**
149 * @}
150 */
151
152 /** @defgroup PWR_LL_EC_BATT_CHARG_RESISTOR BATT CHARG RESISTOR
153 * @{
154 */
155 #define LL_PWR_BATT_CHARG_RESISTOR_5K (0x00000000U)
156 #define LL_PWR_BATT_CHARGRESISTOR_1_5K (PWR_CR4_VBRS)
157 /**
158 * @}
159 */
160
161 /** @defgroup PWR_LL_EC_GPIO GPIO
162 * @{
163 */
164 #define LL_PWR_GPIO_A ((uint32_t)(&(PWR->PUCRA)))
165 #define LL_PWR_GPIO_B ((uint32_t)(&(PWR->PUCRB)))
166 #define LL_PWR_GPIO_C ((uint32_t)(&(PWR->PUCRC)))
167 #define LL_PWR_GPIO_D ((uint32_t)(&(PWR->PUCRD)))
168 #define LL_PWR_GPIO_E ((uint32_t)(&(PWR->PUCRE)))
169 #define LL_PWR_GPIO_F ((uint32_t)(&(PWR->PUCRF)))
170 #define LL_PWR_GPIO_G ((uint32_t)(&(PWR->PUCRG)))
171 #define LL_PWR_GPIO_H ((uint32_t)(&(PWR->PUCRH)))
172 /**
173 * @}
174 */
175
176 /** @defgroup PWR_LL_EC_GPIO_BIT GPIO BIT
177 * @{
178 */
179 #define LL_PWR_GPIO_BIT_0 (0x00000001U)
180 #define LL_PWR_GPIO_BIT_1 (0x00000002U)
181 #define LL_PWR_GPIO_BIT_2 (0x00000004U)
182 #define LL_PWR_GPIO_BIT_3 (0x00000008U)
183 #define LL_PWR_GPIO_BIT_4 (0x00000010U)
184 #define LL_PWR_GPIO_BIT_5 (0x00000020U)
185 #define LL_PWR_GPIO_BIT_6 (0x00000040U)
186 #define LL_PWR_GPIO_BIT_7 (0x00000080U)
187 #define LL_PWR_GPIO_BIT_8 (0x00000100U)
188 #define LL_PWR_GPIO_BIT_9 (0x00000200U)
189 #define LL_PWR_GPIO_BIT_10 (0x00000400U)
190 #define LL_PWR_GPIO_BIT_11 (0x00000800U)
191 #define LL_PWR_GPIO_BIT_12 (0x00001000U)
192 #define LL_PWR_GPIO_BIT_13 (0x00002000U)
193 #define LL_PWR_GPIO_BIT_14 (0x00004000U)
194 #define LL_PWR_GPIO_BIT_15 (0x00008000U)
195 /**
196 * @}
197 */
198
199 /** @defgroup PWR_LL_EC_SRAM2_STANDBY_RETENTION SRAM2 STANDBY RETENTION
200 * @{
201 */
202 #define LL_PWR_SRAM2_NO_RETENTION 0x00000000U
203 #define LL_PWR_SRAM2_FULL_RETENTION (PWR_CR3_RRS_0)
204 #define LL_PWR_SRAM2_4KB_RETENTION (PWR_CR3_RRS_1)
205 /**
206 * @}
207 */
208
209 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
210 /** @defgroup PWR_LL_EC_SECURE_ATTRIBUTES SECURE ATTRIBUTES
211 * @{
212 */
213 #define LL_PWR_WAKEUP_PINS_SEC PWR_SECCFGR_WUPSEC
214 #define LL_PWR_WAKEUP_PINS_NSEC 0x00000000U
215 #define LL_PWR_WAKEUP_PIN1_SEC PWR_SECCFGR_WUP1SEC
216 #define LL_PWR_WAKEUP_PIN1_NSEC 0x00000000U
217 #define LL_PWR_WAKEUP_PIN2_SEC PWR_SECCFGR_WUP2SEC
218 #define LL_PWR_WAKEUP_PIN2_NSEC 0x00000000U
219 #define LL_PWR_WAKEUP_PIN3_SEC PWR_SECCFGR_WUP3SEC
220 #define LL_PWR_WAKEUP_PIN3_NSEC 0x00000000U
221 #define LL_PWR_WAKEUP_PIN4_SEC PWR_SECCFGR_WUP4SEC
222 #define LL_PWR_WAKEUP_PIN4_NSEC 0x00000000U
223 #define LL_PWR_WAKEUP_PIN5_SEC PWR_SECCFGR_WUP5SEC
224 #define LL_PWR_WAKEUP_PIN5_NSEC 0x00000000U
225 #define LL_PWR_LPM_SEC PWR_SECCFGR_LPMSEC
226 #define LL_PWR_LPM_NSEC 0x00000000U
227 #define LL_PWR_VDM_SEC PWR_SECCFGR_VDMSEC
228 #define LL_PWR_VDM_NSEC 0x00000000U
229 #define LL_PWR_VB_SEC PWR_SECCFGR_VBSEC
230 #define LL_PWR_VB_NSEC 0x00000000U
231 #define LL_PWR_APC_SEC PWR_SECCFGR_APCSEC
232 #define LL_PWR_APC_NSEC 0x00000000U
233 /**
234 * @}
235 */
236 #endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
237
238 /**
239 * @}
240 */
241
242 /* Exported macro ------------------------------------------------------------*/
243 /** @defgroup PWR_LL_Exported_Macros PWR Exported Macros
244 * @{
245 */
246
247 /** @defgroup PWR_LL_EM_WRITE_READ Common Write and read registers Macros
248 * @{
249 */
250
251 /**
252 * @brief Write a value in PWR register
253 * @param __REG__ Register to be written
254 * @param __VALUE__ Value to be written in the register
255 * @retval None
256 */
257 #define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__))
258
259 /**
260 * @brief Read a value in PWR register
261 * @param __REG__ Register to be read
262 * @retval Register value
263 */
264 #define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__)
265 /**
266 * @}
267 */
268
269 /**
270 * @}
271 */
272
273
274 /* Exported functions --------------------------------------------------------*/
275 /** @defgroup PWR_LL_Exported_Functions PWR Exported Functions
276 * @{
277 */
278
279 /** @defgroup PWR_LL_EF_Configuration Configuration
280 * @{
281 */
282
283 /**
284 * @brief Switch the regulator from main mode to low-power mode
285 * @rmtoll CR1 LPR LL_PWR_EnableLowPowerRunMode
286 * @retval None
287 */
LL_PWR_EnableLowPowerRunMode(void)288 __STATIC_INLINE void LL_PWR_EnableLowPowerRunMode(void)
289 {
290 SET_BIT(PWR->CR1, PWR_CR1_LPR);
291 }
292
293 /**
294 * @brief Switch the regulator from low-power mode to main mode
295 * @rmtoll CR1 LPR LL_PWR_DisableLowPowerRunMode
296 * @retval None
297 */
LL_PWR_DisableLowPowerRunMode(void)298 __STATIC_INLINE void LL_PWR_DisableLowPowerRunMode(void)
299 {
300 CLEAR_BIT(PWR->CR1, PWR_CR1_LPR);
301 }
302
303 /**
304 * @brief Check if the regulator is in low-power mode
305 * @rmtoll CR1 LPR LL_PWR_IsEnabledLowPowerRunMode
306 * @retval State of bit (1 or 0).
307 */
LL_PWR_IsEnabledLowPowerRunMode(void)308 __STATIC_INLINE uint32_t LL_PWR_IsEnabledLowPowerRunMode(void)
309 {
310 return ((READ_BIT(PWR->CR1, PWR_CR1_LPR) == (PWR_CR1_LPR)) ? 1UL : 0UL);
311 }
312
313 /**
314 * @brief Switch from run main mode to run low-power mode.
315 * @rmtoll CR1 LPR LL_PWR_EnterLowPowerRunMode
316 * @retval None
317 */
LL_PWR_EnterLowPowerRunMode(void)318 __STATIC_INLINE void LL_PWR_EnterLowPowerRunMode(void)
319 {
320 LL_PWR_EnableLowPowerRunMode();
321 }
322
323 /**
324 * @brief Switch from run main mode to low-power mode.
325 * @rmtoll CR1 LPR LL_PWR_ExitLowPowerRunMode
326 * @retval None
327 */
LL_PWR_ExitLowPowerRunMode(void)328 __STATIC_INLINE void LL_PWR_ExitLowPowerRunMode(void)
329 {
330 LL_PWR_DisableLowPowerRunMode();
331 }
332
333 /**
334 * @brief Set the main internal regulator output voltage
335 * @rmtoll CR1 VOS LL_PWR_SetRegulVoltageScaling
336 * @param VoltageScaling This parameter can be one of the following values:
337 * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE0
338 * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1
339 * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2
340 * @retval None
341 */
LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling)342 __STATIC_INLINE void LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling)
343 {
344 MODIFY_REG(PWR->CR1, PWR_CR1_VOS, VoltageScaling);
345 }
346
347 /**
348 * @brief Get the main internal regulator output voltage
349 * @rmtoll CR1 VOS LL_PWR_GetRegulVoltageScaling
350 * @retval Returned value can be one of the following values:
351 * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE0
352 * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1
353 * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2
354 */
LL_PWR_GetRegulVoltageScaling(void)355 __STATIC_INLINE uint32_t LL_PWR_GetRegulVoltageScaling(void)
356 {
357 return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_VOS));
358 }
359
360 /**
361 * @brief Enable access to the backup domain
362 * @rmtoll CR1 DBP LL_PWR_EnableBkUpAccess
363 * @retval None
364 */
LL_PWR_EnableBkUpAccess(void)365 __STATIC_INLINE void LL_PWR_EnableBkUpAccess(void)
366 {
367 SET_BIT(PWR->CR1, PWR_CR1_DBP);
368 }
369
370 /**
371 * @brief Disable access to the backup domain
372 * @rmtoll CR1 DBP LL_PWR_DisableBkUpAccess
373 * @retval None
374 */
LL_PWR_DisableBkUpAccess(void)375 __STATIC_INLINE void LL_PWR_DisableBkUpAccess(void)
376 {
377 CLEAR_BIT(PWR->CR1, PWR_CR1_DBP);
378 }
379
380 /**
381 * @brief Check if the backup domain is enabled
382 * @rmtoll CR1 DBP LL_PWR_IsEnabledBkUpAccess
383 * @retval State of bit (1 or 0).
384 */
LL_PWR_IsEnabledBkUpAccess(void)385 __STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void)
386 {
387 return ((READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP)) ? 1UL : 0UL);
388 }
389
390 /**
391 * @brief Set Low-Power mode
392 * @rmtoll CR1 LPMS LL_PWR_SetPowerMode
393 * @param LowPowerMode This parameter can be one of the following values:
394 * @arg @ref LL_PWR_MODE_STOP0
395 * @arg @ref LL_PWR_MODE_STOP1
396 * @arg @ref LL_PWR_MODE_STOP2
397 * @arg @ref LL_PWR_MODE_STANDBY
398 * @arg @ref LL_PWR_MODE_SHUTDOWN
399 * @retval None
400 */
LL_PWR_SetPowerMode(uint32_t LowPowerMode)401 __STATIC_INLINE void LL_PWR_SetPowerMode(uint32_t LowPowerMode)
402 {
403 MODIFY_REG(PWR->CR1, PWR_CR1_LPMS, LowPowerMode);
404 }
405
406 /**
407 * @brief Get Low-Power mode
408 * @rmtoll CR1 LPMS LL_PWR_GetPowerMode
409 * @retval Returned value can be one of the following values:
410 * @arg @ref LL_PWR_MODE_STOP0
411 * @arg @ref LL_PWR_MODE_STOP1
412 * @arg @ref LL_PWR_MODE_STOP2
413 * @arg @ref LL_PWR_MODE_STANDBY
414 * @arg @ref LL_PWR_MODE_SHUTDOWN
415 */
LL_PWR_GetPowerMode(void)416 __STATIC_INLINE uint32_t LL_PWR_GetPowerMode(void)
417 {
418 return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_LPMS));
419 }
420
421 /**
422 * @brief Enable the USB Type-C and Power Delivery memorization in Standby mode.
423 * @note This function must be called just before entering Standby mode.
424 * @rmtoll CR3 UCPD_STDBY LL_PWR_EnableUCPDStandbyMode
425 * @retval None
426 */
LL_PWR_EnableUCPDStandbyMode(void)427 __STATIC_INLINE void LL_PWR_EnableUCPDStandbyMode(void)
428 {
429 SET_BIT(PWR->CR3, PWR_CR3_UCPD_STDBY);
430 }
431
432 /**
433 * @brief Disable the USB Type-C and Power Delivery memorization in Standby mode.
434 * @note This function must be called after exiting Standby mode and before any
435 * UCPD configuration update.
436 * @rmtoll CR3 UCPD_STDBY LL_PWR_DisableUCPDStandbyMode
437 * @retval None
438 */
LL_PWR_DisableUCPDStandbyMode(void)439 __STATIC_INLINE void LL_PWR_DisableUCPDStandbyMode(void)
440 {
441 CLEAR_BIT(PWR->CR3, PWR_CR3_UCPD_STDBY);
442 }
443
444 /**
445 * @brief Check the USB Type-C and Power Delivery Standby mode memorization state.
446 * @rmtoll CR3 UCPD_STDBY LL_PWR_IsEnabledUCPDStandbyMode
447 * @retval State of bit (1 or 0).
448 */
LL_PWR_IsEnabledUCPDStandbyMode(void)449 __STATIC_INLINE uint32_t LL_PWR_IsEnabledUCPDStandbyMode(void)
450 {
451
452 return ((READ_BIT(PWR->CR3, PWR_CR3_UCPD_STDBY) == (PWR_CR3_UCPD_STDBY)) ? 1UL : 0UL);
453
454 }
455
456 /**
457 * @brief Enable the USB Type-C and power delivery dead battery pull-down behavior
458 * on UCPD CC1 and CC2 pins.
459 * @note After exiting reset, the USB Type-C dead battery behavior is enabled,
460 * which may have a pull-down effect on CC1 and CC2 pins. It is recommended
461 * to disable it in all cases, either to stop this pull-down or to hand over
462 * control to the UCPD (which should therefore be initialized before doing the disable).
463 * @rmtoll CR3 UCPD_DBDIS LL_PWR_EnableUCPDDeadBattery
464 * @retval None
465 */
LL_PWR_EnableUCPDDeadBattery(void)466 __STATIC_INLINE void LL_PWR_EnableUCPDDeadBattery(void)
467 {
468 CLEAR_BIT(PWR->CR3, PWR_CR3_UCPD_DBDIS);
469 }
470
471 /**
472 * @brief Disable the USB Type-C and power delivery dead battery pull-down behavior
473 * on UCPD CC1 and CC2 pins.
474 * @note After exiting reset, the USB Type-C dead battery behavior is enabled,
475 * which may have a pull-down effect on CC1 and CC2 pins. It is recommended
476 * to disable it in all cases, either to stop this pull-down or to hand over
477 * control to the UCPD (which should therefore be initialized before doing the disable).
478 * @rmtoll CR3 UCPD_DBDIS LL_PWR_DisableUCPDDeadBattery
479 * @retval None
480 */
LL_PWR_DisableUCPDDeadBattery(void)481 __STATIC_INLINE void LL_PWR_DisableUCPDDeadBattery(void)
482 {
483 SET_BIT(PWR->CR3, PWR_CR3_UCPD_DBDIS);
484 }
485
486 /**
487 * @brief Check the USB Type-C and power delivery dead battery pull-down behavior
488 * on UCPD CC1 and CC2 pins.
489 * @note After exiting reset, the USB Type-C dead battery behavior is enabled,
490 * which may have a pull-down effect on CC1 and CC2 pins. It is recommended
491 * to disable it in all cases, either to stop this pull-down or to hand over
492 * control to the UCPD (which should therefore be initialized before doing the disable).
493 * @rmtoll CR3 UCPD_DBDIS LL_PWR_IsEnabledUCPDDeadBattery
494 * @retval State of feature (1 : enabled; 0 : disabled).
495 */
LL_PWR_IsEnabledUCPDDeadBattery(void)496 __STATIC_INLINE uint32_t LL_PWR_IsEnabledUCPDDeadBattery(void)
497 {
498 return ((READ_BIT(PWR->CR3, PWR_CR3_UCPD_DBDIS) == (PWR_CR3_UCPD_DBDIS)) ? 0UL : 1UL);
499 }
500
501 /**
502 * @brief Enable VDDUSB supply
503 * @rmtoll CR2 USV LL_PWR_EnableVddUSB
504 * @retval None
505 */
LL_PWR_EnableVddUSB(void)506 __STATIC_INLINE void LL_PWR_EnableVddUSB(void)
507 {
508 SET_BIT(PWR->CR2, PWR_CR2_USV);
509 }
510
511 /**
512 * @brief Disable VDDUSB supply
513 * @rmtoll CR2 USV LL_PWR_DisableVddUSB
514 * @retval None
515 */
LL_PWR_DisableVddUSB(void)516 __STATIC_INLINE void LL_PWR_DisableVddUSB(void)
517 {
518 CLEAR_BIT(PWR->CR2, PWR_CR2_USV);
519 }
520
521 /**
522 * @brief Check if VDDUSB supply is enabled
523 * @rmtoll CR2 USV LL_PWR_IsEnabledVddUSB
524 * @retval State of bit (1 or 0).
525 */
LL_PWR_IsEnabledVddUSB(void)526 __STATIC_INLINE uint32_t LL_PWR_IsEnabledVddUSB(void)
527 {
528 return ((READ_BIT(PWR->CR2, PWR_CR2_USV) == (PWR_CR2_USV)) ? 1UL : 0UL);
529 }
530
531 /**
532 * @brief Enable VDDIO2 supply
533 * @rmtoll CR2 IOSV LL_PWR_EnableVddIO2
534 * @retval None
535 */
LL_PWR_EnableVddIO2(void)536 __STATIC_INLINE void LL_PWR_EnableVddIO2(void)
537 {
538 SET_BIT(PWR->CR2, PWR_CR2_IOSV);
539 }
540
541 /**
542 * @brief Disable VDDIO2 supply
543 * @rmtoll CR2 IOSV LL_PWR_DisableVddIO2
544 * @retval None
545 */
LL_PWR_DisableVddIO2(void)546 __STATIC_INLINE void LL_PWR_DisableVddIO2(void)
547 {
548 CLEAR_BIT(PWR->CR2, PWR_CR2_IOSV);
549 }
550
551 /**
552 * @brief Check if VDDIO2 supply is enabled
553 * @rmtoll CR2 IOSV LL_PWR_IsEnabledVddIO2
554 * @retval State of bit (1 or 0).
555 */
LL_PWR_IsEnabledVddIO2(void)556 __STATIC_INLINE uint32_t LL_PWR_IsEnabledVddIO2(void)
557 {
558 return ((READ_BIT(PWR->CR2, PWR_CR2_IOSV) == (PWR_CR2_IOSV)) ? 1UL : 0UL);
559 }
560
561 /**
562 * @brief Enable the Power Voltage Monitoring on a peripheral
563 * @rmtoll CR2 PVME1 LL_PWR_EnablePVM\n
564 * CR2 PVME2 LL_PWR_EnablePVM\n
565 * CR2 PVME3 LL_PWR_EnablePVM\n
566 * CR2 PVME4 LL_PWR_EnablePVM
567 * @param PeriphVoltage This parameter can be one of the following values:
568 * @arg @ref LL_PWR_PVM_VDDUSB_1_2V
569 * @arg @ref LL_PWR_PVM_VDDIO2_0_9V
570 * @arg @ref LL_PWR_PVM_VDDA_1_62V
571 * @arg @ref LL_PWR_PVM_VDDA_1_8V
572 * @retval None
573 */
LL_PWR_EnablePVM(uint32_t PeriphVoltage)574 __STATIC_INLINE void LL_PWR_EnablePVM(uint32_t PeriphVoltage)
575 {
576 SET_BIT(PWR->CR2, PeriphVoltage);
577 }
578
579 /**
580 * @brief Disable the Power Voltage Monitoring on a peripheral
581 * @rmtoll CR2 PVME1 LL_PWR_DisablePVM\n
582 * CR2 PVME2 LL_PWR_DisablePVM\n
583 * CR2 PVME3 LL_PWR_DisablePVM\n
584 * CR2 PVME4 LL_PWR_DisablePVM
585 * @param PeriphVoltage This parameter can be one of the following values:
586 * @arg @ref LL_PWR_PVM_VDDUSB_1_2V
587 * @arg @ref LL_PWR_PVM_VDDIO2_0_9V
588 * @arg @ref LL_PWR_PVM_VDDA_1_62V
589 * @arg @ref LL_PWR_PVM_VDDA_1_8V
590 * @retval None
591 */
LL_PWR_DisablePVM(uint32_t PeriphVoltage)592 __STATIC_INLINE void LL_PWR_DisablePVM(uint32_t PeriphVoltage)
593 {
594 CLEAR_BIT(PWR->CR2, PeriphVoltage);
595 }
596
597 /**
598 * @brief Check if Power Voltage Monitoring is enabled on a peripheral
599 * @rmtoll CR2 PVME1 LL_PWR_IsEnabledPVM\n
600 * CR2 PVME2 LL_PWR_IsEnabledPVM\n
601 * CR2 PVME3 LL_PWR_IsEnabledPVM\n
602 * CR2 PVME4 LL_PWR_IsEnabledPVM
603 * @param PeriphVoltage This parameter can be one of the following values:
604 * @arg @ref LL_PWR_PVM_VDDUSB_1_2V
605 * @arg @ref LL_PWR_PVM_VDDIO2_0_9V
606 * @arg @ref LL_PWR_PVM_VDDA_1_62V
607 * @arg @ref LL_PWR_PVM_VDDA_1_8V
608 * @retval State of bit (1 or 0).
609 */
LL_PWR_IsEnabledPVM(uint32_t PeriphVoltage)610 __STATIC_INLINE uint32_t LL_PWR_IsEnabledPVM(uint32_t PeriphVoltage)
611 {
612 return ((READ_BIT(PWR->CR2, PeriphVoltage) == (PeriphVoltage)) ? 1UL : 0UL);
613 }
614
615 /**
616 * @brief Configure the voltage threshold detected by the Power Voltage Detector
617 * @rmtoll CR2 PLS LL_PWR_SetPVDLevel
618 * @param PVDLevel This parameter can be one of the following values:
619 * @arg @ref LL_PWR_PVDLEVEL_0
620 * @arg @ref LL_PWR_PVDLEVEL_1
621 * @arg @ref LL_PWR_PVDLEVEL_2
622 * @arg @ref LL_PWR_PVDLEVEL_3
623 * @arg @ref LL_PWR_PVDLEVEL_4
624 * @arg @ref LL_PWR_PVDLEVEL_5
625 * @arg @ref LL_PWR_PVDLEVEL_6
626 * @arg @ref LL_PWR_PVDLEVEL_7
627 * @retval None
628 */
LL_PWR_SetPVDLevel(uint32_t PVDLevel)629 __STATIC_INLINE void LL_PWR_SetPVDLevel(uint32_t PVDLevel)
630 {
631 MODIFY_REG(PWR->CR2, PWR_CR2_PLS, PVDLevel);
632 }
633
634 /**
635 * @brief Get the voltage threshold detection
636 * @rmtoll CR2 PLS LL_PWR_GetPVDLevel
637 * @retval Returned value can be one of the following values:
638 * @arg @ref LL_PWR_PVDLEVEL_0
639 * @arg @ref LL_PWR_PVDLEVEL_1
640 * @arg @ref LL_PWR_PVDLEVEL_2
641 * @arg @ref LL_PWR_PVDLEVEL_3
642 * @arg @ref LL_PWR_PVDLEVEL_4
643 * @arg @ref LL_PWR_PVDLEVEL_5
644 * @arg @ref LL_PWR_PVDLEVEL_6
645 * @arg @ref LL_PWR_PVDLEVEL_7
646 */
LL_PWR_GetPVDLevel(void)647 __STATIC_INLINE uint32_t LL_PWR_GetPVDLevel(void)
648 {
649 return (uint32_t)(READ_BIT(PWR->CR2, PWR_CR2_PLS));
650 }
651
652 /**
653 * @brief Enable Power Voltage Detector
654 * @rmtoll CR2 PVDE LL_PWR_EnablePVD
655 * @retval None
656 */
LL_PWR_EnablePVD(void)657 __STATIC_INLINE void LL_PWR_EnablePVD(void)
658 {
659 SET_BIT(PWR->CR2, PWR_CR2_PVDE);
660 }
661
662 /**
663 * @brief Disable Power Voltage Detector
664 * @rmtoll CR2 PVDE LL_PWR_DisablePVD
665 * @retval None
666 */
LL_PWR_DisablePVD(void)667 __STATIC_INLINE void LL_PWR_DisablePVD(void)
668 {
669 CLEAR_BIT(PWR->CR2, PWR_CR2_PVDE);
670 }
671
672 /**
673 * @brief Check if Power Voltage Detector is enabled
674 * @rmtoll CR2 PVDE LL_PWR_IsEnabledPVD
675 * @retval State of bit (1 or 0).
676 */
LL_PWR_IsEnabledPVD(void)677 __STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(void)
678 {
679 return ((READ_BIT(PWR->CR2, PWR_CR2_PVDE) == (PWR_CR2_PVDE)) ? 1UL : 0UL);
680 }
681
682 /**
683 * @brief Enable SMPS low-power mode
684 * @rmtoll CR4 SMPSLPEN LL_PWR_EnableSMPSLowPowerMode
685 * @retval None
686 */
LL_PWR_EnableSMPSLowPowerMode(void)687 __STATIC_INLINE void LL_PWR_EnableSMPSLowPowerMode(void)
688 {
689 SET_BIT(PWR->CR4, PWR_CR4_SMPSLPEN);
690 }
691
692 /**
693 * @brief Disable SMPS low-power mode
694 * @rmtoll CR4 SMPSLPEN LL_PWR_DisableSMPSLowPowerMode
695 * @retval None
696 */
LL_PWR_DisableSMPSLowPowerMode(void)697 __STATIC_INLINE void LL_PWR_DisableSMPSLowPowerMode(void)
698 {
699 CLEAR_BIT(PWR->CR4, PWR_CR4_SMPSLPEN);
700 }
701
702 /**
703 * @brief Check if SMPS low-power mode is enabled
704 * @rmtoll CR4 SMPSLPEN LL_PWR_IsEnabledSMPSLowPowerMode
705 * @retval State of bit (1 or 0).
706 */
LL_PWR_IsEnabledSMPSLowPowerMode(void)707 __STATIC_INLINE uint32_t LL_PWR_IsEnabledSMPSLowPowerMode(void)
708 {
709 return ((READ_BIT(PWR->CR4, PWR_CR4_SMPSLPEN) == (PWR_CR4_SMPSLPEN)) ? 1UL : 0UL);
710 }
711
712 /**
713 * @brief Enable SMPS fast start
714 * @rmtoll CR4 SMPSFSTEN LL_PWR_EnableSMPSFastStart
715 * @retval None
716 */
LL_PWR_EnableSMPSFastStart(void)717 __STATIC_INLINE void LL_PWR_EnableSMPSFastStart(void)
718 {
719 SET_BIT(PWR->CR4, PWR_CR4_SMPSFSTEN);
720 }
721
722 /**
723 * @brief Disable SMPS fast start
724 * @rmtoll CR4 SMPSFSTEN LL_PWR_DisableSMPSFastStart
725 * @retval None
726 */
LL_PWR_DisableSMPSFastStart(void)727 __STATIC_INLINE void LL_PWR_DisableSMPSFastStart(void)
728 {
729 CLEAR_BIT(PWR->CR4, PWR_CR4_SMPSFSTEN);
730 }
731
732 /**
733 * @brief Check if SMPS fast start is enabled
734 * @rmtoll CR4 SMPSFSTEN LL_PWR_IsEnabledSMPSFastStart
735 * @retval State of bit (1 or 0).
736 */
LL_PWR_IsEnabledSMPSFastStart(void)737 __STATIC_INLINE uint32_t LL_PWR_IsEnabledSMPSFastStart(void)
738 {
739 return ((READ_BIT(PWR->CR4, PWR_CR4_SMPSFSTEN) == (PWR_CR4_SMPSFSTEN)) ? 1UL : 0UL);
740 }
741
742 /**
743 * @brief Enable SMPS bypass mode
744 * @rmtoll CR4 SMPSBYP LL_PWR_EnableSMPSBypassMode
745 * @retval None
746 */
LL_PWR_EnableSMPSBypassMode(void)747 __STATIC_INLINE void LL_PWR_EnableSMPSBypassMode(void)
748 {
749 SET_BIT(PWR->CR4, PWR_CR4_SMPSBYP);
750 }
751
752 /**
753 * @brief Disable SMPS bypass mode
754 * @rmtoll CR4 SMPSBYP LL_PWR_DisableSMPSBypassMode
755 * @retval None
756 */
LL_PWR_DisableSMPSBypassMode(void)757 __STATIC_INLINE void LL_PWR_DisableSMPSBypassMode(void)
758 {
759 CLEAR_BIT(PWR->CR4, PWR_CR4_SMPSBYP);
760 }
761
762 /**
763 * @brief Check if SMPS bypass mode is enabled
764 * @rmtoll CR4 SMPSBYP LL_PWR_IsEnabledSMPSBypassMode
765 * @retval State of bit (1 or 0).
766 */
LL_PWR_IsEnabledSMPSBypassMode(void)767 __STATIC_INLINE uint32_t LL_PWR_IsEnabledSMPSBypassMode(void)
768 {
769 return ((READ_BIT(PWR->CR4, PWR_CR4_SMPSBYP) == (PWR_CR4_SMPSBYP)) ? 1UL : 0UL);
770 }
771
772 /**
773 * @brief Enable external SMPS
774 * @rmtoll CR4 EXTSMPSEN LL_PWR_EnableExtSMPS
775 * @retval None
776 */
LL_PWR_EnableExtSMPS(void)777 __STATIC_INLINE void LL_PWR_EnableExtSMPS(void)
778 {
779 SET_BIT(PWR->CR4, PWR_CR4_EXTSMPSEN);
780 }
781
782 /**
783 * @brief Disable external SMPS
784 * @rmtoll CR4 EXTSMPSEN LL_PWR_DisableExtSMPS
785 * @retval None
786 */
LL_PWR_DisableExtSMPS(void)787 __STATIC_INLINE void LL_PWR_DisableExtSMPS(void)
788 {
789 CLEAR_BIT(PWR->CR4, PWR_CR4_EXTSMPSEN);
790 }
791
792 /**
793 * @brief Check if external SMPS is enabled
794 * @rmtoll CR4 EXTSMPSEN LL_PWR_IsEnabledExtSMPS
795 * @retval State of bit (1 or 0).
796 */
LL_PWR_IsEnabledExtSMPS(void)797 __STATIC_INLINE uint32_t LL_PWR_IsEnabledExtSMPS(void)
798 {
799 return ((READ_BIT(PWR->CR4, PWR_CR4_EXTSMPSEN) == (PWR_CR4_EXTSMPSEN)) ? 1UL : 0UL);
800 }
801
802 /**
803 * @brief Enable ultra low-power mode
804 * @rmtoll CR3 UPLMEN LL_PWR_EnableUltraLowPowerMode
805 * @retval None
806 */
LL_PWR_EnableUltraLowPowerMode(void)807 __STATIC_INLINE void LL_PWR_EnableUltraLowPowerMode(void)
808 {
809 SET_BIT(PWR->CR3, PWR_CR3_ULPMEN);
810 }
811
812 /**
813 * @brief Disable ultra low-power mode
814 * @rmtoll CR3 UPLMEN LL_PWR_DisableUltraLowPowerMode
815 * @retval None
816 */
LL_PWR_DisableUltraLowPowerMode(void)817 __STATIC_INLINE void LL_PWR_DisableUltraLowPowerMode(void)
818 {
819 CLEAR_BIT(PWR->CR3, PWR_CR3_ULPMEN);
820 }
821
822 /**
823 * @brief Check if ultra low-power mode is enabled
824 * @rmtoll CR3 UPLMEN LL_PWR_IsEnabledUltraLowPowerMode
825 * @retval State of bit (1 or 0).
826 */
LL_PWR_IsEnabledUltraLowPowerMode(void)827 __STATIC_INLINE uint32_t LL_PWR_IsEnabledUltraLowPowerMode(void)
828 {
829 return ((READ_BIT(PWR->CR3, PWR_CR3_ULPMEN) == (PWR_CR3_ULPMEN)) ? 1UL : 0UL);
830 }
831
832 /**
833 * @brief Enable pull-up and pull-down configuration
834 * @rmtoll CR3 APC LL_PWR_EnablePUPDCfg
835 * @retval None
836 */
LL_PWR_EnablePUPDCfg(void)837 __STATIC_INLINE void LL_PWR_EnablePUPDCfg(void)
838 {
839 SET_BIT(PWR->CR3, PWR_CR3_APC);
840 }
841
842 /**
843 * @brief Disable pull-up and pull-down configuration
844 * @rmtoll CR3 APC LL_PWR_DisablePUPDCfg
845 * @retval None
846 */
LL_PWR_DisablePUPDCfg(void)847 __STATIC_INLINE void LL_PWR_DisablePUPDCfg(void)
848 {
849 CLEAR_BIT(PWR->CR3, PWR_CR3_APC);
850 }
851
852 /**
853 * @brief Check if pull-up and pull-down configuration is enabled
854 * @rmtoll CR3 APC LL_PWR_IsEnabledPUPDCfg
855 * @retval State of bit (1 or 0).
856 */
LL_PWR_IsEnabledPUPDCfg(void)857 __STATIC_INLINE uint32_t LL_PWR_IsEnabledPUPDCfg(void)
858 {
859 return ((READ_BIT(PWR->CR3, PWR_CR3_APC) == (PWR_CR3_APC)) ? 1UL : 0UL);
860 }
861
862 /**
863 * @brief Set the SRAM2 retention in Standby mode
864 * @rmtoll CR3 RRS LL_PWR_SetSRAM2Retention
865 * @param SRAM2Retention This parameter can be one of the following values:
866 * @arg @ref LL_PWR_SRAM2_NO_RETENTION
867 * @arg @ref LL_PWR_SRAM2_FULL_RETENTION
868 * @arg @ref LL_PWR_SRAM2_4KB_RETENTION
869 * @retval None
870 */
LL_PWR_SetSRAM2Retention(uint32_t SRAM2Retention)871 __STATIC_INLINE void LL_PWR_SetSRAM2Retention(uint32_t SRAM2Retention)
872 {
873 MODIFY_REG(PWR->CR3, PWR_CR3_RRS, SRAM2Retention);
874 }
875
876 /**
877 * @brief Get the SRAM2 retention in Standby mode
878 * @rmtoll CR3 RRS LL_PWR_GetSRAM2Retention
879 * @retval Returned value can be one of the following values:
880 * @arg @ref LL_PWR_SRAM2_NO_RETENTION
881 * @arg @ref LL_PWR_SRAM2_FULL_RETENTION
882 * @arg @ref LL_PWR_SRAM2_4KB_RETENTION
883 */
LL_PWR_GetSRAM2Retention(void)884 __STATIC_INLINE uint32_t LL_PWR_GetSRAM2Retention(void)
885 {
886 return (uint32_t)(READ_BIT(PWR->CR3, PWR_CR3_RRS));
887 }
888
889 /**
890 * @brief Enable the WakeUp PINx functionality
891 * @rmtoll CR3 EWUP1 LL_PWR_EnableWakeUpPin\n
892 * CR3 EWUP2 LL_PWR_EnableWakeUpPin\n
893 * CR3 EWUP3 LL_PWR_EnableWakeUpPin\n
894 * CR3 EWUP4 LL_PWR_EnableWakeUpPin\n
895 * CR3 EWUP5 LL_PWR_EnableWakeUpPin\n
896 * @param WakeUpPin This parameter can be one of the following values:
897 * @arg @ref LL_PWR_WAKEUP_PIN1
898 * @arg @ref LL_PWR_WAKEUP_PIN2
899 * @arg @ref LL_PWR_WAKEUP_PIN3
900 * @arg @ref LL_PWR_WAKEUP_PIN4
901 * @arg @ref LL_PWR_WAKEUP_PIN5
902 * @retval None
903 */
LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin)904 __STATIC_INLINE void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin)
905 {
906 SET_BIT(PWR->CR3, WakeUpPin);
907 }
908
909 /**
910 * @brief Disable the WakeUp PINx functionality
911 * @rmtoll CR3 EWUP1 LL_PWR_DisableWakeUpPin\n
912 * CR3 EWUP2 LL_PWR_DisableWakeUpPin\n
913 * CR3 EWUP3 LL_PWR_DisableWakeUpPin\n
914 * CR3 EWUP4 LL_PWR_DisableWakeUpPin\n
915 * CR3 EWUP5 LL_PWR_DisableWakeUpPin\n
916 * @param WakeUpPin This parameter can be one of the following values:
917 * @arg @ref LL_PWR_WAKEUP_PIN1
918 * @arg @ref LL_PWR_WAKEUP_PIN2
919 * @arg @ref LL_PWR_WAKEUP_PIN3
920 * @arg @ref LL_PWR_WAKEUP_PIN4
921 * @arg @ref LL_PWR_WAKEUP_PIN5
922 * @retval None
923 */
LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin)924 __STATIC_INLINE void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin)
925 {
926 CLEAR_BIT(PWR->CR3, WakeUpPin);
927 }
928
929 /**
930 * @brief Check if the WakeUp PINx functionality is enabled
931 * @rmtoll CR3 EWUP1 LL_PWR_IsEnabledWakeUpPin\n
932 * CR3 EWUP2 LL_PWR_IsEnabledWakeUpPin\n
933 * CR3 EWUP3 LL_PWR_IsEnabledWakeUpPin\n
934 * CR3 EWUP4 LL_PWR_IsEnabledWakeUpPin\n
935 * CR3 EWUP5 LL_PWR_IsEnabledWakeUpPin\n
936 * @param WakeUpPin This parameter can be one of the following values:
937 * @arg @ref LL_PWR_WAKEUP_PIN1
938 * @arg @ref LL_PWR_WAKEUP_PIN2
939 * @arg @ref LL_PWR_WAKEUP_PIN3
940 * @arg @ref LL_PWR_WAKEUP_PIN4
941 * @arg @ref LL_PWR_WAKEUP_PIN5
942 * @retval State of bit (1 or 0).
943 */
LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin)944 __STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin)
945 {
946 return ((READ_BIT(PWR->CR3, WakeUpPin) == (WakeUpPin)) ? 1UL : 0UL);
947 }
948
949 /**
950 * @brief Set the resistor impedance
951 * @rmtoll CR4 VBRS LL_PWR_SetBattChargResistor
952 * @param Resistor This parameter can be one of the following values:
953 * @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K
954 * @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K
955 * @retval None
956 */
LL_PWR_SetBattChargResistor(uint32_t Resistor)957 __STATIC_INLINE void LL_PWR_SetBattChargResistor(uint32_t Resistor)
958 {
959 MODIFY_REG(PWR->CR4, PWR_CR4_VBRS, Resistor);
960 }
961
962 /**
963 * @brief Get the resistor impedance
964 * @rmtoll CR4 VBRS LL_PWR_GetBattChargResistor
965 * @retval Returned value can be one of the following values:
966 * @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K
967 * @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K
968 */
LL_PWR_GetBattChargResistor(void)969 __STATIC_INLINE uint32_t LL_PWR_GetBattChargResistor(void)
970 {
971 return (uint32_t)(READ_BIT(PWR->CR4, PWR_CR4_VBRS));
972 }
973
974 /**
975 * @brief Enable battery charging
976 * @rmtoll CR4 VBE LL_PWR_EnableBatteryCharging
977 * @retval None
978 */
LL_PWR_EnableBatteryCharging(void)979 __STATIC_INLINE void LL_PWR_EnableBatteryCharging(void)
980 {
981 SET_BIT(PWR->CR4, PWR_CR4_VBE);
982 }
983
984 /**
985 * @brief Disable battery charging
986 * @rmtoll CR4 VBE LL_PWR_DisableBatteryCharging
987 * @retval None
988 */
LL_PWR_DisableBatteryCharging(void)989 __STATIC_INLINE void LL_PWR_DisableBatteryCharging(void)
990 {
991 CLEAR_BIT(PWR->CR4, PWR_CR4_VBE);
992 }
993
994 /**
995 * @brief Check if battery charging is enabled
996 * @rmtoll CR4 VBE LL_PWR_IsEnabledBatteryCharging
997 * @retval State of bit (1 or 0).
998 */
LL_PWR_IsEnabledBatteryCharging(void)999 __STATIC_INLINE uint32_t LL_PWR_IsEnabledBatteryCharging(void)
1000 {
1001 return ((READ_BIT(PWR->CR4, PWR_CR4_VBE) == (PWR_CR4_VBE)) ? 1UL : 0UL);
1002 }
1003
1004 /**
1005 * @brief Set the Wake-Up pin polarity low for the event detection
1006 * @rmtoll CR4 WUPP1 LL_PWR_SetWakeUpPinPolarityLow\n
1007 * CR4 WUPP2 LL_PWR_SetWakeUpPinPolarityLow\n
1008 * CR4 WUPP3 LL_PWR_SetWakeUpPinPolarityLow\n
1009 * CR4 WUPP4 LL_PWR_SetWakeUpPinPolarityLow\n
1010 * CR4 WUPP5 LL_PWR_SetWakeUpPinPolarityLow
1011 * @param WakeUpPin This parameter can be one of the following values:
1012 * @arg @ref LL_PWR_WAKEUP_PIN1
1013 * @arg @ref LL_PWR_WAKEUP_PIN2
1014 * @arg @ref LL_PWR_WAKEUP_PIN3
1015 * @arg @ref LL_PWR_WAKEUP_PIN4
1016 * @arg @ref LL_PWR_WAKEUP_PIN5
1017 * @retval None
1018 */
LL_PWR_SetWakeUpPinPolarityLow(uint32_t WakeUpPin)1019 __STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityLow(uint32_t WakeUpPin)
1020 {
1021 SET_BIT(PWR->CR4, WakeUpPin);
1022 }
1023
1024 /**
1025 * @brief Set the Wake-Up pin polarity high for the event detection
1026 * @rmtoll CR4 WUPP1 LL_PWR_SetWakeUpPinPolarityHigh\n
1027 * CR4 WUPP2 LL_PWR_SetWakeUpPinPolarityHigh\n
1028 * CR4 WUPP3 LL_PWR_SetWakeUpPinPolarityHigh\n
1029 * CR4 WUPP4 LL_PWR_SetWakeUpPinPolarityHigh\n
1030 * CR4 WUPP5 LL_PWR_SetWakeUpPinPolarityHigh
1031 * @param WakeUpPin This parameter can be one of the following values:
1032 * @arg @ref LL_PWR_WAKEUP_PIN1
1033 * @arg @ref LL_PWR_WAKEUP_PIN2
1034 * @arg @ref LL_PWR_WAKEUP_PIN3
1035 * @arg @ref LL_PWR_WAKEUP_PIN4
1036 * @arg @ref LL_PWR_WAKEUP_PIN5
1037 * @retval None
1038 */
LL_PWR_SetWakeUpPinPolarityHigh(uint32_t WakeUpPin)1039 __STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityHigh(uint32_t WakeUpPin)
1040 {
1041 CLEAR_BIT(PWR->CR4, WakeUpPin);
1042 }
1043
1044 /**
1045 * @brief Get the Wake-Up pin polarity for the event detection
1046 * @rmtoll CR4 WUPP1 LL_PWR_IsWakeUpPinPolarityLow\n
1047 * CR4 WUPP2 LL_PWR_IsWakeUpPinPolarityLow\n
1048 * CR4 WUPP3 LL_PWR_IsWakeUpPinPolarityLow\n
1049 * CR4 WUPP4 LL_PWR_IsWakeUpPinPolarityLow\n
1050 * CR4 WUPP5 LL_PWR_IsWakeUpPinPolarityLow
1051 * @param WakeUpPin This parameter can be one of the following values:
1052 * @arg @ref LL_PWR_WAKEUP_PIN1
1053 * @arg @ref LL_PWR_WAKEUP_PIN2
1054 * @arg @ref LL_PWR_WAKEUP_PIN3
1055 * @arg @ref LL_PWR_WAKEUP_PIN4
1056 * @arg @ref LL_PWR_WAKEUP_PIN5
1057 * @retval State of bit (1 or 0).
1058 */
LL_PWR_IsWakeUpPinPolarityLow(uint32_t WakeUpPin)1059 __STATIC_INLINE uint32_t LL_PWR_IsWakeUpPinPolarityLow(uint32_t WakeUpPin)
1060 {
1061 return ((READ_BIT(PWR->CR4, WakeUpPin) == (WakeUpPin)) ? 1UL : 0UL);
1062 }
1063
1064 /**
1065 * @brief Enable GPIO pull-up state in Standby and Shutdown modes
1066 * @rmtoll PUCRA PU0-15 LL_PWR_EnableGPIOPullUp\n
1067 * PUCRB PU0-15 LL_PWR_EnableGPIOPullUp\n
1068 * PUCRC PU0-15 LL_PWR_EnableGPIOPullUp\n
1069 * PUCRD PU0-15 LL_PWR_EnableGPIOPullUp\n
1070 * PUCRE PU0-15 LL_PWR_EnableGPIOPullUp\n
1071 * PUCRF PU0-15 LL_PWR_EnableGPIOPullUp\n
1072 * PUCRG PU0-15 LL_PWR_EnableGPIOPullUp\n
1073 * PUCRH PU0-15 LL_PWR_EnableGPIOPullUp
1074 * @param GPIO This parameter can be one of the following values:
1075 * @arg @ref LL_PWR_GPIO_A
1076 * @arg @ref LL_PWR_GPIO_B
1077 * @arg @ref LL_PWR_GPIO_C
1078 * @arg @ref LL_PWR_GPIO_D
1079 * @arg @ref LL_PWR_GPIO_E
1080 * @arg @ref LL_PWR_GPIO_F
1081 * @arg @ref LL_PWR_GPIO_G
1082 * @arg @ref LL_PWR_GPIO_H
1083 * @param GPIONumber This parameter can be one of the following values:
1084 * @arg @ref LL_PWR_GPIO_BIT_0
1085 * @arg @ref LL_PWR_GPIO_BIT_1
1086 * @arg @ref LL_PWR_GPIO_BIT_2
1087 * @arg @ref LL_PWR_GPIO_BIT_3
1088 * @arg @ref LL_PWR_GPIO_BIT_4
1089 * @arg @ref LL_PWR_GPIO_BIT_5
1090 * @arg @ref LL_PWR_GPIO_BIT_6
1091 * @arg @ref LL_PWR_GPIO_BIT_7
1092 * @arg @ref LL_PWR_GPIO_BIT_8
1093 * @arg @ref LL_PWR_GPIO_BIT_9
1094 * @arg @ref LL_PWR_GPIO_BIT_10
1095 * @arg @ref LL_PWR_GPIO_BIT_11
1096 * @arg @ref LL_PWR_GPIO_BIT_12
1097 * @arg @ref LL_PWR_GPIO_BIT_13
1098 * @arg @ref LL_PWR_GPIO_BIT_14
1099 * @arg @ref LL_PWR_GPIO_BIT_15
1100 * @retval None
1101 */
LL_PWR_EnableGPIOPullUp(uint32_t GPIO,uint32_t GPIONumber)1102 __STATIC_INLINE void LL_PWR_EnableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber)
1103 {
1104 SET_BIT(*((__IO uint32_t *)GPIO), GPIONumber);
1105 }
1106
1107 /**
1108 * @brief Disable GPIO pull-up state in Standby and Shutdown modes
1109 * @rmtoll PUCRA PU0-15 LL_PWR_DisableGPIOPullUp\n
1110 * PUCRB PU0-15 LL_PWR_DisableGPIOPullUp\n
1111 * PUCRC PU0-15 LL_PWR_DisableGPIOPullUp\n
1112 * PUCRD PU0-15 LL_PWR_DisableGPIOPullUp\n
1113 * PUCRE PU0-15 LL_PWR_DisableGPIOPullUp\n
1114 * PUCRF PU0-15 LL_PWR_DisableGPIOPullUp\n
1115 * PUCRG PU0-15 LL_PWR_DisableGPIOPullUp\n
1116 * PUCRH PU0-15 LL_PWR_DisableGPIOPullUp
1117 * @param GPIO This parameter can be one of the following values:
1118 * @arg @ref LL_PWR_GPIO_A
1119 * @arg @ref LL_PWR_GPIO_B
1120 * @arg @ref LL_PWR_GPIO_C
1121 * @arg @ref LL_PWR_GPIO_D
1122 * @arg @ref LL_PWR_GPIO_E
1123 * @arg @ref LL_PWR_GPIO_F
1124 * @arg @ref LL_PWR_GPIO_G
1125 * @arg @ref LL_PWR_GPIO_H
1126 * @param GPIONumber This parameter can be one of the following values:
1127 * @arg @ref LL_PWR_GPIO_BIT_0
1128 * @arg @ref LL_PWR_GPIO_BIT_1
1129 * @arg @ref LL_PWR_GPIO_BIT_2
1130 * @arg @ref LL_PWR_GPIO_BIT_3
1131 * @arg @ref LL_PWR_GPIO_BIT_4
1132 * @arg @ref LL_PWR_GPIO_BIT_5
1133 * @arg @ref LL_PWR_GPIO_BIT_6
1134 * @arg @ref LL_PWR_GPIO_BIT_7
1135 * @arg @ref LL_PWR_GPIO_BIT_8
1136 * @arg @ref LL_PWR_GPIO_BIT_9
1137 * @arg @ref LL_PWR_GPIO_BIT_10
1138 * @arg @ref LL_PWR_GPIO_BIT_11
1139 * @arg @ref LL_PWR_GPIO_BIT_12
1140 * @arg @ref LL_PWR_GPIO_BIT_13
1141 * @arg @ref LL_PWR_GPIO_BIT_14
1142 * @arg @ref LL_PWR_GPIO_BIT_15
1143 * @retval None
1144 */
LL_PWR_DisableGPIOPullUp(uint32_t GPIO,uint32_t GPIONumber)1145 __STATIC_INLINE void LL_PWR_DisableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber)
1146 {
1147 CLEAR_BIT(*((__IO uint32_t *)GPIO), GPIONumber);
1148 }
1149
1150 /**
1151 * @brief Check if GPIO pull-up state is enabled
1152 * @rmtoll PUCRA PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
1153 * PUCRB PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
1154 * PUCRC PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
1155 * PUCRD PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
1156 * PUCRE PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
1157 * PUCRF PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
1158 * PUCRG PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
1159 * PUCRH PU0-15 LL_PWR_IsEnabledGPIOPullUp
1160 * @param GPIO This parameter can be one of the following values:
1161 * @arg @ref LL_PWR_GPIO_A
1162 * @arg @ref LL_PWR_GPIO_B
1163 * @arg @ref LL_PWR_GPIO_C
1164 * @arg @ref LL_PWR_GPIO_D
1165 * @arg @ref LL_PWR_GPIO_E
1166 * @arg @ref LL_PWR_GPIO_F
1167 * @arg @ref LL_PWR_GPIO_G
1168 * @arg @ref LL_PWR_GPIO_H
1169 * @param GPIONumber This parameter can be one of the following values:
1170 * @arg @ref LL_PWR_GPIO_BIT_0
1171 * @arg @ref LL_PWR_GPIO_BIT_1
1172 * @arg @ref LL_PWR_GPIO_BIT_2
1173 * @arg @ref LL_PWR_GPIO_BIT_3
1174 * @arg @ref LL_PWR_GPIO_BIT_4
1175 * @arg @ref LL_PWR_GPIO_BIT_5
1176 * @arg @ref LL_PWR_GPIO_BIT_6
1177 * @arg @ref LL_PWR_GPIO_BIT_7
1178 * @arg @ref LL_PWR_GPIO_BIT_8
1179 * @arg @ref LL_PWR_GPIO_BIT_9
1180 * @arg @ref LL_PWR_GPIO_BIT_10
1181 * @arg @ref LL_PWR_GPIO_BIT_11
1182 * @arg @ref LL_PWR_GPIO_BIT_12
1183 * @arg @ref LL_PWR_GPIO_BIT_13
1184 * @arg @ref LL_PWR_GPIO_BIT_14
1185 * @arg @ref LL_PWR_GPIO_BIT_15
1186 * @retval State of bit (1 or 0).
1187 */
LL_PWR_IsEnabledGPIOPullUp(uint32_t GPIO,uint32_t GPIONumber)1188 __STATIC_INLINE uint32_t LL_PWR_IsEnabledGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber)
1189 {
1190 return ((READ_BIT(*((__IO uint32_t *)GPIO), GPIONumber) == (GPIONumber)) ? 1UL : 0UL);
1191 }
1192
1193 /**
1194 * @brief Enable GPIO pull-down state in Standby and Shutdown modes
1195 * @rmtoll PDCRA PD0-15 LL_PWR_EnableGPIOPullDown\n
1196 * PDCRB PD0-15 LL_PWR_EnableGPIOPullDown\n
1197 * PDCRC PD0-15 LL_PWR_EnableGPIOPullDown\n
1198 * PDCRD PD0-15 LL_PWR_EnableGPIOPullDown\n
1199 * PDCRE PD0-15 LL_PWR_EnableGPIOPullDown\n
1200 * PDCRF PD0-15 LL_PWR_EnableGPIOPullDown\n
1201 * PDCRG PD0-15 LL_PWR_EnableGPIOPullDown\n
1202 * PDCRH PD0-15 LL_PWR_EnableGPIOPullDown
1203 * @param GPIO This parameter can be one of the following values:
1204 * @arg @ref LL_PWR_GPIO_A
1205 * @arg @ref LL_PWR_GPIO_B
1206 * @arg @ref LL_PWR_GPIO_C
1207 * @arg @ref LL_PWR_GPIO_D
1208 * @arg @ref LL_PWR_GPIO_E
1209 * @arg @ref LL_PWR_GPIO_F
1210 * @arg @ref LL_PWR_GPIO_G
1211 * @arg @ref LL_PWR_GPIO_H
1212 * @param GPIONumber This parameter can be one of the following values:
1213 * @arg @ref LL_PWR_GPIO_BIT_0
1214 * @arg @ref LL_PWR_GPIO_BIT_1
1215 * @arg @ref LL_PWR_GPIO_BIT_2
1216 * @arg @ref LL_PWR_GPIO_BIT_3
1217 * @arg @ref LL_PWR_GPIO_BIT_4
1218 * @arg @ref LL_PWR_GPIO_BIT_5
1219 * @arg @ref LL_PWR_GPIO_BIT_6
1220 * @arg @ref LL_PWR_GPIO_BIT_7
1221 * @arg @ref LL_PWR_GPIO_BIT_8
1222 * @arg @ref LL_PWR_GPIO_BIT_9
1223 * @arg @ref LL_PWR_GPIO_BIT_10
1224 * @arg @ref LL_PWR_GPIO_BIT_11
1225 * @arg @ref LL_PWR_GPIO_BIT_12
1226 * @arg @ref LL_PWR_GPIO_BIT_13
1227 * @arg @ref LL_PWR_GPIO_BIT_14
1228 * @arg @ref LL_PWR_GPIO_BIT_15
1229 * @retval None
1230 */
LL_PWR_EnableGPIOPullDown(uint32_t GPIO,uint32_t GPIONumber)1231 __STATIC_INLINE void LL_PWR_EnableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber)
1232 {
1233 SET_BIT(*((__IO uint32_t *)(GPIO + 4U)), GPIONumber);
1234 }
1235
1236 /**
1237 * @brief Disable GPIO pull-down state in Standby and Shutdown modes
1238 * @rmtoll PDCRA PD0-15 LL_PWR_DisableGPIOPullDown\n
1239 * PDCRB PD0-15 LL_PWR_DisableGPIOPullDown\n
1240 * PDCRC PD0-15 LL_PWR_DisableGPIOPullDown\n
1241 * PDCRD PD0-15 LL_PWR_DisableGPIOPullDown\n
1242 * PDCRE PD0-15 LL_PWR_DisableGPIOPullDown\n
1243 * PDCRF PD0-15 LL_PWR_DisableGPIOPullDown\n
1244 * PDCRG PD0-15 LL_PWR_DisableGPIOPullDown\n
1245 * PDCRH PD0-15 LL_PWR_DisableGPIOPullDown
1246 * @param GPIO This parameter can be one of the following values:
1247 * @arg @ref LL_PWR_GPIO_A
1248 * @arg @ref LL_PWR_GPIO_B
1249 * @arg @ref LL_PWR_GPIO_C
1250 * @arg @ref LL_PWR_GPIO_D
1251 * @arg @ref LL_PWR_GPIO_E
1252 * @arg @ref LL_PWR_GPIO_F
1253 * @arg @ref LL_PWR_GPIO_G
1254 * @arg @ref LL_PWR_GPIO_H
1255 * @param GPIONumber This parameter can be one of the following values:
1256 * @arg @ref LL_PWR_GPIO_BIT_0
1257 * @arg @ref LL_PWR_GPIO_BIT_1
1258 * @arg @ref LL_PWR_GPIO_BIT_2
1259 * @arg @ref LL_PWR_GPIO_BIT_3
1260 * @arg @ref LL_PWR_GPIO_BIT_4
1261 * @arg @ref LL_PWR_GPIO_BIT_5
1262 * @arg @ref LL_PWR_GPIO_BIT_6
1263 * @arg @ref LL_PWR_GPIO_BIT_7
1264 * @arg @ref LL_PWR_GPIO_BIT_8
1265 * @arg @ref LL_PWR_GPIO_BIT_9
1266 * @arg @ref LL_PWR_GPIO_BIT_10
1267 * @arg @ref LL_PWR_GPIO_BIT_11
1268 * @arg @ref LL_PWR_GPIO_BIT_12
1269 * @arg @ref LL_PWR_GPIO_BIT_13
1270 * @arg @ref LL_PWR_GPIO_BIT_14
1271 * @arg @ref LL_PWR_GPIO_BIT_15
1272 * @retval None
1273 */
LL_PWR_DisableGPIOPullDown(uint32_t GPIO,uint32_t GPIONumber)1274 __STATIC_INLINE void LL_PWR_DisableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber)
1275 {
1276 CLEAR_BIT(*((__IO uint32_t *)(GPIO + 4U)), GPIONumber);
1277 }
1278
1279 /**
1280 * @brief Check if GPIO pull-down state is enabled
1281 * @rmtoll PDCRA PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
1282 * PDCRB PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
1283 * PDCRC PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
1284 * PDCRD PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
1285 * PDCRE PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
1286 * PDCRF PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
1287 * PDCRG PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
1288 * PDCRH PD0-15 LL_PWR_IsEnabledGPIOPullDown
1289 * @param GPIO This parameter can be one of the following values:
1290 * @arg @ref LL_PWR_GPIO_A
1291 * @arg @ref LL_PWR_GPIO_B
1292 * @arg @ref LL_PWR_GPIO_C
1293 * @arg @ref LL_PWR_GPIO_D
1294 * @arg @ref LL_PWR_GPIO_E
1295 * @arg @ref LL_PWR_GPIO_F
1296 * @arg @ref LL_PWR_GPIO_G
1297 * @arg @ref LL_PWR_GPIO_H
1298 * @param GPIONumber This parameter can be one of the following values:
1299 * @arg @ref LL_PWR_GPIO_BIT_0
1300 * @arg @ref LL_PWR_GPIO_BIT_1
1301 * @arg @ref LL_PWR_GPIO_BIT_2
1302 * @arg @ref LL_PWR_GPIO_BIT_3
1303 * @arg @ref LL_PWR_GPIO_BIT_4
1304 * @arg @ref LL_PWR_GPIO_BIT_5
1305 * @arg @ref LL_PWR_GPIO_BIT_6
1306 * @arg @ref LL_PWR_GPIO_BIT_7
1307 * @arg @ref LL_PWR_GPIO_BIT_8
1308 * @arg @ref LL_PWR_GPIO_BIT_9
1309 * @arg @ref LL_PWR_GPIO_BIT_10
1310 * @arg @ref LL_PWR_GPIO_BIT_11
1311 * @arg @ref LL_PWR_GPIO_BIT_12
1312 * @arg @ref LL_PWR_GPIO_BIT_13
1313 * @arg @ref LL_PWR_GPIO_BIT_14
1314 * @arg @ref LL_PWR_GPIO_BIT_15
1315 * @retval State of bit (1 or 0).
1316 */
LL_PWR_IsEnabledGPIOPullDown(uint32_t GPIO,uint32_t GPIONumber)1317 __STATIC_INLINE uint32_t LL_PWR_IsEnabledGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber)
1318 {
1319 return ((READ_BIT(*((__IO uint32_t *)(GPIO + 4U)), GPIONumber) == (GPIONumber)) ? 1UL : 0UL);
1320 }
1321
1322 /**
1323 * @}
1324 */
1325
1326 /** @defgroup PWR_LL_EF_FLAG_Management FLAG_Management
1327 * @{
1328 */
1329
1330 /**
1331 * @brief Get SMPS High-power mode ready Flag
1332 * @rmtoll SR1 SMPSHPRDY LL_PWR_IsActiveFlag_SMPSHPRDY
1333 * @retval State of bit (1 or 0).
1334 */
LL_PWR_IsActiveFlag_SMPSHPRDY(void)1335 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SMPSHPRDY(void)
1336 {
1337 return ((READ_BIT(PWR->SR1, PWR_SR1_SMPSHPRDY) == (PWR_SR1_SMPSHPRDY)) ? 1UL : 0UL);
1338 }
1339
1340 /**
1341 * @brief Get External SMPS mode ready Flag
1342 * @rmtoll SR1 EXTSMPSRDY LL_PWR_IsActiveFlag_EXTSMPSRDY
1343 * @retval State of bit (1 or 0).
1344 */
LL_PWR_IsActiveFlag_EXTSMPSRDY(void)1345 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_EXTSMPSRDY(void)
1346 {
1347 return ((READ_BIT(PWR->SR1, PWR_SR1_EXTSMPSRDY) == (PWR_SR1_EXTSMPSRDY)) ? 1UL : 0UL);
1348 }
1349
1350 /**
1351 * @brief Get SMPS Bypass mode ready Flag
1352 * @rmtoll SR1 SMPSBYPRDY LL_PWR_IsActiveFlag_SMPSBYPRDY
1353 * @retval State of bit (1 or 0).
1354 */
LL_PWR_IsActiveFlag_SMPSBYPRDY(void)1355 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SMPSBYPRDY(void)
1356 {
1357 return ((READ_BIT(PWR->SR1, PWR_SR1_SMPSBYPRDY) == (PWR_SR1_SMPSBYPRDY)) ? 1UL : 0UL);
1358 }
1359
1360 /**
1361 * @brief Get Stand-By Flag
1362 * @rmtoll SR1 SBF LL_PWR_IsActiveFlag_SB
1363 * @retval State of bit (1 or 0).
1364 */
LL_PWR_IsActiveFlag_SB(void)1365 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SB(void)
1366 {
1367 return ((READ_BIT(PWR->SR1, PWR_SR1_SBF) == (PWR_SR1_SBF)) ? 1UL : 0UL);
1368 }
1369
1370 /**
1371 * @brief Get Wake-up Flag 5
1372 * @rmtoll SR1 WUF5 LL_PWR_IsActiveFlag_WU5
1373 * @retval State of bit (1 or 0).
1374 */
LL_PWR_IsActiveFlag_WU5(void)1375 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU5(void)
1376 {
1377 return ((READ_BIT(PWR->SR1, PWR_SR1_WUF5) == (PWR_SR1_WUF5)) ? 1UL : 0UL);
1378 }
1379
1380 /**
1381 * @brief Get Wake-up Flag 4
1382 * @rmtoll SR1 WUF4 LL_PWR_IsActiveFlag_WU4
1383 * @retval State of bit (1 or 0).
1384 */
LL_PWR_IsActiveFlag_WU4(void)1385 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU4(void)
1386 {
1387 return ((READ_BIT(PWR->SR1, PWR_SR1_WUF4) == (PWR_SR1_WUF4)) ? 1UL : 0UL);
1388 }
1389
1390 /**
1391 * @brief Get Wake-up Flag 3
1392 * @rmtoll SR1 WUF3 LL_PWR_IsActiveFlag_WU3
1393 * @retval State of bit (1 or 0).
1394 */
LL_PWR_IsActiveFlag_WU3(void)1395 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU3(void)
1396 {
1397 return ((READ_BIT(PWR->SR1, PWR_SR1_WUF3) == (PWR_SR1_WUF3)) ? 1UL : 0UL);
1398 }
1399
1400 /**
1401 * @brief Get Wake-up Flag 2
1402 * @rmtoll SR1 WUF2 LL_PWR_IsActiveFlag_WU2
1403 * @retval State of bit (1 or 0).
1404 */
LL_PWR_IsActiveFlag_WU2(void)1405 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU2(void)
1406 {
1407 return ((READ_BIT(PWR->SR1, PWR_SR1_WUF2) == (PWR_SR1_WUF2)) ? 1UL : 0UL);
1408 }
1409
1410 /**
1411 * @brief Get Wake-up Flag 1
1412 * @rmtoll SR1 WUF1 LL_PWR_IsActiveFlag_WU1
1413 * @retval State of bit (1 or 0).
1414 */
LL_PWR_IsActiveFlag_WU1(void)1415 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU1(void)
1416 {
1417 return ((READ_BIT(PWR->SR1, PWR_SR1_WUF1) == (PWR_SR1_WUF1)) ? 1UL : 0UL);
1418 }
1419
1420 /**
1421 * @brief Clear Stand-By Flag
1422 * @rmtoll SCR CSBF LL_PWR_ClearFlag_SB
1423 * @retval None
1424 */
LL_PWR_ClearFlag_SB(void)1425 __STATIC_INLINE void LL_PWR_ClearFlag_SB(void)
1426 {
1427 WRITE_REG(PWR->SCR, PWR_SCR_CSBF);
1428 }
1429
1430 /**
1431 * @brief Clear Wake-up Flags
1432 * @rmtoll SCR CWUF LL_PWR_ClearFlag_WU
1433 * @retval None
1434 */
LL_PWR_ClearFlag_WU(void)1435 __STATIC_INLINE void LL_PWR_ClearFlag_WU(void)
1436 {
1437 WRITE_REG(PWR->SCR, PWR_SCR_CWUF);
1438 }
1439
1440 /**
1441 * @brief Clear Wake-up Flag 5
1442 * @rmtoll SCR CWUF5 LL_PWR_ClearFlag_WU5
1443 * @retval None
1444 */
LL_PWR_ClearFlag_WU5(void)1445 __STATIC_INLINE void LL_PWR_ClearFlag_WU5(void)
1446 {
1447 WRITE_REG(PWR->SCR, PWR_SCR_CWUF5);
1448 }
1449
1450 /**
1451 * @brief Clear Wake-up Flag 4
1452 * @rmtoll SCR CWUF4 LL_PWR_ClearFlag_WU4
1453 * @retval None
1454 */
LL_PWR_ClearFlag_WU4(void)1455 __STATIC_INLINE void LL_PWR_ClearFlag_WU4(void)
1456 {
1457 WRITE_REG(PWR->SCR, PWR_SCR_CWUF4);
1458 }
1459
1460 /**
1461 * @brief Clear Wake-up Flag 3
1462 * @rmtoll SCR CWUF3 LL_PWR_ClearFlag_WU3
1463 * @retval None
1464 */
LL_PWR_ClearFlag_WU3(void)1465 __STATIC_INLINE void LL_PWR_ClearFlag_WU3(void)
1466 {
1467 WRITE_REG(PWR->SCR, PWR_SCR_CWUF3);
1468 }
1469
1470 /**
1471 * @brief Clear Wake-up Flag 2
1472 * @rmtoll SCR CWUF2 LL_PWR_ClearFlag_WU2
1473 * @retval None
1474 */
LL_PWR_ClearFlag_WU2(void)1475 __STATIC_INLINE void LL_PWR_ClearFlag_WU2(void)
1476 {
1477 WRITE_REG(PWR->SCR, PWR_SCR_CWUF2);
1478 }
1479
1480 /**
1481 * @brief Clear Wake-up Flag 1
1482 * @rmtoll SCR CWUF1 LL_PWR_ClearFlag_WU1
1483 * @retval None
1484 */
LL_PWR_ClearFlag_WU1(void)1485 __STATIC_INLINE void LL_PWR_ClearFlag_WU1(void)
1486 {
1487 WRITE_REG(PWR->SCR, PWR_SCR_CWUF1);
1488 }
1489
1490 /**
1491 * @brief Indicate whether VDDA voltage is below or above PVM4 threshold
1492 * @rmtoll SR2 PVMO4 LL_PWR_IsActiveFlag_PVMO4
1493 * @retval State of bit (1 or 0).
1494 */
LL_PWR_IsActiveFlag_PVMO4(void)1495 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO4(void)
1496 {
1497 return ((READ_BIT(PWR->SR2, PWR_SR2_PVMO4) == (PWR_SR2_PVMO4)) ? 1UL : 0UL);
1498 }
1499
1500 /**
1501 * @brief Indicate whether VDDA voltage is below or above PVM3 threshold
1502 * @rmtoll SR2 PVMO3 LL_PWR_IsActiveFlag_PVMO3
1503 * @retval State of bit (1 or 0).
1504 */
LL_PWR_IsActiveFlag_PVMO3(void)1505 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO3(void)
1506 {
1507 return ((READ_BIT(PWR->SR2, PWR_SR2_PVMO3) == (PWR_SR2_PVMO3)) ? 1UL : 0UL);
1508 }
1509
1510 /**
1511 * @brief Indicate whether VDDIO2 voltage is below or above PVM2 threshold
1512 * @rmtoll SR2 PVMO2 LL_PWR_IsActiveFlag_PVMO2
1513 * @retval State of bit (1 or 0).
1514 */
LL_PWR_IsActiveFlag_PVMO2(void)1515 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO2(void)
1516 {
1517 return ((READ_BIT(PWR->SR2, PWR_SR2_PVMO2) == (PWR_SR2_PVMO2)) ? 1UL : 0UL);
1518 }
1519
1520 /**
1521 * @brief Indicate whether VDDUSB voltage is below or above PVM1 threshold
1522 * @rmtoll SR2 PVMO1 LL_PWR_IsActiveFlag_PVMO1
1523 * @retval State of bit (1 or 0).
1524 */
LL_PWR_IsActiveFlag_PVMO1(void)1525 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO1(void)
1526 {
1527 return ((READ_BIT(PWR->SR2, PWR_SR2_PVMO1) == (PWR_SR2_PVMO1)) ? 1UL : 0UL);
1528 }
1529
1530 /**
1531 * @brief Indicate whether VDD voltage is below or above the selected PVD threshold
1532 * @rmtoll SR2 PVDO LL_PWR_IsActiveFlag_PVDO
1533 * @retval State of bit (1 or 0).
1534 */
LL_PWR_IsActiveFlag_PVDO(void)1535 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(void)
1536 {
1537 return ((READ_BIT(PWR->SR2, PWR_SR2_PVDO) == (PWR_SR2_PVDO)) ? 1UL : 0UL);
1538 }
1539
1540 /**
1541 * @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
1542 * @rmtoll SR2 VOSF LL_PWR_IsActiveFlag_VOS
1543 * @retval State of bit (1 or 0).
1544 */
LL_PWR_IsActiveFlag_VOS(void)1545 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VOS(void)
1546 {
1547 return ((READ_BIT(PWR->SR2, PWR_SR2_VOSF) == (PWR_SR2_VOSF)) ? 1UL : 0UL);
1548 }
1549
1550 /**
1551 * @brief Indicate whether the regulator is ready in main mode or is in low-power mode
1552 * @note: Take care, return value "0" means the regulator is ready. Return value "1" means the output voltage range is still changing.
1553 * @rmtoll SR2 REGLPF LL_PWR_IsActiveFlag_REGLPF
1554 * @retval State of bit (1 or 0).
1555 */
LL_PWR_IsActiveFlag_REGLPF(void)1556 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_REGLPF(void)
1557 {
1558 return ((READ_BIT(PWR->SR2, PWR_SR2_REGLPF) == (PWR_SR2_REGLPF)) ? 1UL : 0UL);
1559 }
1560
1561 /**
1562 * @brief Indicate whether or not the low-power regulator is ready
1563 * @rmtoll SR2 REGLPS LL_PWR_IsActiveFlag_REGLPS
1564 * @retval State of bit (1 or 0).
1565 */
LL_PWR_IsActiveFlag_REGLPS(void)1566 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_REGLPS(void)
1567 {
1568 return ((READ_BIT(PWR->SR2, PWR_SR2_REGLPS) == (PWR_SR2_REGLPS)) ? 1UL : 0UL);
1569 }
1570
1571 /**
1572 * @}
1573 */
1574
1575 /** @defgroup PWR_LL_EF_Privilege_Management Privilege_Management
1576 * @{
1577 */
1578
1579 /**
1580 * @brief Enable Privileged mode
1581 * @rmtoll PRIVCFGR PRIV LL_PWR_EnablePrivilege
1582 * @retval None
1583 */
LL_PWR_EnablePrivilege(void)1584 __STATIC_INLINE void LL_PWR_EnablePrivilege(void)
1585 {
1586 SET_BIT(PWR->PRIVCFGR, PWR_PRIVCFGR_PRIV);
1587 }
1588
1589 /**
1590 * @brief Disable Privileged mode
1591 * @rmtoll PRIVCFGR PRIV LL_PWR_DisablePrivilege
1592 * @retval None
1593 */
LL_PWR_DisablePrivilege(void)1594 __STATIC_INLINE void LL_PWR_DisablePrivilege(void)
1595 {
1596 CLEAR_BIT(PWR->PRIVCFGR, PWR_PRIVCFGR_PRIV);
1597 }
1598
1599 /**
1600 * @brief Check if Privileged mode has been enabled or not
1601 * @rmtoll PRIVCFGR PRIV LL_PWR_IsEnabledPrivilege
1602 * @retval State of bit (1 or 0).
1603 */
LL_PWR_IsEnabledPrivilege(void)1604 __STATIC_INLINE uint32_t LL_PWR_IsEnabledPrivilege(void)
1605 {
1606 return ((READ_BIT(PWR->PRIVCFGR, PWR_PRIVCFGR_PRIV) == PWR_PRIVCFGR_PRIV) ? 1UL : 0UL);
1607 }
1608
1609 /**
1610 * @}
1611 */
1612
1613 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
1614
1615 /** @defgroup PWR_LL_EF_Secure_Management Secure_Management
1616 * @{
1617 */
1618
1619 /**
1620 * @brief Configure Secure mode
1621 * @note Only available from secure state when system implements security (TZEN=1)
1622 * @rmtoll SECCFGR WUPSEC LL_PWR_ConfigSecure\n
1623 * SECCFGR WUP1SEC LL_PWR_ConfigSecure\n
1624 * SECCFGR WUP2SEC LL_PWR_ConfigSecure\n
1625 * SECCFGR WUP3SEC LL_PWR_ConfigSecure\n
1626 * SECCFGR WUP4SEC LL_PWR_ConfigSecure\n
1627 * SECCFGR WUP5SEC LL_PWR_ConfigSecure\n
1628 * SECCFGR LPMSEC LL_PWR_ConfigSecure\n
1629 * SECCFGR VDMSEC LL_PWR_ConfigSecure\n
1630 * SECCFGR VBSEC LL_PWR_ConfigSecure\n
1631 * SECCFGR APCSEC LL_PWR_ConfigSecure
1632 * @param Configuration This parameter shall be the full combination
1633 * of the following values:
1634 * @arg @ref LL_PWR_WAKEUP_PINS_SEC or LL_PWR_WAKEUP_PINS_NSEC
1635 * @arg @ref LL_PWR_WAKEUP_PIN1_SEC or LL_PWR_WAKEUP_PIN1_NSEC
1636 * @arg @ref LL_PWR_WAKEUP_PIN2_SEC or LL_PWR_WAKEUP_PIN2_NSEC
1637 * @arg @ref LL_PWR_WAKEUP_PIN3_SEC or LL_PWR_WAKEUP_PIN3_NSEC
1638 * @arg @ref LL_PWR_WAKEUP_PIN4_SEC or LL_PWR_WAKEUP_PIN4_NSEC
1639 * @arg @ref LL_PWR_WAKEUP_PIN5_SEC or LL_PWR_WAKEUP_PIN5_NSEC
1640 * @arg @ref LL_PWR_LPM_SEC or LL_PWR_LPM_NSEC
1641 * @arg @ref LL_PWR_VDM_SEC or LL_PWR_VDM_NSEC
1642 * @arg @ref LL_PWR_VB_SEC or LL_PWR_VB_NSEC
1643 * @arg @ref LL_PWR_APC_SEC or LL_PWR_APC_NSEC
1644 * @retval None
1645 */
LL_PWR_ConfigSecure(uint32_t Configuration)1646 __STATIC_INLINE void LL_PWR_ConfigSecure(uint32_t Configuration)
1647 {
1648 WRITE_REG(PWR->SECCFGR, Configuration);
1649 }
1650
1651 /**
1652 * @brief Get Secure mode configuration
1653 * @note Only available from secure state when system implements security (TZEN=1)
1654 * @rmtoll SECCFGR WUPSEC LL_PWR_GetConfigSecure\n
1655 * SECCFGR WUP1SEC LL_PWR_GetConfigSecure\n
1656 * SECCFGR WUP2SEC LL_PWR_GetConfigSecure\n
1657 * SECCFGR WUP3SEC LL_PWR_GetConfigSecure\n
1658 * SECCFGR WUP4SEC LL_PWR_GetConfigSecure\n
1659 * SECCFGR WUP5SEC LL_PWR_GetConfigSecure\n
1660 * SECCFGR LPMSEC LL_PWR_GetConfigSecure\n
1661 * SECCFGR VDMSEC LL_PWR_GetConfigSecure\n
1662 * SECCFGR VBSEC LL_PWR_GetConfigSecure\n
1663 * SECCFGR APCSEC LL_PWR_GetConfigSecure
1664 * @retval Returned value is the combination of the following values:
1665 * @arg @ref LL_PWR_WAKEUP_PINS_SEC or LL_PWR_WAKEUP_PINS_NSEC
1666 * @arg @ref LL_PWR_WAKEUP_PIN1_SEC or LL_PWR_WAKEUP_PIN1_NSEC
1667 * @arg @ref LL_PWR_WAKEUP_PIN2_SEC or LL_PWR_WAKEUP_PIN2_NSEC
1668 * @arg @ref LL_PWR_WAKEUP_PIN3_SEC or LL_PWR_WAKEUP_PIN3_NSEC
1669 * @arg @ref LL_PWR_WAKEUP_PIN4_SEC or LL_PWR_WAKEUP_PIN4_NSEC
1670 * @arg @ref LL_PWR_WAKEUP_PIN5_SEC or LL_PWR_WAKEUP_PIN5_NSEC
1671 * @arg @ref LL_PWR_LPM_SEC or LL_PWR_LPM_NSEC
1672 * @arg @ref LL_PWR_VDM_SEC or LL_PWR_VDM_NSEC
1673 * @arg @ref LL_PWR_VB_SEC or LL_PWR_VB_NSEC
1674 * @arg @ref LL_PWR_APC_SEC or LL_PWR_APC_NSEC
1675 */
LL_PWR_GetConfigSecure(void)1676 __STATIC_INLINE uint32_t LL_PWR_GetConfigSecure(void)
1677 {
1678 return (uint32_t)(READ_REG(PWR->SECCFGR));
1679 }
1680
1681 /**
1682 * @}
1683 */
1684 #endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
1685
1686
1687 #if defined(USE_FULL_LL_DRIVER)
1688 /** @defgroup PWR_LL_EF_Init De-initialization function
1689 * @{
1690 */
1691 ErrorStatus LL_PWR_DeInit(void);
1692 /**
1693 * @}
1694 */
1695 #endif /* USE_FULL_LL_DRIVER */
1696
1697 /** @defgroup PWR_LL_EF_Legacy_Functions Legacy functions name
1698 * @{
1699 */
1700 /* Old functions name kept for legacy purpose, to be replaced by the */
1701 /* current functions name. */
1702 #define LL_PWR_IsActiveFlag_VOSF LL_PWR_IsActiveFlag_VOS
1703 /**
1704 * @}
1705 */
1706
1707 /**
1708 * @}
1709 */
1710
1711 /**
1712 * @}
1713 */
1714
1715 #endif /* defined(PWR) */
1716
1717 /**
1718 * @}
1719 */
1720
1721 #ifdef __cplusplus
1722 }
1723 #endif
1724
1725 #endif /* STM32L5xx_LL_PWR_H */
1726