1 /**
2   ******************************************************************************
3   * @file    stm32u0xx_ll_pwr.h
4   * @author  MCD Application Team
5   * @brief   Header file of PWR LL module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2023 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 STM32U0xx_LL_PWR_H
21 #define STM32U0xx_LL_PWR_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32u0xx.h"
29 
30 /** @addtogroup STM32U0xx_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 
47 /** @defgroup PWR_LL_Exported_Constants PWR Exported Constants
48   * @{
49   */
50 
51 /** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines
52   * @brief    Flags defines which can be used with LL_PWR_WriteReg function
53   * @{
54   */
55 #define LL_PWR_SCR_CSBF                    PWR_SCR_CSBF
56 #define LL_PWR_SCR_CWUF7                   PWR_SCR_CWUF7
57 #define LL_PWR_SCR_CWUF5                   PWR_SCR_CWUF5
58 #define LL_PWR_SCR_CWUF4                   PWR_SCR_CWUF4
59 #define LL_PWR_SCR_CWUF3                   PWR_SCR_CWUF3
60 #define LL_PWR_SCR_CWUF2                   PWR_SCR_CWUF2
61 #define LL_PWR_SCR_CWUF1                   PWR_SCR_CWUF1
62 /**
63   * @}
64   */
65 
66 /** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines
67   * @brief    Flags defines which can be used with LL_PWR_ReadReg function
68   * @{
69   */
70 #define LL_PWR_SR1_WUFI                    PWR_SR1_WUFI
71 #define LL_PWR_SR1_STOP2                   (PWR_SR1_STOPF_2 | PWR_SR1_STOPF_1)
72 #define LL_PWR_SR1_STOP1                   (PWR_SR1_STOPF_2 | PWR_SR1_STOPF_0)
73 #define LL_PWR_SR1_STOP0                   PWR_SR1_STOPF_2
74 #define LL_PWR_SR1_SBF                     PWR_SR1_SBF
75 #define LL_PWR_SR1_WUF7                    PWR_SR1_WUF7
76 #define LL_PWR_SR1_WUF5                    PWR_SR1_WUF5
77 #define LL_PWR_SR1_WUF4                    PWR_SR1_WUF4
78 #define LL_PWR_SR1_WUF3                    PWR_SR1_WUF3
79 #define LL_PWR_SR1_WUF2                    PWR_SR1_WUF2
80 #define LL_PWR_SR1_WUF1                    PWR_SR1_WUF1
81 #define LL_PWR_SR2_PVMO4                   PWR_SR2_PVMO4
82 #define LL_PWR_SR2_PVMO3                   PWR_SR2_PVMO3
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 #define LL_PWR_SR2_FLASHRDY                PWR_SR2_FLASH_RDY
89 /**
90   * @}
91   */
92 
93 /** @defgroup PWR_LL_EC_REGU_VOLTAGE REGU VOLTAGE
94   * @{
95   */
96 #define LL_PWR_CR1_LPR                     PWR_CR1_LPR
97 /**
98   * @}
99   */
100 
101 /** @defgroup PWR_LL_EC_REGU_VOLTAGE REGU VOLTAGE
102   * @{
103   */
104 #define LL_PWR_REGU_VOLTAGE_SCALE1         PWR_CR1_VOS_0
105 #define LL_PWR_REGU_VOLTAGE_SCALE2         PWR_CR1_VOS_1
106 /**
107   * @}
108   */
109 
110 /** @defgroup PWR_LL_EC_MODE_PWR MODE PWR
111   * @{
112   */
113 #define LL_PWR_MODE_STOP0                  0x00000000U
114 #define LL_PWR_MODE_STOP1                  PWR_CR1_LPMS_0
115 #define LL_PWR_MODE_STOP2                  PWR_CR1_LPMS_1
116 #define LL_PWR_MODE_STANDBY                (PWR_CR1_LPMS_1 | PWR_CR1_LPMS_0)
117 #define LL_PWR_MODE_SHUTDOWN               PWR_CR1_LPMS_2
118 /**
119   * @}
120   */
121 
122 #define LL_PWR_CR1_DBP                    PWR_CR1_DBP
123 #define LL_PWR_CR1_FPD_LPSLP              PWR_CR1_FPD_LPSLP
124 #define LL_PWR_CR1_FPD_LPRUN              PWR_CR1_FPD_LPRUN
125 #define LL_PWR_CR1_FPD_STOP               PWR_CR1_FPD_STOP
126 
127 /** @defgroup PWR_LL_EC_PVM_VDDUSB_1 Peripheral voltage monitoring
128   * @{
129   */
130 #if defined(USB_DRD_FS)
131 #define LL_PWR_PVM_VDDUSB_1_2V             PWR_CR2_PVME1             /* Monitoring VDDUSB vs. 1.2V */
132 #endif /* USB_DRD_FS */
133 #define LL_PWR_PVM_VDDA_1_62V              PWR_CR2_PVME3             /* Monitoring VDDA_P vs. 1.62V  */
134 #define LL_PWR_PVM_VDDA_2_2V               PWR_CR2_PVME4             /* Monitoring VDDA_P vs. 2.2V   */
135 /**
136   * @}
137   */
138 
139 /** @defgroup PWR_LL_EC_PVDLEVEL PVDLEVEL
140   * @{
141   */
142 #define LL_PWR_PVDLEVEL_0       0x00000000U                                       /* VPVD0 around 2.0 V */
143 #define LL_PWR_PVDLEVEL_1       PWR_CR2_PLS_0                                     /* VPVD1 around 2.2 V */
144 #define LL_PWR_PVDLEVEL_2       PWR_CR2_PLS_1                                     /* VPVD2 around 2.4 V */
145 #define LL_PWR_PVDLEVEL_3       (PWR_CR2_PLS_1 | PWR_CR2_PLS_0)                   /* VPVD3 around 2.5 V */
146 #define LL_PWR_PVDLEVEL_4       PWR_CR2_PLS_2                                     /* VPVD4 around 2.6 V */
147 #define LL_PWR_PVDLEVEL_5       (PWR_CR2_PLS_2 | PWR_CR2_PLS_0)                   /* VPVD5 around 2.8 V */
148 #define LL_PWR_PVDLEVEL_6       (PWR_CR2_PLS_2 | PWR_CR2_PLS_1)                   /* VPVD6 around 2.9 V */
149 #define LL_PWR_PVDLEVEL_7       (PWR_CR2_PLS_2 | PWR_CR2_PLS_1 | PWR_CR2_PLS_0)   /* External input analog voltage
150                                                                                      (Compare internally to VREFINT) */
151 /**
152   * @}
153   */
154 
155 /** @defgroup PWR_LL_EC_WAKEUP WAKEUP
156   * @{
157   */
158 #define LL_PWR_WAKEUP_PIN1                 PWR_CR3_EWUP1
159 #define LL_PWR_WAKEUP_PIN2                 PWR_CR3_EWUP2
160 #define LL_PWR_WAKEUP_PIN3                 PWR_CR3_EWUP3
161 #define LL_PWR_WAKEUP_PIN4                 PWR_CR3_EWUP4
162 #define LL_PWR_WAKEUP_PIN5                 PWR_CR3_EWUP5
163 #define LL_PWR_WAKEUP_PIN7                 PWR_CR3_EWUP7
164 /**
165   * @}
166   */
167 
168 /** @defgroup PWR_LL_EC_BATT_CHARG_RESISTOR BATT CHARG RESISTOR
169   * @{
170   */
171 #define LL_PWR_BATT_CHARG_RESISTOR_5K      0U
172 #define LL_PWR_BATT_CHARGRESISTOR_1_5K     PWR_CR4_VBRS
173 /**
174   * @}
175   */
176 
177 /** @defgroup PWR_LL_EC_SRAM_CONTENT_RETENTION SRAM CONTENT RETENTION
178   * @{
179   */
180 #define LL_PWR_NO_SRAM_RETENTION        0U
181 #define LL_PWR_FULL_SRAM_RETENTION      PWR_CR3_RRS
182 
183 /**
184   * @}
185   */
186 /** @defgroup PWR_LL_EC_GPIO GPIO
187   * @{
188   */
189 #define LL_PWR_GPIO_A                      ((uint32_t)(&(PWR->PUCRA)))
190 #define LL_PWR_GPIO_B                      ((uint32_t)(&(PWR->PUCRB)))
191 #define LL_PWR_GPIO_C                      ((uint32_t)(&(PWR->PUCRC)))
192 #define LL_PWR_GPIO_D                      ((uint32_t)(&(PWR->PUCRD)))
193 #if defined (GPIOE)
194 #define LL_PWR_GPIO_E                      ((uint32_t)(&(PWR->PUCRE)))
195 #endif /* GPIOE */
196 #define LL_PWR_GPIO_F                      ((uint32_t)(&(PWR->PUCRF)))
197 /**
198   * @}
199   */
200 
201 /** @defgroup PWR_LL_EC_GPIO_BIT GPIO BIT
202   * @{
203   */
204 #define LL_PWR_GPIO_BIT_0                  0x00000001U
205 #define LL_PWR_GPIO_BIT_1                  0x00000002U
206 #define LL_PWR_GPIO_BIT_2                  0x00000004U
207 #define LL_PWR_GPIO_BIT_3                  0x00000008U
208 #define LL_PWR_GPIO_BIT_4                  0x00000010U
209 #define LL_PWR_GPIO_BIT_5                  0x00000020U
210 #define LL_PWR_GPIO_BIT_6                  0x00000040U
211 #define LL_PWR_GPIO_BIT_7                  0x00000080U
212 #define LL_PWR_GPIO_BIT_8                  0x00000100U
213 #define LL_PWR_GPIO_BIT_9                  0x00000200U
214 #define LL_PWR_GPIO_BIT_10                 0x00000400U
215 #define LL_PWR_GPIO_BIT_11                 0x00000800U
216 #define LL_PWR_GPIO_BIT_12                 0x00001000U
217 #define LL_PWR_GPIO_BIT_13                 0x00002000U
218 #define LL_PWR_GPIO_BIT_14                 0x00004000U
219 #define LL_PWR_GPIO_BIT_15                 0x00008000U
220 /**
221   * @}
222   */
223 
224 /**
225   * @}
226   */
227 
228 /* Exported macro ------------------------------------------------------------*/
229 /** @defgroup PWR_LL_Exported_Macros PWR Exported Macros
230   * @{
231   */
232 
233 /** @defgroup PWR_LL_EM_WRITE_READ Common Write and read registers Macros
234   * @{
235   */
236 
237 /**
238   * @brief  Write a value in PWR register
239   * @param  __REG__ Register to be written
240   * @param  __VALUE__ Value to be written in the register
241   * @retval None
242   */
243 #define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__))
244 
245 /**
246   * @brief  Read a value in PWR register
247   * @param  __REG__ Register to be read
248   * @retval Register value
249   */
250 #define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__)
251 /**
252   * @}
253   */
254 
255 /**
256   * @}
257   */
258 
259 /* Exported functions --------------------------------------------------------*/
260 /** @defgroup PWR_LL_Exported_Functions PWR Exported Functions
261   * @{
262   */
263 
264 /** @defgroup PWR_LL_EF_Configuration Configuration
265   * @{
266   */
267 
268 /**
269   * @brief  Set Low-Power mode
270   * @rmtoll CR1          LPMS          LL_PWR_SetPowerMode
271   * @param  LowPowerMode This parameter can be one of the following values:
272   *         @arg @ref LL_PWR_MODE_STOP0
273   *         @arg @ref LL_PWR_MODE_STOP1
274   *         @arg @ref LL_PWR_MODE_STOP2
275   *         @arg @ref LL_PWR_MODE_STANDBY
276   *         @arg @ref LL_PWR_MODE_SHUTDOWN
277   * @retval None
278   */
LL_PWR_SetPowerMode(uint32_t LowPowerMode)279 __STATIC_INLINE void LL_PWR_SetPowerMode(uint32_t LowPowerMode)
280 {
281   MODIFY_REG(PWR->CR1, PWR_CR1_LPMS, LowPowerMode);
282 }
283 
284 /**
285   * @brief  Get Low-Power mode
286   * @rmtoll CR1          LPMS          LL_PWR_GetPowerMode
287   * @retval Returned value can be one of the following values:
288   *         @arg @ref LL_PWR_MODE_STOP0
289   *         @arg @ref LL_PWR_MODE_STOP1
290   *         @arg @ref LL_PWR_MODE_STOP2
291   *         @arg @ref LL_PWR_MODE_STANDBY
292   *         @arg @ref LL_PWR_MODE_SHUTDOWN
293   */
LL_PWR_GetPowerMode(void)294 __STATIC_INLINE uint32_t LL_PWR_GetPowerMode(void)
295 {
296   return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_LPMS));
297 }
298 
299 /**
300   * @brief  Enable Flash Pwr Down Mode during Stop
301   * @rmtoll CR1          FPD_STOP           LL_PWR_EnableFlashPWRDownModeDuringStop
302   * @retval None
303   */
LL_PWR_EnableFlashPWRDownModeDuringStop(void)304 __STATIC_INLINE void LL_PWR_EnableFlashPWRDownModeDuringStop(void)
305 {
306   SET_BIT(PWR->CR1, PWR_CR1_FPD_STOP);
307 }
308 
309 /**
310   * @brief  Disable Flash Pwr Down Mode during Stop
311   * @rmtoll CR1          FPD_STOP          LL_PWR_DisableFlashPWRDownModeDuringStop
312   * @retval None
313   */
LL_PWR_DisableFlashPWRDownModeDuringStop(void)314 __STATIC_INLINE void LL_PWR_DisableFlashPWRDownModeDuringStop(void)
315 {
316   CLEAR_BIT(PWR->CR1, PWR_CR1_FPD_STOP);
317 }
318 
319 /**
320   * @brief  Check if Flash Pwr Down Mode during Stop is enabled
321   * @rmtoll CR1          FPD_STOP           LL_PWR_IsEnabledFlashPWRDownModeDuringSTOP
322   * @retval State of bit (1 or 0).
323   */
LL_PWR_IsEnabledFlashPWRDownModeDuringSTOP(void)324 __STATIC_INLINE uint32_t LL_PWR_IsEnabledFlashPWRDownModeDuringSTOP(void)
325 {
326   return ((READ_BIT(PWR->CR1, PWR_CR1_FPD_STOP) == (PWR_CR1_FPD_STOP)) ? 1UL : 0UL);
327 }
328 
329 /**
330   * @brief  Enable Flash Pwr Down Mode during LP run
331   * @rmtoll CR1          FPD_LPRUN           LL_PWR_EnableFlashPWRDownModeDuringLPRun
332   * @retval None
333   */
LL_PWR_EnableFlashPWRDownModeDuringLPRun(void)334 __STATIC_INLINE void LL_PWR_EnableFlashPWRDownModeDuringLPRun(void)
335 {
336   SET_BIT(PWR->CR1, PWR_CR1_FPD_LPRUN);
337 }
338 
339 /**
340   * @brief  Disable Flash Pwr Down Mode during LP run
341   * @rmtoll CR1          FPD_LPRUN          LL_PWR_DisableFlashPWRDownModeDuringLPRun
342   * @retval None
343   */
LL_PWR_DisableFlashPWRDownModeDuringLPRun(void)344 __STATIC_INLINE void LL_PWR_DisableFlashPWRDownModeDuringLPRun(void)
345 {
346   CLEAR_BIT(PWR->CR1, PWR_CR1_FPD_LPRUN);
347 }
348 
349 /**
350   * @brief  Check if Flash Pwr Down Mode during LP run is enabled
351   * @rmtoll CR1          FPD_LPRUN           LL_PWR_IsEnabledFlashPWRDownModeDuringLPRun
352   * @retval State of bit (1 or 0).
353   */
LL_PWR_IsEnabledFlashPWRDownModeDuringLPRun(void)354 __STATIC_INLINE uint32_t LL_PWR_IsEnabledFlashPWRDownModeDuringLPRun(void)
355 {
356   return ((READ_BIT(PWR->CR1, PWR_CR1_FPD_LPRUN) == (PWR_CR1_FPD_LPRUN)) ? 1UL : 0UL);
357 }
358 
359 /**
360   * @brief  Enable Flash Pwr Down Mode during LP Sleep
361   * @rmtoll CR1          FPD_LPSLP           LL_PWR_EnableFlashPWRDownModeDuringSleeep
362   * @retval None
363   */
LL_PWR_EnableFlashPWRDownModeDuringSleeep(void)364 __STATIC_INLINE void LL_PWR_EnableFlashPWRDownModeDuringSleeep(void)
365 {
366   SET_BIT(PWR->CR1, PWR_CR1_FPD_LPSLP);
367 }
368 
369 /**
370   * @brief  Disable Flash Pwr Down Mode during LP Sleep
371   * @rmtoll CR1          FPD_LPSLP           LL_PWR_DisableFlashPWRDownModeDuringSleeep
372   * @retval None
373   */
LL_PWR_DisableFlashPWRDownModeDuringSleeep(void)374 __STATIC_INLINE void LL_PWR_DisableFlashPWRDownModeDuringSleeep(void)
375 {
376   CLEAR_BIT(PWR->CR1, PWR_CR1_FPD_LPSLP);
377 }
378 
379 /**
380   * @brief  Check if Flash Pwr Down Mode is enabled during Sleep
381   * @rmtoll CR1          FPD_LPSLP           LL_PWR_IsEnabledFlashPWRDownModeDuringSleeep
382   * @retval State of bit (1 or 0).
383   */
LL_PWR_IsEnabledFlashPWRDownModeDuringSleeep(void)384 __STATIC_INLINE uint32_t LL_PWR_IsEnabledFlashPWRDownModeDuringSleeep(void)
385 {
386   return ((READ_BIT(PWR->CR1, PWR_CR1_FPD_LPSLP) == (PWR_CR1_FPD_LPSLP)) ? 1UL : 0UL);
387 }
388 
389 /**
390   * @brief  Enable access to the backup domain
391   * @rmtoll CR1          DBP           LL_PWR_EnableBkUpAccess
392   * @retval None
393   */
LL_PWR_EnableBkUpAccess(void)394 __STATIC_INLINE void LL_PWR_EnableBkUpAccess(void)
395 {
396   SET_BIT(PWR->CR1, PWR_CR1_DBP);
397 }
398 
399 /**
400   * @brief  Disable access to the backup domain
401   * @rmtoll CR1          DBP           LL_PWR_DisableBkUpAccess
402   * @retval None
403   */
LL_PWR_DisableBkUpAccess(void)404 __STATIC_INLINE void LL_PWR_DisableBkUpAccess(void)
405 {
406   CLEAR_BIT(PWR->CR1, PWR_CR1_DBP);
407 }
408 
409 /**
410   * @brief  Check if the backup domain is enabled
411   * @rmtoll CR1          DBP           LL_PWR_IsEnabledBkUpAccess
412   * @retval State of bit (1 or 0).
413   */
LL_PWR_IsEnabledBkUpAccess(void)414 __STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void)
415 {
416   return ((READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP)) ? 1UL : 0UL);
417 }
418 
419 /**
420   * @brief  Set the main internal regulator output voltage
421   * @rmtoll CR1          VOS           LL_PWR_SetRegulVoltageScaling
422   * @param  VoltageScaling This parameter can be one of the following values:
423   *         @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1
424   *         @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2
425   * @retval None
426   */
LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling)427 __STATIC_INLINE void LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling)
428 {
429   MODIFY_REG(PWR->CR1, PWR_CR1_VOS, VoltageScaling);
430 }
431 
432 /**
433   * @brief  Get the main internal regulator output voltage
434   * @rmtoll CR1          VOS           LL_PWR_GetRegulVoltageScaling
435   * @retval Returned value can be one of the following values:
436   *         @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1
437   *         @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2
438   */
LL_PWR_GetRegulVoltageScaling(void)439 __STATIC_INLINE uint32_t LL_PWR_GetRegulVoltageScaling(void)
440 {
441   return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_VOS));
442 }
443 /**
444   * @brief  Switch the regulator from main mode to low-power mode
445   * @rmtoll CR1          LPR           LL_PWR_EnableLowPowerRunMode
446   * @retval None
447   */
LL_PWR_EnableLowPowerRunMode(void)448 __STATIC_INLINE void LL_PWR_EnableLowPowerRunMode(void)
449 {
450   SET_BIT(PWR->CR1, PWR_CR1_LPR);
451 }
452 
453 /**
454   * @brief  Switch the regulator from low-power mode to main mode
455   * @rmtoll CR1          LPR           LL_PWR_DisableLowPowerRunMode
456   * @retval None
457   */
LL_PWR_DisableLowPowerRunMode(void)458 __STATIC_INLINE void LL_PWR_DisableLowPowerRunMode(void)
459 {
460   CLEAR_BIT(PWR->CR1, PWR_CR1_LPR);
461 }
462 
463 /**  * @brief  Switch from run main mode to run low-power mode.
464   * @rmtoll CR1          LPR           LL_PWR_EnterLowPowerRunMode
465   * @retval None
466   */
LL_PWR_EnterLowPowerRunMode(void)467 __STATIC_INLINE void LL_PWR_EnterLowPowerRunMode(void)
468 {
469   LL_PWR_EnableLowPowerRunMode();
470 }
471 
472 /**
473   * @brief  Switch from run main mode to low-power mode.
474   * @rmtoll CR1          LPR           LL_PWR_ExitLowPowerRunMode
475   * @retval None
476   */
LL_PWR_ExitLowPowerRunMode(void)477 __STATIC_INLINE void LL_PWR_ExitLowPowerRunMode(void)
478 {
479   LL_PWR_DisableLowPowerRunMode();
480 }
481 
482 /**
483   * @brief  Check if the regulator is in low-power mode
484   * @rmtoll CR1          LPR           LL_PWR_IsEnabledLowPowerRunMode
485   * @retval State of bit (1 or 0).
486   */
LL_PWR_IsEnabledLowPowerRunMode(void)487 __STATIC_INLINE uint32_t LL_PWR_IsEnabledLowPowerRunMode(void)
488 {
489   return ((READ_BIT(PWR->CR1, PWR_CR1_LPR) == (PWR_CR1_LPR)) ? 1UL : 0UL);
490 }
491 
492 /**
493   * @brief  Enable Power Voltage Detector
494   * @rmtoll CR2          PVDE          LL_PWR_EnablePVD
495   * @retval None
496   */
LL_PWR_EnablePVD(void)497 __STATIC_INLINE void LL_PWR_EnablePVD(void)
498 {
499   SET_BIT(PWR->CR2, PWR_CR2_PVDE);
500 }
501 
502 /**
503   * @brief  Disable Power Voltage Detector
504   * @rmtoll CR2          PVDE          LL_PWR_DisablePVD
505   * @retval None
506   */
LL_PWR_DisablePVD(void)507 __STATIC_INLINE void LL_PWR_DisablePVD(void)
508 {
509   CLEAR_BIT(PWR->CR2, PWR_CR2_PVDE);
510 }
511 
512 /**
513   * @brief  Check if Power Voltage Detector is enabled
514   * @rmtoll CR2          PVDE          LL_PWR_IsEnabledPVD
515   * @retval State of bit (1 or 0).
516   */
LL_PWR_IsEnabledPVD(void)517 __STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(void)
518 {
519   return ((READ_BIT(PWR->CR2, PWR_CR2_PVDE) == (PWR_CR2_PVDE)) ? 1UL : 0UL);
520 }
521 
522 /**
523   * @brief  Configure the voltage threshold detected by the Power Voltage Detector
524   * @rmtoll CR2          PLS           LL_PWR_SetPVDLevel
525   * @param  PVDLevel This parameter can be one of the following values:
526   *         @arg @ref LL_PWR_PVDLEVEL_0
527   *         @arg @ref LL_PWR_PVDLEVEL_1
528   *         @arg @ref LL_PWR_PVDLEVEL_2
529   *         @arg @ref LL_PWR_PVDLEVEL_3
530   *         @arg @ref LL_PWR_PVDLEVEL_4
531   *         @arg @ref LL_PWR_PVDLEVEL_5
532   *         @arg @ref LL_PWR_PVDLEVEL_6
533   *         @arg @ref LL_PWR_PVDLEVEL_7
534   * @retval None
535   */
LL_PWR_SetPVDLevel(uint32_t PVDLevel)536 __STATIC_INLINE void LL_PWR_SetPVDLevel(uint32_t PVDLevel)
537 {
538   MODIFY_REG(PWR->CR2, PWR_CR2_PLS, PVDLevel);
539 }
540 
541 /**
542   * @brief  Get the voltage threshold detection
543   * @rmtoll CR2          PLS           LL_PWR_GetPVDLevel
544   * @retval Returned value can be one of the following values:
545   *         @arg @ref LL_PWR_PVDLEVEL_0
546   *         @arg @ref LL_PWR_PVDLEVEL_1
547   *         @arg @ref LL_PWR_PVDLEVEL_2
548   *         @arg @ref LL_PWR_PVDLEVEL_3
549   *         @arg @ref LL_PWR_PVDLEVEL_4
550   *         @arg @ref LL_PWR_PVDLEVEL_5
551   *         @arg @ref LL_PWR_PVDLEVEL_6
552   *         @arg @ref LL_PWR_PVDLEVEL_7
553   */
LL_PWR_GetPVDLevel(void)554 __STATIC_INLINE uint32_t LL_PWR_GetPVDLevel(void)
555 {
556   return (uint32_t)(READ_BIT(PWR->CR2, PWR_CR2_PLS));
557 }
558 
559 /**
560   * @brief  Enable the Power Voltage Monitoring on a peripheral
561   * @rmtoll CR2          PVME1         LL_PWR_EnablePVM\n
562   *         CR2          PVME2         LL_PWR_EnablePVM\n
563   *         CR2          PVME3         LL_PWR_EnablePVM\n
564   * @param  PeriphVoltage This parameter can be one of the following values:
565   *         @arg @ref LL_PWR_PVM_VDDUSB_1_2V (*)
566   *         @arg @ref LL_PWR_PVM_VDDA_1_62V
567   *         @arg @ref LL_PWR_PVM_VDDA_2_2V
568   *
569   *         (*) value not defined in all devices
570   * @retval None
571   */
LL_PWR_EnablePVM(uint32_t PeriphVoltage)572 __STATIC_INLINE void LL_PWR_EnablePVM(uint32_t PeriphVoltage)
573 {
574   SET_BIT(PWR->CR2, PeriphVoltage);
575 }
576 
577 /**
578   * @brief  Disable the Power Voltage Monitoring on a peripheral
579   * @rmtoll CR2          PVME1         LL_PWR_DisablePVM\n
580   *         CR2          PVME2         LL_PWR_DisablePVM\n
581   *         CR2          PVME3         LL_PWR_DisablePVM\n
582   * @param  PeriphVoltage This parameter can be one of the following values:
583   *         @arg @ref LL_PWR_PVM_VDDUSB_1_2V (*)
584   *         @arg @ref LL_PWR_PVM_VDDA_1_62V
585   *         @arg @ref LL_PWR_PVM_VDDA_2_2V
586   *
587   *         (*) value not defined in all devices
588   * @retval None
589   */
LL_PWR_DisablePVM(uint32_t PeriphVoltage)590 __STATIC_INLINE void LL_PWR_DisablePVM(uint32_t PeriphVoltage)
591 {
592   CLEAR_BIT(PWR->CR2, PeriphVoltage);
593 }
594 
595 /**
596   * @brief  Check if Power Voltage Monitoring is enabled on a peripheral
597   * @rmtoll CR2          PVME1         LL_PWR_IsEnabledPVM\n
598   *         CR2          PVME2         LL_PWR_IsEnabledPVM\n
599   *         CR2          PVME3         LL_PWR_IsEnabledPVM\n
600   * @param  PeriphVoltage This parameter can be one of the following values:
601   *         @arg @ref LL_PWR_PVM_VDDUSB_1_2V (*)
602   *         @arg @ref LL_PWR_PVM_VDDA_1_62V
603   *         @arg @ref LL_PWR_PVM_VDDA_2_2V
604   *
605   *         (*) value not defined in all devices
606   * @retval State of bit (1 or 0).
607   */
LL_PWR_IsEnabledPVM(uint32_t PeriphVoltage)608 __STATIC_INLINE uint32_t LL_PWR_IsEnabledPVM(uint32_t PeriphVoltage)
609 {
610   return ((READ_BIT(PWR->CR2, PeriphVoltage) == (PeriphVoltage)) ? 1UL : 0UL);
611 }
612 
613 #if defined(USB_DRD_FS)
614 /**
615   * @brief  Enable VDDUSB supply
616   * @rmtoll CR2          USV           LL_PWR_EnableVddUSB
617   * @retval None
618   */
LL_PWR_EnableVddUSB(void)619 __STATIC_INLINE void LL_PWR_EnableVddUSB(void)
620 {
621   SET_BIT(PWR->CR2, PWR_CR2_USV);
622 }
623 
624 /**
625   * @brief  Disable VDDUSB supply
626   * @rmtoll CR2          USV           LL_PWR_DisableVddUSB
627   * @retval None
628   */
LL_PWR_DisableVddUSB(void)629 __STATIC_INLINE void LL_PWR_DisableVddUSB(void)
630 {
631   CLEAR_BIT(PWR->CR2, PWR_CR2_USV);
632 }
633 
634 /**
635   * @brief  Check if VDDUSB supply is enabled
636   * @rmtoll CR2          USV           LL_PWR_IsEnabledVddUSB
637   * @retval State of bit (1 or 0).
638   */
LL_PWR_IsEnabledVddUSB(void)639 __STATIC_INLINE uint32_t LL_PWR_IsEnabledVddUSB(void)
640 {
641   return ((READ_BIT(PWR->CR2, PWR_CR2_USV) == (PWR_CR2_USV)) ? 1UL : 0UL);
642 }
643 #endif /* USB_DRD_FS */
644 
645 /**
646   * @brief  Enable the WakeUp PINx functionality
647   * @rmtoll CR3          EWUP1         LL_PWR_EnableWakeUpPin\n
648   *         CR3          EWUP2         LL_PWR_EnableWakeUpPin\n
649   *         CR3          EWUP3         LL_PWR_EnableWakeUpPin\n
650   *         CR3          EWUP4         LL_PWR_EnableWakeUpPin\n
651   *         CR3          EWUP5         LL_PWR_EnableWakeUpPin\n
652   *         CR3          EWUP7         LL_PWR_EnableWakeUpPin\n
653   * @param  WakeUpPin This parameter can be one of the following values:
654   *         @arg @ref LL_PWR_WAKEUP_PIN1
655   *         @arg @ref LL_PWR_WAKEUP_PIN2
656   *         @arg @ref LL_PWR_WAKEUP_PIN3
657   *         @arg @ref LL_PWR_WAKEUP_PIN4
658   *         @arg @ref LL_PWR_WAKEUP_PIN5
659   *         @arg @ref LL_PWR_WAKEUP_PIN7
660   * @retval None
661   */
LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin)662 __STATIC_INLINE void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin)
663 {
664   SET_BIT(PWR->CR3, WakeUpPin);
665 }
666 
667 /**
668   * @brief  Disable the WakeUp PINx functionality
669   * @rmtoll CR3          EWUP1         LL_PWR_DisableWakeUpPin\n
670   *         CR3          EWUP2         LL_PWR_DisableWakeUpPin\n
671   *         CR3          EWUP3         LL_PWR_DisableWakeUpPin\n
672   *         CR3          EWUP4         LL_PWR_DisableWakeUpPin\n
673   *         CR3          EWUP5         LL_PWR_DisableWakeUpPin\n
674   *         CR3          EWUP7         LL_PWR_DisableWakeUpPin\n
675   * @param  WakeUpPin This parameter can be one of the following values:
676   *         @arg @ref LL_PWR_WAKEUP_PIN1
677   *         @arg @ref LL_PWR_WAKEUP_PIN2
678   *         @arg @ref LL_PWR_WAKEUP_PIN3
679   *         @arg @ref LL_PWR_WAKEUP_PIN4
680   *         @arg @ref LL_PWR_WAKEUP_PIN5
681   *         @arg @ref LL_PWR_WAKEUP_PIN7
682   * @retval None
683   */
LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin)684 __STATIC_INLINE void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin)
685 {
686   CLEAR_BIT(PWR->CR3, WakeUpPin);
687 }
688 
689 /**
690   * @brief  Check if the WakeUp PINx functionality is enabled
691   * @rmtoll CR3          EWUP1         LL_PWR_IsEnabledWakeUpPin\n
692   *         CR3          EWUP2         LL_PWR_IsEnabledWakeUpPin\n
693   *         CR3          EWUP3         LL_PWR_IsEnabledWakeUpPin\n
694   *         CR3          EWUP4         LL_PWR_IsEnabledWakeUpPin\n
695   *         CR3          EWUP5         LL_PWR_IsEnabledWakeUpPin\n
696   *         CR3          EWUP7         LL_PWR_IsEnabledWakeUpPin\n
697   * @param  WakeUpPin This parameter can be one of the following values:
698   *         @arg @ref LL_PWR_WAKEUP_PIN1
699   *         @arg @ref LL_PWR_WAKEUP_PIN2
700   *         @arg @ref LL_PWR_WAKEUP_PIN3
701   *         @arg @ref LL_PWR_WAKEUP_PIN4
702   *         @arg @ref LL_PWR_WAKEUP_PIN5
703   *         @arg @ref LL_PWR_WAKEUP_PIN7
704   * @retval State of bit (1 or 0).
705   */
LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin)706 __STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin)
707 {
708   return ((READ_BIT(PWR->CR3, WakeUpPin) == (WakeUpPin)) ? 1UL : 0UL);
709 }
710 
711 /**
712   * @brief  Enable SRAM full content retention in Standby mode
713   * @rmtoll CR3          RRS           LL_PWR_EnableSRAMRetention
714   * @retval None
715   */
LL_PWR_EnableSRAMRetention(void)716 __STATIC_INLINE void LL_PWR_EnableSRAMRetention(void)
717 {
718   MODIFY_REG(PWR->CR3, PWR_CR3_RRS, LL_PWR_FULL_SRAM_RETENTION);
719 }
720 
721 /**
722   * @brief  Disable SRAM content retention in Standby mode
723   * @rmtoll CR3          RRS           LL_PWR_DisableSRAMRetention
724   * @retval None
725   */
LL_PWR_DisableSRAMRetention(void)726 __STATIC_INLINE void LL_PWR_DisableSRAMRetention(void)
727 {
728   CLEAR_BIT(PWR->CR3, PWR_CR3_RRS);
729 }
730 
731 /**
732   * @brief  Check if SRAM full content retention in Standby mode is enabled
733   * @rmtoll CR3          RRS           LL_PWR_IsEnabledSRAMRetention
734   * @retval State of bit (1 or 0).
735   */
LL_PWR_IsEnabledSRAMRetention(void)736 __STATIC_INLINE uint32_t LL_PWR_IsEnabledSRAMRetention(void)
737 {
738   return ((READ_BIT(PWR->CR3, PWR_CR3_RRS) == (LL_PWR_FULL_SRAM_RETENTION)) ? 1UL : 0UL);
739 }
740 
741 /**
742   * @brief  Set SRAM content retention in Standby mode
743   * @rmtoll CR3          RRS          LL_PWR_SetSRAMContentRetention
744   * @param  SRAMSize This parameter can be one of the following values:
745   *         @arg @ref LL_PWR_NO_SRAM_RETENTION
746   *         @arg @ref LL_PWR_FULL_SRAM_RETENTION
747   * @note  Setting LL_PWR_NO_SRAM_RETENTION is same as calling LL_PWR_DisableSRAMRetention()
748   * @note  Setting LL_PWR_FULL_SRAM_RETENTION is same as calling LL_PWR_EnableSRAMRetention()
749   * @retval None
750   */
LL_PWR_SetSRAMContentRetention(uint32_t SRAMSize)751 __STATIC_INLINE void LL_PWR_SetSRAMContentRetention(uint32_t SRAMSize)
752 {
753   MODIFY_REG(PWR->CR3, PWR_CR3_RRS, SRAMSize);
754 }
755 
756 /**
757   * @brief  Get SRAM content retention in Standby mode
758   * @rmtoll CR3          RRS          LL_PWR_GetSRAMContentRetention
759   * @retval Returned value can be one of the following values:
760   *         @arg @ref LL_PWR_NO_SRAM_RETENTION
761   *         @arg @ref LL_PWR_FULL_SRAM_RETENTION
762   */
LL_PWR_GetSRAMContentRetention(void)763 __STATIC_INLINE uint32_t LL_PWR_GetSRAMContentRetention(void)
764 {
765   return (uint32_t)(READ_BIT(PWR->CR3, PWR_CR3_RRS));
766 }
767 
768 /**
769   * @brief  Enable Ultra Low Power BORL, BORH and PVD for STOP2 and Standby modes
770   * @rmtoll CR3          ENULP        LL_PWR_EnableBORPVD_ULP
771   * @retval None
772   */
LL_PWR_EnableBORPVD_ULP(void)773 __STATIC_INLINE void LL_PWR_EnableBORPVD_ULP(void)
774 {
775   SET_BIT(PWR->CR3, PWR_CR3_ENULP);
776 }
777 
778 /**
779   * @brief  Disable Ultra Low Power BORL, BORH and PVD for STOP2 and Standby modes
780   * @rmtoll CR3          ENULP        LL_PWR_DisableBORPVD_ULP
781   * @retval None
782   */
LL_PWR_DisableBORPVD_ULP(void)783 __STATIC_INLINE void LL_PWR_DisableBORPVD_ULP(void)
784 {
785   CLEAR_BIT(PWR->CR3, PWR_CR3_ENULP);
786 }
787 
788 /**
789   * @brief  Check if Ultra Low Power BORL, BORH and PVD for STOP2 and Standby modes is enabled
790   * @rmtoll CR3          ENULP        LL_PWR_IsEnabledBORPVD_ULP
791   * @retval State of bit (1 or 0).
792   */
LL_PWR_IsEnabledBORPVD_ULP(void)793 __STATIC_INLINE uint32_t LL_PWR_IsEnabledBORPVD_ULP(void)
794 {
795   return ((READ_BIT(PWR->CR3, PWR_CR3_ENULP) == (PWR_CR3_ENULP)) ? 1UL : 0UL);
796 }
797 
798 /**
799   * @brief  Enable pull-up and pull-down configuration
800   * @rmtoll CR3          APC           LL_PWR_EnablePUPDCfg
801   * @retval None
802   */
LL_PWR_EnablePUPDCfg(void)803 __STATIC_INLINE void LL_PWR_EnablePUPDCfg(void)
804 {
805   SET_BIT(PWR->CR3, PWR_CR3_APC);
806 }
807 
808 /**
809   * @brief  Disable pull-up and pull-down configuration
810   * @rmtoll CR3          APC           LL_PWR_DisablePUPDCfg
811   * @retval None
812   */
LL_PWR_DisablePUPDCfg(void)813 __STATIC_INLINE void LL_PWR_DisablePUPDCfg(void)
814 {
815   CLEAR_BIT(PWR->CR3, PWR_CR3_APC);
816 }
817 
818 /**
819   * @brief  Check if pull-up and pull-down configuration is enabled
820   * @rmtoll CR3          APC           LL_PWR_IsEnabledPUPDCfg
821   * @retval State of bit (1 or 0).
822   */
LL_PWR_IsEnabledPUPDCfg(void)823 __STATIC_INLINE uint32_t LL_PWR_IsEnabledPUPDCfg(void)
824 {
825   return ((READ_BIT(PWR->CR3, PWR_CR3_APC) == (PWR_CR3_APC)) ? 1UL : 0UL);
826 }
827 
828 /**
829   * @brief  Enable Internal Wake-up line
830   * @rmtoll CR3          EIWUL          LL_PWR_EnableInternWU
831   * @retval None
832   */
LL_PWR_EnableInternWU(void)833 __STATIC_INLINE void LL_PWR_EnableInternWU(void)
834 {
835   SET_BIT(PWR->CR3, PWR_CR3_EIWUL);
836 }
837 
838 /**
839   * @brief  Disable Internal Wake-up line
840   * @rmtoll CR3          EIWUL          LL_PWR_DisableInternWU
841   * @retval None
842   */
LL_PWR_DisableInternWU(void)843 __STATIC_INLINE void LL_PWR_DisableInternWU(void)
844 {
845   CLEAR_BIT(PWR->CR3, PWR_CR3_EIWUL);
846 }
847 
848 /**
849   * @brief  Check if Internal Wake-up line is enabled
850   * @rmtoll CR3          EIWUL          LL_PWR_IsEnabledInternWU
851   * @retval State of bit (1 or 0).
852   */
LL_PWR_IsEnabledInternWU(void)853 __STATIC_INLINE uint32_t LL_PWR_IsEnabledInternWU(void)
854 {
855   return ((READ_BIT(PWR->CR3, PWR_CR3_EIWUL) == (PWR_CR3_EIWUL)) ? 1UL : 0UL);
856 }
857 
858 /**
859   * @brief  Set the Wake-Up pin polarity low for the event detection
860   * @rmtoll CR4          WP1           LL_PWR_SetWakeUpPinPolarityLow\n
861   *         CR4          WP2           LL_PWR_SetWakeUpPinPolarityLow\n
862   *         CR4          WP3           LL_PWR_SetWakeUpPinPolarityLow\n
863   *         CR4          WP4           LL_PWR_SetWakeUpPinPolarityLow\n
864   *         CR4          WP5           LL_PWR_SetWakeUpPinPolarityLow\n
865   *         CR4          WP7           LL_PWR_SetWakeUpPinPolarityLow
866   * @param  WakeUpPin This parameter can be one of the following values:
867   *         @arg @ref LL_PWR_WAKEUP_PIN1
868   *         @arg @ref LL_PWR_WAKEUP_PIN2
869   *         @arg @ref LL_PWR_WAKEUP_PIN3
870   *         @arg @ref LL_PWR_WAKEUP_PIN4
871   *         @arg @ref LL_PWR_WAKEUP_PIN5
872   *         @arg @ref LL_PWR_WAKEUP_PIN7
873   * @retval None
874   */
LL_PWR_SetWakeUpPinPolarityLow(uint32_t WakeUpPin)875 __STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityLow(uint32_t WakeUpPin)
876 {
877   SET_BIT(PWR->CR4, WakeUpPin);
878 }
879 
880 /**
881   * @brief  Set the Wake-Up pin polarity high for the event detection
882   * @rmtoll CR4          WP1           LL_PWR_SetWakeUpPinPolarityHigh\n
883   *         CR4          WP2           LL_PWR_SetWakeUpPinPolarityHigh\n
884   *         CR4          WP3           LL_PWR_SetWakeUpPinPolarityHigh\n
885   *         CR4          WP4           LL_PWR_SetWakeUpPinPolarityHigh\n
886   *         CR4          WP5           LL_PWR_SetWakeUpPinPolarityHigh\n
887   *         CR4          WP7           LL_PWR_SetWakeUpPinPolarityHigh\n
888   * @param  WakeUpPin This parameter can be one of the following values:
889   *         @arg @ref LL_PWR_WAKEUP_PIN1
890   *         @arg @ref LL_PWR_WAKEUP_PIN2
891   *         @arg @ref LL_PWR_WAKEUP_PIN3
892   *         @arg @ref LL_PWR_WAKEUP_PIN4
893   *         @arg @ref LL_PWR_WAKEUP_PIN5
894   *         @arg @ref LL_PWR_WAKEUP_PIN7
895   * @retval None
896   */
LL_PWR_SetWakeUpPinPolarityHigh(uint32_t WakeUpPin)897 __STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityHigh(uint32_t WakeUpPin)
898 {
899   CLEAR_BIT(PWR->CR4, WakeUpPin);
900 }
901 
902 /**
903   * @brief  Get the Wake-Up pin polarity for the event detection
904   * @rmtoll CR4          WP1           LL_PWR_IsWakeUpPinPolarityLow\n
905   *         CR4          WP2           LL_PWR_IsWakeUpPinPolarityLow\n
906   *         CR4          WP3           LL_PWR_IsWakeUpPinPolarityLow\n
907   *         CR4          WP4           LL_PWR_IsWakeUpPinPolarityLow\n
908   *         CR4          WP5           LL_PWR_IsWakeUpPinPolarityLow\n
909   *         CR4          WP7           LL_PWR_IsWakeUpPinPolarityLow\n
910   * @param  WakeUpPin This parameter can be one of the following values:
911   *         @arg @ref LL_PWR_WAKEUP_PIN1
912   *         @arg @ref LL_PWR_WAKEUP_PIN2
913   *         @arg @ref LL_PWR_WAKEUP_PIN3
914   *         @arg @ref LL_PWR_WAKEUP_PIN4
915   *         @arg @ref LL_PWR_WAKEUP_PIN5
916   *         @arg @ref LL_PWR_WAKEUP_PIN7
917   * @retval State of bit (1 or 0).
918   */
LL_PWR_IsWakeUpPinPolarityLow(uint32_t WakeUpPin)919 __STATIC_INLINE uint32_t LL_PWR_IsWakeUpPinPolarityLow(uint32_t WakeUpPin)
920 {
921   return ((READ_BIT(PWR->CR4, WakeUpPin) == (WakeUpPin)) ? 1UL : 0UL);
922 }
923 
924 /**
925   * @brief  Enable battery charging
926   * @rmtoll CR4          VBE           LL_PWR_EnableBatteryCharging
927   * @retval None
928   */
LL_PWR_EnableBatteryCharging(void)929 __STATIC_INLINE void LL_PWR_EnableBatteryCharging(void)
930 {
931   SET_BIT(PWR->CR4, PWR_CR4_VBE);
932 }
933 
934 /**
935   * @brief  Disable battery charging
936   * @rmtoll CR4          VBE           LL_PWR_DisableBatteryCharging
937   * @retval None
938   */
LL_PWR_DisableBatteryCharging(void)939 __STATIC_INLINE void LL_PWR_DisableBatteryCharging(void)
940 {
941   CLEAR_BIT(PWR->CR4, PWR_CR4_VBE);
942 }
943 
944 /**
945   * @brief  Check if battery charging is enabled
946   * @rmtoll CR4          VBE           LL_PWR_IsEnabledBatteryCharging
947   * @retval State of bit (1 or 0).
948   */
LL_PWR_IsEnabledBatteryCharging(void)949 __STATIC_INLINE uint32_t LL_PWR_IsEnabledBatteryCharging(void)
950 {
951   return ((READ_BIT(PWR->CR4, PWR_CR4_VBE) == (PWR_CR4_VBE)) ? 1UL : 0UL);
952 }
953 
954 /**
955   * @brief  Set the resistor impedance
956   * @rmtoll CR4          VBRS          LL_PWR_SetBattChargResistor
957   * @param  Resistor This parameter can be one of the following values:
958   *         @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K
959   *         @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K
960   * @retval None
961   */
LL_PWR_SetBattChargResistor(uint32_t Resistor)962 __STATIC_INLINE void LL_PWR_SetBattChargResistor(uint32_t Resistor)
963 {
964   MODIFY_REG(PWR->CR4, PWR_CR4_VBRS, Resistor);
965 }
966 
967 /**
968   * @brief  Get the resistor impedance
969   * @rmtoll CR4          VBRS          LL_PWR_GetBattChargResistor
970   * @retval Returned value can be one of the following values:
971   *         @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K
972   *         @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K
973   */
LL_PWR_GetBattChargResistor(void)974 __STATIC_INLINE uint32_t LL_PWR_GetBattChargResistor(void)
975 {
976   return (uint32_t)(READ_BIT(PWR->CR4, PWR_CR4_VBRS));
977 }
978 
979 /**
980   * @brief  Enable GPIO pull-up state in Standby and Shutdown modes
981   * @rmtoll PUCRA        PU0-15        LL_PWR_EnableGPIOPullUp\n
982   *         PUCRB        PU0-15        LL_PWR_EnableGPIOPullUp\n
983   *         PUCRC        PU0-15        LL_PWR_EnableGPIOPullUp\n
984   *         PUCRD        PU0-13        LL_PWR_EnableGPIOPullUp\n
985   *         PUCRE        PU3,PU7-9     LL_PWR_EnableGPIOPullUp\n
986   *         PUCRF        PU0-3         LL_PWR_EnableGPIOPullUp\n
987   * @param  GPIO This parameter can be one of the following values:
988   *         @arg @ref LL_PWR_GPIO_A
989   *         @arg @ref LL_PWR_GPIO_B
990   *         @arg @ref LL_PWR_GPIO_C
991   *         @arg @ref LL_PWR_GPIO_D
992   *         @arg @ref LL_PWR_GPIO_E
993   *         @arg @ref LL_PWR_GPIO_F
994   * @param  GPIONumber This parameter can be one of the following values:
995   *         @arg @ref LL_PWR_GPIO_BIT_0
996   *         @arg @ref LL_PWR_GPIO_BIT_1
997   *         @arg @ref LL_PWR_GPIO_BIT_2
998   *         @arg @ref LL_PWR_GPIO_BIT_3
999   *         @arg @ref LL_PWR_GPIO_BIT_4
1000   *         @arg @ref LL_PWR_GPIO_BIT_5
1001   *         @arg @ref LL_PWR_GPIO_BIT_6
1002   *         @arg @ref LL_PWR_GPIO_BIT_7
1003   *         @arg @ref LL_PWR_GPIO_BIT_8
1004   *         @arg @ref LL_PWR_GPIO_BIT_9
1005   *         @arg @ref LL_PWR_GPIO_BIT_10
1006   *         @arg @ref LL_PWR_GPIO_BIT_11
1007   *         @arg @ref LL_PWR_GPIO_BIT_12
1008   *         @arg @ref LL_PWR_GPIO_BIT_13
1009   *         @arg @ref LL_PWR_GPIO_BIT_14
1010   *         @arg @ref LL_PWR_GPIO_BIT_15
1011   * @retval None
1012   */
LL_PWR_EnableGPIOPullUp(uint32_t GPIO,uint32_t GPIONumber)1013 __STATIC_INLINE void LL_PWR_EnableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber)
1014 {
1015   SET_BIT(*((__IO uint32_t *)GPIO), GPIONumber);
1016 }
1017 
1018 /**
1019   * @brief  Disable GPIO pull-up state in Standby and Shutdown modes
1020   * @rmtoll PUCRA        PU0-15        LL_PWR_DisableGPIOPullUp\n
1021   *         PUCRB        PU0-15        LL_PWR_EnableGPIOPullUp\n
1022   *         PUCRC        PU0-15        LL_PWR_EnableGPIOPullUp\n
1023   *         PUCRD        PU0-13        LL_PWR_EnableGPIOPullUp\n
1024   *         PUCRE        PU3,PU7-9     LL_PWR_EnableGPIOPullUp\n
1025   *         PUCRF        PU0-3         LL_PWR_EnableGPIOPullUp\n
1026   * @param  GPIO This parameter can be one of the following values:
1027   *         @arg @ref LL_PWR_GPIO_A
1028   *         @arg @ref LL_PWR_GPIO_B
1029   *         @arg @ref LL_PWR_GPIO_C
1030   *         @arg @ref LL_PWR_GPIO_D
1031   *         @arg @ref LL_PWR_GPIO_E
1032   *         @arg @ref LL_PWR_GPIO_F
1033   * @param  GPIONumber This parameter can be one of the following values:
1034   *         @arg @ref LL_PWR_GPIO_BIT_0
1035   *         @arg @ref LL_PWR_GPIO_BIT_1
1036   *         @arg @ref LL_PWR_GPIO_BIT_2
1037   *         @arg @ref LL_PWR_GPIO_BIT_3
1038   *         @arg @ref LL_PWR_GPIO_BIT_4
1039   *         @arg @ref LL_PWR_GPIO_BIT_5
1040   *         @arg @ref LL_PWR_GPIO_BIT_6
1041   *         @arg @ref LL_PWR_GPIO_BIT_7
1042   *         @arg @ref LL_PWR_GPIO_BIT_8
1043   *         @arg @ref LL_PWR_GPIO_BIT_9
1044   *         @arg @ref LL_PWR_GPIO_BIT_10
1045   *         @arg @ref LL_PWR_GPIO_BIT_11
1046   *         @arg @ref LL_PWR_GPIO_BIT_12
1047   *         @arg @ref LL_PWR_GPIO_BIT_13
1048   *         @arg @ref LL_PWR_GPIO_BIT_14
1049   *         @arg @ref LL_PWR_GPIO_BIT_15
1050   * @retval None
1051   */
LL_PWR_DisableGPIOPullUp(uint32_t GPIO,uint32_t GPIONumber)1052 __STATIC_INLINE void LL_PWR_DisableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber)
1053 {
1054   CLEAR_BIT(*((__IO uint32_t *)GPIO), GPIONumber);
1055 }
1056 
1057 /**
1058   * @brief  Check if GPIO pull-up state is enabled
1059   * @rmtoll PUCRA        PU0-15        LL_PWR_IsEnabledGPIOPullUp\n
1060   *         PUCRB        PU0-15        LL_PWR_EnableGPIOPullUp\n
1061   *         PUCRC        PU0-15        LL_PWR_EnableGPIOPullUp\n
1062   *         PUCRD        PU0-13        LL_PWR_EnableGPIOPullUp\n
1063   *         PUCRE        PU3,PU7-9     LL_PWR_EnableGPIOPullUp\n
1064   *         PUCRF        PU0-3         LL_PWR_EnableGPIOPullUp\n
1065   * @param  GPIO This parameter can be one of the following values:
1066   *         @arg @ref LL_PWR_GPIO_A
1067   *         @arg @ref LL_PWR_GPIO_B
1068   *         @arg @ref LL_PWR_GPIO_C
1069   *         @arg @ref LL_PWR_GPIO_D
1070   *         @arg @ref LL_PWR_GPIO_E
1071   *         @arg @ref LL_PWR_GPIO_F
1072   * @param  GPIONumber This parameter can be one of the following values:
1073   *         @arg @ref LL_PWR_GPIO_BIT_0
1074   *         @arg @ref LL_PWR_GPIO_BIT_1
1075   *         @arg @ref LL_PWR_GPIO_BIT_2
1076   *         @arg @ref LL_PWR_GPIO_BIT_3
1077   *         @arg @ref LL_PWR_GPIO_BIT_4
1078   *         @arg @ref LL_PWR_GPIO_BIT_5
1079   *         @arg @ref LL_PWR_GPIO_BIT_6
1080   *         @arg @ref LL_PWR_GPIO_BIT_7
1081   *         @arg @ref LL_PWR_GPIO_BIT_8
1082   *         @arg @ref LL_PWR_GPIO_BIT_9
1083   *         @arg @ref LL_PWR_GPIO_BIT_10
1084   *         @arg @ref LL_PWR_GPIO_BIT_11
1085   *         @arg @ref LL_PWR_GPIO_BIT_12
1086   *         @arg @ref LL_PWR_GPIO_BIT_13
1087   *         @arg @ref LL_PWR_GPIO_BIT_14
1088   *         @arg @ref LL_PWR_GPIO_BIT_15
1089   * @retval State of bit (1 or 0).
1090   */
LL_PWR_IsEnabledGPIOPullUp(uint32_t GPIO,uint32_t GPIONumber)1091 __STATIC_INLINE uint32_t LL_PWR_IsEnabledGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber)
1092 {
1093   return ((READ_BIT(*((__IO uint32_t *)GPIO), GPIONumber) == (GPIONumber)) ? 1UL : 0UL);
1094 }
1095 
1096 /**
1097   * @brief  Enable GPIO pull-down state in Standby and Shutdown modes
1098   * @rmtoll PDCRA        PD0-15        LL_PWR_EnableGPIOPullDown\n
1099   *         PUCRB        PU0-15        LL_PWR_EnableGPIOPullUp\n
1100   *         PUCRC        PU0-15        LL_PWR_EnableGPIOPullUp\n
1101   *         PUCRD        PU0-13        LL_PWR_EnableGPIOPullUp\n
1102   *         PUCRE        PU3,PU7-9     LL_PWR_EnableGPIOPullUp\n
1103   *         PUCRF        PU0-3         LL_PWR_EnableGPIOPullUp\n
1104   * @param  GPIO This parameter can be one of the following values:
1105   *         @arg @ref LL_PWR_GPIO_A
1106   *         @arg @ref LL_PWR_GPIO_B
1107   *         @arg @ref LL_PWR_GPIO_C
1108   *         @arg @ref LL_PWR_GPIO_D
1109   *         @arg @ref LL_PWR_GPIO_E
1110   *         @arg @ref LL_PWR_GPIO_F
1111   * @param  GPIONumber This parameter can be one of the following values:
1112   *         @arg @ref LL_PWR_GPIO_BIT_0
1113   *         @arg @ref LL_PWR_GPIO_BIT_1
1114   *         @arg @ref LL_PWR_GPIO_BIT_2
1115   *         @arg @ref LL_PWR_GPIO_BIT_3
1116   *         @arg @ref LL_PWR_GPIO_BIT_4
1117   *         @arg @ref LL_PWR_GPIO_BIT_5
1118   *         @arg @ref LL_PWR_GPIO_BIT_6
1119   *         @arg @ref LL_PWR_GPIO_BIT_7
1120   *         @arg @ref LL_PWR_GPIO_BIT_8
1121   *         @arg @ref LL_PWR_GPIO_BIT_9
1122   *         @arg @ref LL_PWR_GPIO_BIT_10
1123   *         @arg @ref LL_PWR_GPIO_BIT_11
1124   *         @arg @ref LL_PWR_GPIO_BIT_12
1125   *         @arg @ref LL_PWR_GPIO_BIT_13
1126   *         @arg @ref LL_PWR_GPIO_BIT_14
1127   *         @arg @ref LL_PWR_GPIO_BIT_15
1128   * @retval None
1129   */
LL_PWR_EnableGPIOPullDown(uint32_t GPIO,uint32_t GPIONumber)1130 __STATIC_INLINE void LL_PWR_EnableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber)
1131 {
1132   SET_BIT(*((__IO uint32_t *)(GPIO + 4U)), GPIONumber);
1133 }
1134 
1135 /**
1136   * @brief  Disable GPIO pull-down state in Standby and Shutdown modes
1137   * @rmtoll PDCRA        PD0-15        LL_PWR_DisableGPIOPullDown\n
1138   *         PUCRB        PU0-15        LL_PWR_EnableGPIOPullUp\n
1139   *         PUCRC        PU0-15        LL_PWR_EnableGPIOPullUp\n
1140   *         PUCRD        PU0-13        LL_PWR_EnableGPIOPullUp\n
1141   *         PUCRE        PU3,PU7-9     LL_PWR_EnableGPIOPullUp\n
1142   *         PUCRF        PU0-3         LL_PWR_EnableGPIOPullUp\n
1143   * @param  GPIO This parameter can be one of the following values:
1144   *         @arg @ref LL_PWR_GPIO_A
1145   *         @arg @ref LL_PWR_GPIO_B
1146   *         @arg @ref LL_PWR_GPIO_C
1147   *         @arg @ref LL_PWR_GPIO_D
1148   *         @arg @ref LL_PWR_GPIO_E
1149   *         @arg @ref LL_PWR_GPIO_F
1150   * @param  GPIONumber This parameter can be one of the following values:
1151   *         @arg @ref LL_PWR_GPIO_BIT_0
1152   *         @arg @ref LL_PWR_GPIO_BIT_1
1153   *         @arg @ref LL_PWR_GPIO_BIT_2
1154   *         @arg @ref LL_PWR_GPIO_BIT_3
1155   *         @arg @ref LL_PWR_GPIO_BIT_4
1156   *         @arg @ref LL_PWR_GPIO_BIT_5
1157   *         @arg @ref LL_PWR_GPIO_BIT_6
1158   *         @arg @ref LL_PWR_GPIO_BIT_7
1159   *         @arg @ref LL_PWR_GPIO_BIT_8
1160   *         @arg @ref LL_PWR_GPIO_BIT_9
1161   *         @arg @ref LL_PWR_GPIO_BIT_10
1162   *         @arg @ref LL_PWR_GPIO_BIT_11
1163   *         @arg @ref LL_PWR_GPIO_BIT_12
1164   *         @arg @ref LL_PWR_GPIO_BIT_13
1165   *         @arg @ref LL_PWR_GPIO_BIT_14
1166   *         @arg @ref LL_PWR_GPIO_BIT_15
1167   * @retval None
1168   */
LL_PWR_DisableGPIOPullDown(uint32_t GPIO,uint32_t GPIONumber)1169 __STATIC_INLINE void LL_PWR_DisableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber)
1170 {
1171   CLEAR_BIT(*((__IO uint32_t *)(GPIO + 4U)), GPIONumber);
1172 }
1173 
1174 /**
1175   * @brief  Check if GPIO pull-down state is enabled
1176   * @rmtoll PDCRA        PD0-15        LL_PWR_IsEnabledGPIOPullDown\n
1177   *         PUCRB        PU0-15        LL_PWR_EnableGPIOPullUp\n
1178   *         PUCRC        PU0-15        LL_PWR_EnableGPIOPullUp\n
1179   *         PUCRD        PU0-13        LL_PWR_EnableGPIOPullUp\n
1180   *         PUCRE        PU3,PU7-9     LL_PWR_EnableGPIOPullUp\n
1181   *         PUCRF        PU0-3         LL_PWR_EnableGPIOPullUp\n
1182   * @param  GPIO This parameter can be one of the following values:
1183   *         @arg @ref LL_PWR_GPIO_A
1184   *         @arg @ref LL_PWR_GPIO_B
1185   *         @arg @ref LL_PWR_GPIO_C
1186   *         @arg @ref LL_PWR_GPIO_D
1187   *         @arg @ref LL_PWR_GPIO_E
1188   *         @arg @ref LL_PWR_GPIO_F
1189   * @param  GPIONumber This parameter can be one of the following values:
1190   *         @arg @ref LL_PWR_GPIO_BIT_0
1191   *         @arg @ref LL_PWR_GPIO_BIT_1
1192   *         @arg @ref LL_PWR_GPIO_BIT_2
1193   *         @arg @ref LL_PWR_GPIO_BIT_3
1194   *         @arg @ref LL_PWR_GPIO_BIT_4
1195   *         @arg @ref LL_PWR_GPIO_BIT_5
1196   *         @arg @ref LL_PWR_GPIO_BIT_6
1197   *         @arg @ref LL_PWR_GPIO_BIT_7
1198   *         @arg @ref LL_PWR_GPIO_BIT_8
1199   *         @arg @ref LL_PWR_GPIO_BIT_9
1200   *         @arg @ref LL_PWR_GPIO_BIT_10
1201   *         @arg @ref LL_PWR_GPIO_BIT_11
1202   *         @arg @ref LL_PWR_GPIO_BIT_12
1203   *         @arg @ref LL_PWR_GPIO_BIT_13
1204   *         @arg @ref LL_PWR_GPIO_BIT_14
1205   *         @arg @ref LL_PWR_GPIO_BIT_15
1206   * @retval State of bit (1 or 0).
1207   */
LL_PWR_IsEnabledGPIOPullDown(uint32_t GPIO,uint32_t GPIONumber)1208 __STATIC_INLINE uint32_t LL_PWR_IsEnabledGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber)
1209 {
1210   return ((READ_BIT(*((__IO uint32_t *)(GPIO + 4U)), GPIONumber) == (GPIONumber)) ? 1UL : 0UL);
1211 }
1212 /**
1213   * @}
1214   */
1215 
1216 /** @defgroup PWR_LL_EF_FLAG_Management FLAG_Management
1217   * @{
1218   */
1219 
1220 /**
1221   * @brief  Get Wake-up Flag 1
1222   * @rmtoll SR1          WUF1          LL_PWR_IsActiveFlag_WU1
1223   * @retval State of bit (1 or 0).
1224   */
LL_PWR_IsActiveFlag_WU1(void)1225 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU1(void)
1226 {
1227   return ((READ_BIT(PWR->SR1, PWR_SR1_WUF1) == (PWR_SR1_WUF1)) ? 1UL : 0UL);
1228 }
1229 
1230 /**
1231   * @brief  Get Wake-up Flag 2
1232   * @rmtoll SR1          WUF2          LL_PWR_IsActiveFlag_WU2
1233   * @retval State of bit (1 or 0).
1234   */
LL_PWR_IsActiveFlag_WU2(void)1235 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU2(void)
1236 {
1237   return ((READ_BIT(PWR->SR1, PWR_SR1_WUF2) == (PWR_SR1_WUF2)) ? 1UL : 0UL);
1238 }
1239 
1240 /**
1241   * @brief  Get Wake-up Flag 3
1242   * @rmtoll SR1          WUF3          LL_PWR_IsActiveFlag_WU3
1243   * @retval State of bit (1 or 0).
1244   */
LL_PWR_IsActiveFlag_WU3(void)1245 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU3(void)
1246 {
1247   return ((READ_BIT(PWR->SR1, PWR_SR1_WUF3) == (PWR_SR1_WUF3)) ? 1UL : 0UL);
1248 }
1249 
1250 /**
1251   * @brief  Get Wake-up Flag 4
1252   * @rmtoll SR1          WUF4          LL_PWR_IsActiveFlag_WU4
1253   * @retval State of bit (1 or 0).
1254   */
LL_PWR_IsActiveFlag_WU4(void)1255 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU4(void)
1256 {
1257   return ((READ_BIT(PWR->SR1, PWR_SR1_WUF4) == (PWR_SR1_WUF4)) ? 1UL : 0UL);
1258 }
1259 
1260 /**
1261   * @brief  Get Wake-up Flag 5
1262   * @rmtoll SR1          WUF5          LL_PWR_IsActiveFlag_WU5
1263   * @retval State of bit (1 or 0).
1264   */
LL_PWR_IsActiveFlag_WU5(void)1265 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU5(void)
1266 {
1267   return ((READ_BIT(PWR->SR1, PWR_SR1_WUF5) == (PWR_SR1_WUF5)) ? 1UL : 0UL);
1268 }
1269 
1270 /**
1271   * @brief  Get Wake-up Flag 7
1272   * @rmtoll SR1          WUF7          LL_PWR_IsActiveFlag_WU7
1273   * @retval State of bit (1 or 0).
1274   */
LL_PWR_IsActiveFlag_WU7(void)1275 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU7(void)
1276 {
1277   return ((READ_BIT(PWR->SR1, PWR_SR1_WUF7) == (PWR_SR1_WUF7)) ? 1UL : 0UL);
1278 }
1279 
1280 /**
1281   * @brief  Get Stand-By Flag
1282   * @rmtoll SR1          SBF           LL_PWR_IsActiveFlag_SB
1283   * @retval State of bit (1 or 0).
1284   */
LL_PWR_IsActiveFlag_SB(void)1285 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SB(void)
1286 {
1287   return ((READ_BIT(PWR->SR1, PWR_SR1_SBF) == (PWR_SR1_SBF)) ? 1UL : 0UL);
1288 }
1289 
1290 /**
1291   * @brief  Get Stop Flag
1292   * @rmtoll SR1          STOPF 0          LL_PWR_IsActiveFlag_Stop
1293   * @retval State of bit (1 or 0).
1294   */
LL_PWR_IsActiveFlag_Stop0(void)1295 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_Stop0(void)
1296 {
1297   return ((READ_BIT(PWR->SR1, LL_PWR_SR1_STOP0) == (LL_PWR_SR1_STOP0)) ? 1UL : 0UL);
1298 }
1299 
1300 /**
1301   * @brief  Get Stop Flag
1302   * @rmtoll SR1          STOPF 1         LL_PWR_IsActiveFlag_Stop
1303   * @retval State of bit (1 or 0).
1304   */
LL_PWR_IsActiveFlag_Stop1(void)1305 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_Stop1(void)
1306 {
1307   return ((READ_BIT(PWR->SR1, LL_PWR_SR1_STOP1) == (LL_PWR_SR1_STOP1)) ? 1UL : 0UL);
1308 }
1309 /**
1310   * @brief  Get Stop Flag
1311   * @rmtoll SR1          STOPF 2          LL_PWR_IsActiveFlag_Stop
1312   * @retval State of bit (1 or 0).
1313   */
LL_PWR_IsActiveFlag_Stop2(void)1314 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_Stop2(void)
1315 {
1316   return ((READ_BIT(PWR->SR1, LL_PWR_SR1_STOP2) == (LL_PWR_SR1_STOP2)) ? 1UL : 0UL);
1317 }
1318 
1319 /**
1320   * @brief  Get Internal Wake-up line Flag
1321   * @rmtoll SR1          WUFI          LL_PWR_IsActiveFlag_InternWU
1322   * @retval State of bit (1 or 0).
1323   */
LL_PWR_IsActiveFlag_InternWU(void)1324 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_InternWU(void)
1325 {
1326   return ((READ_BIT(PWR->SR1, PWR_SR1_WUFI) == (PWR_SR1_WUFI)) ? 1UL : 0UL);
1327 }
1328 
1329 /**
1330   * @brief  Indicate whether or not the flash is ready
1331   * @rmtoll SR2          FLASH_RDY        LL_PWR_IsActiveFlag_FLASH_RDY
1332   * @retval State of bit (1 or 0).
1333   */
LL_PWR_IsActiveFlag_FLASH_RDY(void)1334 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_FLASH_RDY(void)
1335 {
1336   return ((READ_BIT(PWR->SR2, PWR_SR2_FLASH_RDY) == (PWR_SR2_FLASH_RDY)) ? 1UL : 0UL);
1337 }
1338 
1339 /**
1340   * @brief  Indicate whether or not the low-power regulator is ready
1341   * @rmtoll SR2          REGLPS        LL_PWR_IsActiveFlag_REGLPS
1342   * @retval State of bit (1 or 0).
1343   */
LL_PWR_IsActiveFlag_REGLPS(void)1344 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_REGLPS(void)
1345 {
1346   return ((READ_BIT(PWR->SR2, PWR_SR2_REGLPS) == (PWR_SR2_REGLPS)) ? 1UL : 0UL);
1347 }
1348 
1349 /**
1350   * @brief  Indicate whether the regulator is ready in main mode or is in low-power mode
1351   * @note   Take care, return value "0" means the regulator is ready. Return value "1" means the output voltage range
1352   *         is still changing.
1353   * @rmtoll SR2          REGLPF        LL_PWR_IsActiveFlag_REGLPF
1354   * @retval State of bit (1 or 0).
1355   */
LL_PWR_IsActiveFlag_REGLPF(void)1356 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_REGLPF(void)
1357 {
1358   return ((READ_BIT(PWR->SR2, PWR_SR2_REGLPF) == (PWR_SR2_REGLPF)) ? 1UL : 0UL);
1359 }
1360 
1361 /**
1362   * @brief  Indicate whether the regulator is ready in the selected voltage range or if its output voltage is
1363   *         still changing to the required voltage level
1364   * @rmtoll SR2          VOSF          LL_PWR_IsActiveFlag_VOS
1365   * @retval State of bit (1 or 0).
1366   */
LL_PWR_IsActiveFlag_VOS(void)1367 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VOS(void)
1368 {
1369   return ((READ_BIT(PWR->SR2, PWR_SR2_VOSF) == (PWR_SR2_VOSF)) ? 1UL : 0UL);
1370 }
1371 
1372 /**
1373   * @brief  Indicate whether VDD voltage is below or above the selected PVD threshold
1374   * @rmtoll SR2          PVDO          LL_PWR_IsActiveFlag_PVDO
1375   * @retval State of bit (1 or 0).
1376   */
LL_PWR_IsActiveFlag_PVDO(void)1377 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(void)
1378 {
1379   return ((READ_BIT(PWR->SR2, PWR_SR2_PVDO) == (PWR_SR2_PVDO)) ? 1UL : 0UL);
1380 }
1381 
1382 #if defined(USB_DRD_FS)
1383 /**
1384   * @brief  Indicate whether VDDUSB voltage is below or above PVMO1 threshold
1385   * @rmtoll SR2          PVMO1         LL_PWR_IsActiveFlag_PVMO_1
1386   * @retval State of bit (1 or 0).
1387   */
LL_PWR_IsActiveFlag_PVMO_1(void)1388 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO_1(void)
1389 {
1390   return ((READ_BIT(PWR->SR2, PWR_SR2_PVMO1) == (PWR_SR2_PVMO1)) ? 1UL : 0UL);
1391 }
1392 #endif /* USB_DRD_FS */
1393 
1394 /**
1395   * @brief  Indicate whether VDDA ADC voltage is below or above PVMO3 threshold
1396   * @rmtoll SR2          PVMO3         LL_PWR_IsActiveFlag_PVMO_3
1397   * @retval State of bit (1 or 0).
1398   */
LL_PWR_IsActiveFlag_PVMO_3(void)1399 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO_3(void)
1400 {
1401   return ((READ_BIT(PWR->SR2, PWR_SR2_PVMO3) == (PWR_SR2_PVMO3)) ? 1UL : 0UL);
1402 }
1403 
1404 /**
1405   * @brief  Indicate whether VDDA voltage is below or above PVMO4 threshold
1406   * @rmtoll SR2          PVMO4         LL_PWR_IsActiveFlag_PVMO_4
1407   * @retval State of bit (1 or 0).
1408   */
LL_PWR_IsActiveFlag_PVMO_4(void)1409 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO_4(void)
1410 {
1411   return ((READ_BIT(PWR->SR2, PWR_SR2_PVMO4) == (PWR_SR2_PVMO4)) ? 1UL : 0UL);
1412 }
1413 
1414 /**
1415   * @brief  Clear Wake-up Flag 1
1416   * @rmtoll SCR          CWUF1         LL_PWR_ClearFlag_WU1
1417   * @retval None
1418   */
LL_PWR_ClearFlag_WU1(void)1419 __STATIC_INLINE void LL_PWR_ClearFlag_WU1(void)
1420 {
1421   WRITE_REG(PWR->SCR, PWR_SCR_CWUF1);
1422 }
1423 
1424 /**
1425   * @brief  Clear Wake-up Flag 2
1426   * @rmtoll SCR          CWUF2         LL_PWR_ClearFlag_WU2
1427   * @retval None
1428   */
LL_PWR_ClearFlag_WU2(void)1429 __STATIC_INLINE void LL_PWR_ClearFlag_WU2(void)
1430 {
1431   WRITE_REG(PWR->SCR, PWR_SCR_CWUF2);
1432 }
1433 
1434 /**
1435   * @brief  Clear Wake-up Flag 3
1436   * @rmtoll SCR          CWUF3         LL_PWR_ClearFlag_WU3
1437   * @retval None
1438   */
LL_PWR_ClearFlag_WU3(void)1439 __STATIC_INLINE void LL_PWR_ClearFlag_WU3(void)
1440 {
1441   WRITE_REG(PWR->SCR, PWR_SCR_CWUF3);
1442 }
1443 
1444 /**
1445   * @brief  Clear Wake-up Flag 4
1446   * @rmtoll SCR          CWUF4         LL_PWR_ClearFlag_WU4
1447   * @retval None
1448   */
LL_PWR_ClearFlag_WU4(void)1449 __STATIC_INLINE void LL_PWR_ClearFlag_WU4(void)
1450 {
1451   WRITE_REG(PWR->SCR, PWR_SCR_CWUF4);
1452 }
1453 
1454 /**
1455   * @brief  Clear Wake-up Flag 5
1456   * @rmtoll SCR          CWUF5         LL_PWR_ClearFlag_WU5
1457   * @retval None
1458   */
LL_PWR_ClearFlag_WU5(void)1459 __STATIC_INLINE void LL_PWR_ClearFlag_WU5(void)
1460 {
1461   WRITE_REG(PWR->SCR, PWR_SCR_CWUF5);
1462 }
1463 
1464 /**
1465   * @brief  Clear Wake-up Flag 7
1466   * @rmtoll SCR          CWUF7         LL_PWR_ClearFlag_WU7
1467   * @retval None
1468   */
LL_PWR_ClearFlag_WU7(void)1469 __STATIC_INLINE void LL_PWR_ClearFlag_WU7(void)
1470 {
1471   WRITE_REG(PWR->SCR, PWR_SCR_CWUF7);
1472 }
1473 
1474 /**
1475   * @brief  Clear standby and stop Flags
1476   * @rmtoll SCR          CSBF          LL_PWR_ClearFlag_CSB
1477   * @retval None
1478   */
LL_PWR_ClearFlag_CSB(void)1479 __STATIC_INLINE void LL_PWR_ClearFlag_CSB(void)
1480 {
1481   WRITE_REG(PWR->SCR, PWR_SCR_CSBF);
1482 }
1483 /**
1484   * @}
1485   */
1486 
1487 /**
1488   * @}
1489   */
1490 #if defined(USE_FULL_LL_DRIVER)
1491 /** @defgroup PWR_LL_EF_Init De-initialization function
1492   * @{
1493   */
1494 ErrorStatus LL_PWR_DeInit(void);
1495 /**
1496   * @}
1497   */
1498 #endif /* USE_FULL_LL_DRIVER */
1499 
1500 /**
1501   * @}
1502   */
1503 
1504 /**
1505   * @}
1506   */
1507 
1508 #endif /* defined(PWR) */
1509 
1510 /**
1511   * @}
1512   */
1513 
1514 #ifdef __cplusplus
1515 }
1516 #endif
1517 
1518 #endif /* STM32U0xx_LL_PWR_H */
1519