1 /**
2 ******************************************************************************
3 * @file stm32mp1xx_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
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 STM32MP1xx_LL_PWR_H
21 #define STM32MP1xx_LL_PWR_H
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32mp1xx.h"
29
30 /** @addtogroup STM32MP1xx_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 /** @defgroup PWR_LL_Private_Constants PWR Private Constants
44 * @{
45 */
46
47 /** @defgroup PWR_LL_WAKEUP_PIN_OFFSET Wake-Up Pins register offsets Defines
48 * @brief Flags defines which can be used with LL_PWR_WriteReg function
49 * @{
50 */
51 /* Wake-Up Pins PWR register offsets */
52 #define LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET 2UL
53 #define LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK 0x1FU
54 /**
55 * @}
56 */
57 /**
58 * @}
59 */
60 /* Private macros ------------------------------------------------------------*/
61 /* Exported types ------------------------------------------------------------*/
62 /* Exported constants --------------------------------------------------------*/
63 /** @defgroup PWR_LL_Exported_Constants PWR Exported Constants
64 * @{
65 */
66
67 /** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines
68 * @brief Flags defines which can be used with LL_PWR_WriteReg function
69 * @{
70 */
71 #define LL_PWR_FLAG_CPU_CSSF PWR_MCUCR_CSSF /*!< Clear MCU STANDBY, STOP flags */
72 #define LL_PWR_FLAG_WKUPCR_WKUPC6 PWR_WKUPCR_WKUPC6 /*!< Clear WKUP pin 6 */
73 #define LL_PWR_FLAG_WKUPCR_WKUPC5 PWR_WKUPCR_WKUPC5 /*!< Clear WKUP pin 5 */
74 #define LL_PWR_FLAG_WKUPCR_WKUPC4 PWR_WKUPCR_WKUPC4 /*!< Clear WKUP pin 4 */
75 #define LL_PWR_FLAG_WKUPCR_WKUPC3 PWR_WKUPCR_WKUPC3 /*!< Clear WKUP pin 3 */
76 #define LL_PWR_FLAG_WKUPCR_WKUPC2 PWR_WKUPCR_WKUPC2 /*!< Clear WKUP pin 2 */
77 #define LL_PWR_FLAG_WKUPCR_WKUPC1 PWR_WKUPCR_WKUPC1 /*!< Clear WKUP pin 1 */
78 /**
79 * @}
80 */
81
82 /** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines
83 * @brief Flags defines which can be used with LL_PWR_ReadReg function
84 * @{
85 */
86 #define LL_PWR_FLAG_AVDO PWR_CSR1_AVDO /*!< Analog Voltage Detect Output */
87 #define LL_PWR_FLAG_PVDO PWR_CSR1_PVDO /*!< Power voltage detector output flag */
88
89 #define LL_PWR_FLAG_TEMPH PWR_CR2_TEMPH /*!< Temperature high threshold flag */
90 #define LL_PWR_FLAG_TEMPL PWR_CR2_TEMPL /*!< Temperature low threshold flag */
91 #define LL_PWR_FLAG_VBATH PWR_CR2_VBATH /*!< VBAT high threshold flag */
92 #define LL_PWR_FLAG_VBATL PWR_CR2_VBATL /*!< VBAT low threshold flag */
93 #define LL_PWR_FLAG_RRRDY PWR_CR2_RRRDY /*!< Retention Regulator ready flag */
94 #define LL_PWR_FLAG_BRRDY PWR_CR2_BRRDY /*!< Backup Regulator ready flag */
95
96 #define LL_PWR_FLAG_USBRDY PWR_CR3_USB33RDY /*!< USB supply ready flag */
97 #define LL_PWR_FLAG_R18RDY PWR_CR3_REG18RDY /*!< 1V8 regulator supply ready */
98 #define LL_PWR_FLAG_R11RDY PWR_CR3_REG11RDY /*!< 1V1 regulator supply ready */
99
100 #define LL_PWR_FLAG_CPU_SBF PWR_MCUCR_SBF /*!< MCU System STANDBY Flag */
101 #define LL_PWR_FLAG_CPU_STOPF PWR_MCUCR_STOPF /*!< MCU STOP Flag */
102
103 #define LL_PWR_WKUPFR_WKUPF6 PWR_WKUPFR_WKUPF6 /*!< Wakeup Pin Flag 6 */
104 #define LL_PWR_WKUPFR_WKUPF5 PWR_WKUPFR_WKUPF5 /*!< Wakeup Pin Flag 5 */
105 #define LL_PWR_WKUPFR_WKUPF4 PWR_WKUPFR_WKUPF4 /*!< Wakeup Pin Flag 4 */
106 #define LL_PWR_WKUPFR_WKUPF3 PWR_WKUPFR_WKUPF3 /*!< Wakeup Pin Flag 3 */
107 #define LL_PWR_WKUPFR_WKUPF2 PWR_WKUPFR_WKUPF2 /*!< Wakeup Pin Flag 2 */
108 #define LL_PWR_WKUPFR_WKUPF1 PWR_WKUPFR_WKUPF1 /*!< Wakeup Pin Flag 1 */
109 /**
110 * @}
111 */
112
113 /** @defgroup PWR_LL_EC_MODE_PWR Power mode
114 * @{
115 */
116 #define LL_PWR_MCU_MODE_STOP 0x00000000U /*!< Keep STOP mode when MCU enters to CSTOP */
117 #define LL_PWR_MCU_MODE_STANDBY PWR_MCUCR_PDDS /*!< Allow STANDBY mode when MCU enters to CSTOP */
118 /**
119 * @}
120 */
121
122 /** @defgroup PWR_LL_EC_PVDLEVEL Programmable Voltage Detector Level
123 * @{
124 */
125 #define LL_PWR_PVDLEVEL_0 PWR_CR1_PLS_LEV0 /*!< Voltage threshold detected by PVD 1.95 V */
126 #define LL_PWR_PVDLEVEL_1 PWR_CR1_PLS_LEV1 /*!< Voltage threshold detected by PVD 2.1 V */
127 #define LL_PWR_PVDLEVEL_2 PWR_CR1_PLS_LEV2 /*!< Voltage threshold detected by PVD 2.25 V */
128 #define LL_PWR_PVDLEVEL_3 PWR_CR1_PLS_LEV3 /*!< Voltage threshold detected by PVD 2.4 V */
129 #define LL_PWR_PVDLEVEL_4 PWR_CR1_PLS_LEV4 /*!< Voltage threshold detected by PVD 2.55 V */
130 #define LL_PWR_PVDLEVEL_5 PWR_CR1_PLS_LEV5 /*!< Voltage threshold detected by PVD 2.7 V */
131 #define LL_PWR_PVDLEVEL_6 PWR_CR1_PLS_LEV6 /*!< Voltage threshold detected by PVD 2.85 V */
132 #define LL_PWR_PVDLEVEL_7 PWR_CR1_PLS_LEV7 /*!< External voltage level on PVD_IN pin, compared to internal VREFINT level. */
133 /**
134 * @}
135 */
136
137 /** @defgroup PWR_LL_EC_AVDLEVEL Analog Voltage Detector Level
138 * @{
139 */
140 #define LL_PWR_AVDLEVEL_0 PWR_CR1_ALS_LEV0 /*!< Analog Voltage threshold detected by AVD 1.7 V */
141 #define LL_PWR_AVDLEVEL_1 PWR_CR1_ALS_LEV1 /*!< Analog Voltage threshold detected by AVD 2.1 V */
142 #define LL_PWR_AVDLEVEL_2 PWR_CR1_ALS_LEV2 /*!< Analog Voltage threshold detected by AVD 2.5 V */
143 #define LL_PWR_AVDLEVEL_3 PWR_CR1_ALS_LEV3 /*!< Analog Voltage threshold detected by AVD 2.8 V */
144
145 /**
146 * @}
147 */
148
149 /** @defgroup PWR_LL_EC_BATT_CHARG_RESISTOR VBAT charging resistor selection
150 * @{
151 */
152 #define LL_PWR_BATT_CHARG_RESISTOR_5K 0x00000000U /*!< Charge VBAT through a 5 kO resistor */
153 #define LL_PWR_BATT_CHARGRESISTOR_1_5K PWR_CR3_VBRS /*!< Charge VBAT through a 1.5 kO resistor */
154 /**
155 * @}
156 */
157
158 /** @defgroup PWR_LL_EC_WAKEUP_PIN MCU Wakeup Pins
159 * @{
160 */
161 #define LL_PWR_WAKEUP_PIN1 PWR_MCUWKUPENR_WKUPEN1 /*!< Wake-Up pin 1 : PA0 */
162 #define LL_PWR_WAKEUP_PIN2 PWR_MCUWKUPENR_WKUPEN2 /*!< Wake-Up pin 2 : PA2 */
163 #define LL_PWR_WAKEUP_PIN3 PWR_MCUWKUPENR_WKUPEN3 /*!< Wake-Up pin 3 : PC1 */
164 #define LL_PWR_WAKEUP_PIN4 PWR_MCUWKUPENR_WKUPEN4 /*!< Wake-Up pin 4 : PC13 */
165 #define LL_PWR_WAKEUP_PIN5 PWR_MCUWKUPENR_WKUPEN5 /*!< Wake-Up pin 5 : PI8 */
166 #define LL_PWR_WAKEUP_PIN6 PWR_MCUWKUPENR_WKUPEN6 /*!< Wake-Up pin 6 : PI11 */
167 /**
168 * @}
169 */
170
171 /** @defgroup PWR_LL_EC_WAKEUP_PIN_PULL Wakeup Pins pull configuration
172 * @{
173 */
174 #define LL_PWR_WAKEUP_PIN_NOPULL 0x00000000UL /*!< Configure Wake-Up pin in no pull */
175 #define LL_PWR_WAKEUP_PIN_PULLUP 0x00000001UL /*!< Configure Wake-Up pin in pull Up */
176 #define LL_PWR_WAKEUP_PIN_PULLDOWN 0x00000002UL /*!< Configure Wake-Up pin in pull Down */
177 /**
178 * @}
179 */
180
181 /**
182 * @}
183 */
184 /* Exported macro ------------------------------------------------------------*/
185 /** @defgroup PWR_LL_Exported_Macros PWR Exported Macros
186 * @{
187 */
188
189 /** @defgroup PWR_LL_EM_WRITE_READ Common write and read registers Macros
190 * @{
191 */
192
193 /**
194 * @brief Write a value in PWR register
195 * @param __REG__ Register to be written
196 * @param __VALUE__ Value to be written in the register
197 * @retval None
198 */
199 #define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__))
200
201 /**
202 * @brief Read a value in PWR register
203 * @param __REG__ Register to be read
204 * @retval Register value
205 */
206 #define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__)
207 /**
208 * @}
209 */
210
211 /**
212 * @}
213 */
214 /* Exported functions --------------------------------------------------------*/
215 /** @defgroup PWR_LL_Exported_Functions PWR Exported Functions
216 * @{
217 */
218
219 /** @defgroup PWR_LL_EF_Configuration Configuration
220 * @{
221 */
222
223 /**
224 * @brief Enable Programable Voltage Detector
225 * @rmtoll CR1 PVDEN LL_PWR_EnablePVD
226 * @retval None
227 */
LL_PWR_EnablePVD(void)228 __STATIC_INLINE void LL_PWR_EnablePVD(void)
229 {
230 SET_BIT(PWR->CR1, PWR_CR1_PVDEN);
231 }
232
233 /**
234 * @brief Disable Programable Voltage Detector
235 * @rmtoll CR1 PVDEN LL_PWR_DisablePVD
236 * @retval None
237 */
LL_PWR_DisablePVD(void)238 __STATIC_INLINE void LL_PWR_DisablePVD(void)
239 {
240 CLEAR_BIT(PWR->CR1, PWR_CR1_PVDEN);
241 }
242
243 /**
244 * @brief Check if Programable Voltage Detector is enabled
245 * @rmtoll CR1 PVDEN LL_PWR_IsEnabledPVD
246 * @retval State of bit (1 or 0).
247 */
LL_PWR_IsEnabledPVD(void)248 __STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(void)
249 {
250 return ((READ_BIT(PWR->CR1, PWR_CR1_PVDEN) == (PWR_CR1_PVDEN)) ? 1UL : 0UL);
251 }
252
253 /**
254 * @brief Configure the voltage threshold detected by the Programable Voltage Detector
255 * @rmtoll CR1 PLS LL_PWR_SetPVDLevel
256 * @param PVDLevel This parameter can be one of the following values:
257 * @arg @ref LL_PWR_PVDLEVEL_0
258 * @arg @ref LL_PWR_PVDLEVEL_1
259 * @arg @ref LL_PWR_PVDLEVEL_2
260 * @arg @ref LL_PWR_PVDLEVEL_3
261 * @arg @ref LL_PWR_PVDLEVEL_4
262 * @arg @ref LL_PWR_PVDLEVEL_5
263 * @arg @ref LL_PWR_PVDLEVEL_6
264 * @arg @ref LL_PWR_PVDLEVEL_7
265 * @retval None
266 */
LL_PWR_SetPVDLevel(uint32_t PVDLevel)267 __STATIC_INLINE void LL_PWR_SetPVDLevel(uint32_t PVDLevel)
268 {
269 MODIFY_REG(PWR->CR1, PWR_CR1_PLS, PVDLevel);
270 }
271
272 /**
273 * @brief Get the voltage threshold detection
274 * @rmtoll CR1 PLS LL_PWR_GetPVDLevel
275 * @retval Returned value can be one of the following values:
276 * @arg @ref LL_PWR_PVDLEVEL_0
277 * @arg @ref LL_PWR_PVDLEVEL_1
278 * @arg @ref LL_PWR_PVDLEVEL_2
279 * @arg @ref LL_PWR_PVDLEVEL_3
280 * @arg @ref LL_PWR_PVDLEVEL_4
281 * @arg @ref LL_PWR_PVDLEVEL_5
282 * @arg @ref LL_PWR_PVDLEVEL_6
283 * @arg @ref LL_PWR_PVDLEVEL_7
284 */
LL_PWR_GetPVDLevel(void)285 __STATIC_INLINE uint32_t LL_PWR_GetPVDLevel(void)
286 {
287 return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_PLS));
288 }
289
290 /**
291 * @brief Enable access to the backup domain
292 * @rmtoll CR1 DBP LL_PWR_EnableBkUpAccess
293 * @retval None
294 */
LL_PWR_EnableBkUpAccess(void)295 __STATIC_INLINE void LL_PWR_EnableBkUpAccess(void)
296 {
297 SET_BIT(PWR->CR1, PWR_CR1_DBP);
298 }
299
300 /**
301 * @brief Disable access to the backup domain
302 * @rmtoll CR1 DBP LL_PWR_DisableBkUpAccess
303 * @retval None
304 */
LL_PWR_DisableBkUpAccess(void)305 __STATIC_INLINE void LL_PWR_DisableBkUpAccess(void)
306 {
307 CLEAR_BIT(PWR->CR1, PWR_CR1_DBP);
308 }
309
310 /**
311 * @brief Check if the backup domain is enabled
312 * @rmtoll CR1 DBP LL_PWR_IsEnabledBkUpAccess
313 * @retval State of bit (1 or 0).
314 */
LL_PWR_IsEnabledBkUpAccess(void)315 __STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void)
316 {
317 return ((READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP)) ? 1UL : 0UL);
318 }
319
320 /**
321 * @brief Enable Analog Power Voltage Detector
322 * @rmtoll CR1 AVDEN LL_PWR_EnableAVD
323 * @retval None
324 */
LL_PWR_EnableAVD(void)325 __STATIC_INLINE void LL_PWR_EnableAVD(void)
326 {
327 SET_BIT(PWR->CR1, PWR_CR1_AVDEN);
328 }
329
330 /**
331 * @brief Disable Analog Power Voltage Detector
332 * @rmtoll CR1 AVDEN LL_PWR_DisableAVD
333 * @retval None
334 */
LL_PWR_DisableAVD(void)335 __STATIC_INLINE void LL_PWR_DisableAVD(void)
336 {
337 CLEAR_BIT(PWR->CR1, PWR_CR1_AVDEN);
338 }
339
340 /**
341 * @brief Check if Analog Power Voltage Detector is enabled
342 * @rmtoll CR1 AVDEN LL_PWR_IsEnabledAVD
343 * @retval State of bit (1 or 0).
344 */
LL_PWR_IsEnabledAVD(void)345 __STATIC_INLINE uint32_t LL_PWR_IsEnabledAVD(void)
346 {
347 return ((READ_BIT(PWR->CR1, PWR_CR1_AVDEN) == (PWR_CR1_AVDEN)) ? 1UL : 0UL);
348 }
349
350 /**
351 * @brief Configure the voltage threshold to be detected by the Analog Power Voltage Detector
352 * @rmtoll CR1 ALS LL_PWR_SetAVDLevel
353 * @param AVDLevel This parameter can be one of the following values:
354 * @arg @ref LL_PWR_AVDLEVEL_0
355 * @arg @ref LL_PWR_AVDLEVEL_1
356 * @arg @ref LL_PWR_AVDLEVEL_2
357 * @arg @ref LL_PWR_AVDLEVEL_3
358 * @retval None
359 */
LL_PWR_SetAVDLevel(uint32_t AVDLevel)360 __STATIC_INLINE void LL_PWR_SetAVDLevel(uint32_t AVDLevel)
361 {
362 MODIFY_REG(PWR->CR1, PWR_CR1_ALS, AVDLevel);
363 }
364
365 /**
366 * @brief Get the Analog Voltage threshold to be detected by the Analog Power Voltage Detector
367 * @rmtoll CR1 ALS LL_PWR_GetAVDLevel
368 * @retval Returned value can be one of the following values:
369 * @arg @ref LL_PWR_AVDLEVEL_0
370 * @arg @ref LL_PWR_AVDLEVEL_1
371 * @arg @ref LL_PWR_AVDLEVEL_2
372 * @arg @ref LL_PWR_AVDLEVEL_3
373 */
LL_PWR_GetAVDLevel(void)374 __STATIC_INLINE uint32_t LL_PWR_GetAVDLevel(void)
375 {
376 return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_ALS));
377 }
378
379 /**
380 * @brief Enable Backup Regulator
381 * @rmtoll CR2 BREN LL_PWR_EnableBkUpRegulator
382 * @note When set, the Backup Regulator (used to maintain backup SRAM content
383 * in Standby and VBAT modes) is enabled. If BRE is reset, the backup
384 * Regulator is switched off. The backup SRAM can still be used in Run
385 * mode and Stop mode but its content will be lost in the Standby and VBAT
386 * modes. Once set, the application must wait that the Backup Regulator
387 * Ready flag (BRR) is set to indicate that the data written into the RAM
388 * will be maintained in the Standby and VBAT modes.
389 * @retval None
390 */
LL_PWR_EnableBkUpRegulator(void)391 __STATIC_INLINE void LL_PWR_EnableBkUpRegulator(void)
392 {
393 SET_BIT(PWR->CR2, PWR_CR2_BREN);
394 }
395
396 /**
397 * @brief Disable Backup Regulator
398 * @rmtoll CR2 BREN LL_PWR_DisableBkUpRegulator
399 * @retval None
400 */
LL_PWR_DisableBkUpRegulator(void)401 __STATIC_INLINE void LL_PWR_DisableBkUpRegulator(void)
402 {
403 CLEAR_BIT(PWR->CR2, PWR_CR2_BREN);
404 }
405
406 /**
407 * @brief Check if the backup Regulator is enabled
408 * @rmtoll CR2 BREN LL_PWR_IsEnabledBkUpRegulator
409 * @retval State of bit (1 or 0).
410 */
LL_PWR_IsEnabledBkUpRegulator(void)411 __STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpRegulator(void)
412 {
413 return ((READ_BIT(PWR->CR2, PWR_CR2_BREN) == (PWR_CR2_BREN)) ? 1UL : 0UL);
414 }
415
416 /**
417 * @brief Enable Retention Regulator
418 * @rmtoll CR2 RREN LL_PWR_EnableRetRegulator
419 * @note When set, the retention regulator (used to maintain retention RAM
420 * content in Standby and VBAT modes) is enabled.
421 * If RREN is reset, the Retention Regulator is switched off. The retention
422 * RAM can still be used in Run mode and Stop mode but its content is lost
423 * in the Standby and VBAT modes.
424 * Once set, the application must wait that the retention regulator Ready
425 * flag (RRRDY) is set to indicate that the data written into the SRAM is
426 * maintained in the Standby and VBAT modes.
427 * @retval None
428 */
LL_PWR_EnableRetRegulator(void)429 __STATIC_INLINE void LL_PWR_EnableRetRegulator(void)
430 {
431 SET_BIT(PWR->CR2, PWR_CR2_RREN);
432 }
433
434 /**
435 * @brief Disable Retention Regulator
436 * @rmtoll CR2 RREN LL_PWR_DisableRetRegulator
437 * @retval None
438 */
LL_PWR_DisableRetRegulator(void)439 __STATIC_INLINE void LL_PWR_DisableRetRegulator(void)
440 {
441 CLEAR_BIT(PWR->CR2, PWR_CR2_RREN);
442 }
443
444 /**
445 * @brief Check if the Retention Regulator is enabled
446 * @rmtoll CR2 RREN LL_PWR_IsEnabledRetRegulator
447 * @retval State of bit (1 or 0).
448 */
LL_PWR_IsEnabledRetRegulator(void)449 __STATIC_INLINE uint32_t LL_PWR_IsEnabledRetRegulator(void)
450 {
451 return ((READ_BIT(PWR->CR2, PWR_CR2_RREN) == (PWR_CR2_RREN)) ? 1UL : 0UL);
452 }
453
454 /**
455 * @brief Enable VBAT and Temperature monitoring
456 * @rmtoll CR2 MONEN LL_PWR_EnableMonitoring
457 * @retval None
458 */
LL_PWR_EnableMonitoring(void)459 __STATIC_INLINE void LL_PWR_EnableMonitoring(void)
460 {
461 SET_BIT(PWR->CR2, PWR_CR2_MONEN);
462 }
463
464 /**
465 * @brief Disable VBAT and Temperature monitoring
466 * @rmtoll CR2 MONEN LL_PWR_DisableMonitoring
467 * @retval None
468 */
LL_PWR_DisableMonitoring(void)469 __STATIC_INLINE void LL_PWR_DisableMonitoring(void)
470 {
471 CLEAR_BIT(PWR->CR2, PWR_CR2_MONEN);
472 }
473
474 /**
475 * @brief Check if the VBAT and Temperature monitoring is enabled
476 * @rmtoll CR2 MONEN LL_PWR_IsEnabledMonitoring
477 * @retval State of bit (1 or 0).
478 */
LL_PWR_IsEnabledMonitoring(void)479 __STATIC_INLINE uint32_t LL_PWR_IsEnabledMonitoring(void)
480 {
481 return ((READ_BIT(PWR->CR2, PWR_CR2_MONEN) == (PWR_CR2_MONEN)) ? 1UL : 0UL);
482 }
483
484 /**
485 * @brief Enable battery charging
486 * @rmtoll CR3 VBE LL_PWR_EnableBatteryCharging
487 * @retval None
488 */
LL_PWR_EnableBatteryCharging(void)489 __STATIC_INLINE void LL_PWR_EnableBatteryCharging(void)
490 {
491 SET_BIT(PWR->CR3, PWR_CR3_VBE);
492 }
493
494 /**
495 * @brief Disable battery charging
496 * @rmtoll CR3 VBE LL_PWR_DisableBatteryCharging
497 * @retval None
498 */
LL_PWR_DisableBatteryCharging(void)499 __STATIC_INLINE void LL_PWR_DisableBatteryCharging(void)
500 {
501 CLEAR_BIT(PWR->CR3, PWR_CR3_VBE);
502 }
503
504 /**
505 * @brief Check if battery charging is enabled
506 * @rmtoll CR3 VBE LL_PWR_IsEnabledBatteryCharging
507 * @retval State of bit (1 or 0).
508 */
LL_PWR_IsEnabledBatteryCharging(void)509 __STATIC_INLINE uint32_t LL_PWR_IsEnabledBatteryCharging(void)
510 {
511 return ((READ_BIT(PWR->CR3, PWR_CR3_VBE) == (PWR_CR3_VBE)) ? 1UL : 0UL);
512 }
513
514 /**
515 * @brief Set the Battery charge resistor impedance
516 * @rmtoll CR3 VBRS LL_PWR_SetBattChargResistor
517 * @param Resistor This parameter can be one of the following values:
518 * @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K
519 * @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K
520 * @retval None
521 */
LL_PWR_SetBattChargResistor(uint32_t Resistor)522 __STATIC_INLINE void LL_PWR_SetBattChargResistor(uint32_t Resistor)
523 {
524 MODIFY_REG(PWR->CR3, PWR_CR3_VBRS, Resistor);
525 }
526
527 /**
528 * @brief Get the Battery charge resistor impedance
529 * @rmtoll CR3 VBRS LL_PWR_GetBattChargResistor
530 * @retval Returned value can be one of the following values:
531 * @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K
532 * @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K
533 */
LL_PWR_GetBattChargResistor(void)534 __STATIC_INLINE uint32_t LL_PWR_GetBattChargResistor(void)
535 {
536 return (uint32_t)(READ_BIT(PWR->CR3, PWR_CR3_VBRS));
537 }
538
539 /**
540 * @brief Enable 1V1 regulator
541 * @rmtoll CR3 REG11EN LL_PWR_Enable1V1Regulator
542 * @retval None
543 */
LL_PWR_Enable1V1Regulator(void)544 __STATIC_INLINE void LL_PWR_Enable1V1Regulator(void)
545 {
546 SET_BIT(PWR->CR3, PWR_CR3_REG11EN);
547 }
548
549 /**
550 * @brief Disable the 1V1 regulator
551 * @rmtoll CR3 REG11EN LL_PWR_Disable1V1Regulator
552 * @retval None
553 */
LL_PWR_Disable1V1Regulator(void)554 __STATIC_INLINE void LL_PWR_Disable1V1Regulator(void)
555 {
556 CLEAR_BIT(PWR->CR3, PWR_CR3_REG11EN);
557 }
558
559 /**
560 * @brief Check if the 1V1 regulator is enabled
561 * @rmtoll CR3 PWR_CR3_REG11EN LL_PWR_IsEnabled1V1Regulator
562 * @retval State of bit (1 or 0).
563 */
LL_PWR_IsEnabled1V1Regulator(void)564 __STATIC_INLINE uint32_t LL_PWR_IsEnabled1V1Regulator(void)
565 {
566 return ((READ_BIT(PWR->CR3, PWR_CR3_REG11EN) == (PWR_CR3_REG11EN)) ? 1UL : 0UL);
567 }
568
569 /**
570 * @brief Enable 1V8 regulator
571 * @rmtoll CR3 REG18EN LL_PWR_Enable1V8Regulator
572 * @retval None
573 */
LL_PWR_Enable1V8Regulator(void)574 __STATIC_INLINE void LL_PWR_Enable1V8Regulator(void)
575 {
576 SET_BIT(PWR->CR3, PWR_CR3_REG18EN);
577 }
578
579 /**
580 * @brief Disable the 1V8 regulator
581 * @rmtoll CR3 REG18EN LL_PWR_Disable1V8Regulator
582 * @retval None
583 */
LL_PWR_Disable1V8Regulator(void)584 __STATIC_INLINE void LL_PWR_Disable1V8Regulator(void)
585 {
586 CLEAR_BIT(PWR->CR3, PWR_CR3_REG18EN);
587 }
588
589 /**
590 * @brief Check if the 1V8 regulator is enabled
591 * @rmtoll CR3 PWR_CR3_REG18EN LL_PWR_IsEnabled1V8Regulator
592 * @retval State of bit (1 or 0).
593 */
LL_PWR_IsEnabled1V8Regulator(void)594 __STATIC_INLINE uint32_t LL_PWR_IsEnabled1V8Regulator(void)
595 {
596 return ((READ_BIT(PWR->CR3, PWR_CR3_REG18EN) == (PWR_CR3_REG18EN)) ? 1UL : 0UL);
597 }
598
599 /**
600 * @brief Enable the USB voltage detector
601 * @rmtoll CR3 USB33DEN LL_PWR_EnableUSBVoltageDetector
602 * @retval None
603 */
LL_PWR_EnableUSBVoltageDetector(void)604 __STATIC_INLINE void LL_PWR_EnableUSBVoltageDetector(void)
605 {
606 SET_BIT(PWR->CR3, PWR_CR3_USB33DEN);
607 }
608
609 /**
610 * @brief Disable the USB voltage detector
611 * @rmtoll CR3 USB33DEN LL_PWR_DisableUSBVoltageDetector
612 * @retval None
613 */
LL_PWR_DisableUSBVoltageDetector(void)614 __STATIC_INLINE void LL_PWR_DisableUSBVoltageDetector(void)
615 {
616 CLEAR_BIT(PWR->CR3, PWR_CR3_USB33DEN);
617 }
618
619 /**
620 * @brief Check if the USB voltage detector is enabled
621 * @rmtoll CR3 USB33DEN LL_PWR_IsEnabledUSBVoltageDetector
622 * @retval State of bit (1 or 0).
623 */
LL_PWR_IsEnabledUSBVoltageDetector(void)624 __STATIC_INLINE uint32_t LL_PWR_IsEnabledUSBVoltageDetector(void)
625 {
626 return ((READ_BIT(PWR->CR3, PWR_CR3_USB33DEN) == (PWR_CR3_USB33DEN)) ? 1UL : 0UL);
627 }
628
629 /**
630 * @brief Set mode when MCU enters enters deepsleep (CSTOP)
631 * @rmtoll MCUCR PDDS LL_PWR_CPU_SetD1PowerMode\n
632 * @param PDMode This parameter can be one of the following values:
633 * @arg @ref LL_PWR_MCU_MODE_STOP
634 * @arg @ref LL_PWR_MCU_MODE_STANDBY
635 * @retval None
636 */
LL_PWR_MCU_SetPowerMode(uint32_t PDMode)637 __STATIC_INLINE void LL_PWR_MCU_SetPowerMode(uint32_t PDMode)
638 {
639 MODIFY_REG(PWR->MCUCR, PWR_MCUCR_PDDS, PDMode);
640 }
641
642 /**
643 * @brief Get the mode when MCU enters enters deepsleep (CSTOP)
644 * @rmtoll MCUCR PDDS LL_PWR_MCU_GetPowerMode\n
645 * @retval Returned value can be one of the following values:
646 * @arg @ref LL_PWR_MCU_MODE_STOP
647 * @arg @ref LL_PWR_MCU_MODE_STANDBY
648 */
LL_PWR_MCU_GetPowerMode(void)649 __STATIC_INLINE uint32_t LL_PWR_MCU_GetPowerMode(void)
650 {
651 return (uint32_t)(READ_BIT(PWR->MCUCR, PWR_MCUCR_PDDS));
652 }
653
654 /**
655 * @brief Enable the WakeUp PINx functionality
656 * @rmtoll MCUWKUPENR WKUPEN1 LL_PWR_EnableWakeUpPin\n
657 * MCUWKUPENR WKUPEN2 LL_PWR_EnableWakeUpPin\n
658 * MCUWKUPENR WKUPEN3 LL_PWR_EnableWakeUpPin\n
659 * MCUWKUPENR WKUPEN4 LL_PWR_EnableWakeUpPin\n
660 * MCUWKUPENR WKUPEN5 LL_PWR_EnableWakeUpPin\n
661 * MCUWKUPENR WKUPEN6 LL_PWR_EnableWakeUpPin
662 * @param WakeUpPin This parameter can be one of the following values:
663 * @arg @ref LL_PWR_WAKEUP_PIN1
664 * @arg @ref LL_PWR_WAKEUP_PIN2
665 * @arg @ref LL_PWR_WAKEUP_PIN3
666 * @arg @ref LL_PWR_WAKEUP_PIN4
667 * @arg @ref LL_PWR_WAKEUP_PIN5
668 * @arg @ref LL_PWR_WAKEUP_PIN6
669 * @retval None
670 */
LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin)671 __STATIC_INLINE void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin)
672 {
673 SET_BIT(PWR->MCUWKUPENR, WakeUpPin);
674 }
675
676 /**
677 * @brief Disable the WakeUp PINx functionality
678 * @rmtoll MCUWKUPENR WKUPEN1 LL_PWR_DisableWakeUpPin\n
679 * MCUWKUPENR WKUPEN2 LL_PWR_DisableWakeUpPin\n
680 * MCUWKUPENR WKUPEN3 LL_PWR_DisableWakeUpPin\n
681 * MCUWKUPENR WKUPEN4 LL_PWR_DisableWakeUpPin\n
682 * MCUWKUPENR WKUPEN5 LL_PWR_DisableWakeUpPin\n
683 * MCUWKUPENR WKUPEN6 LL_PWR_DisableWakeUpPin
684 * @param WakeUpPin This parameter can be one of the following values:
685 * @arg @ref LL_PWR_WAKEUP_PIN1
686 * @arg @ref LL_PWR_WAKEUP_PIN2
687 * @arg @ref LL_PWR_WAKEUP_PIN3
688 * @arg @ref LL_PWR_WAKEUP_PIN4
689 * @arg @ref LL_PWR_WAKEUP_PIN5
690 * @arg @ref LL_PWR_WAKEUP_PIN6
691 * @retval None
692 */
LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin)693 __STATIC_INLINE void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin)
694 {
695 CLEAR_BIT(PWR->MCUWKUPENR, WakeUpPin);
696 }
697
698 /**
699 * @brief Check if the WakeUp PINx functionality is enabled
700 * @rmtoll MCUWKUPENR WKUPEN1 LL_PWR_IsEnabledWakeUpPin\n
701 * MCUWKUPENR WKUPEN2 LL_PWR_IsEnabledWakeUpPin\n
702 * MCUWKUPENR WKUPEN3 LL_PWR_IsEnabledWakeUpPin\n
703 * MCUWKUPENR WKUPEN4 LL_PWR_IsEnabledWakeUpPin\n
704 * MCUWKUPENR WKUPEN5 LL_PWR_IsEnabledWakeUpPin\n
705 * MCUWKUPENR WKUPEN6 LL_PWR_IsEnabledWakeUpPin
706 * @param WakeUpPin This parameter can be one of the following values:
707 * @arg @ref LL_PWR_WAKEUP_PIN1
708 * @arg @ref LL_PWR_WAKEUP_PIN2
709 * @arg @ref LL_PWR_WAKEUP_PIN3
710 * @arg @ref LL_PWR_WAKEUP_PIN4
711 * @arg @ref LL_PWR_WAKEUP_PIN5
712 * @arg @ref LL_PWR_WAKEUP_PIN6
713 * @retval State of bit (1 or 0).
714 */
LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin)715 __STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin)
716 {
717 return ((READ_BIT(PWR->MCUWKUPENR, WakeUpPin) == (WakeUpPin)) ? 1UL : 0UL);
718 }
719
720 /**
721 * @brief Set the Wake-Up pin polarity low for the event detection
722 * @rmtoll WKUPCR WKUPP1 LL_PWR_SetWakeUpPinPolarityLow\n
723 * WKUPCR WKUPP2 LL_PWR_SetWakeUpPinPolarityLow\n
724 * WKUPCR WKUPP3 LL_PWR_SetWakeUpPinPolarityLow\n
725 * WKUPCR WKUPP4 LL_PWR_SetWakeUpPinPolarityLow\n
726 * WKUPCR WKUPP5 LL_PWR_SetWakeUpPinPolarityLow\n
727 * WKUPCR WKUPP6 LL_PWR_SetWakeUpPinPolarityLow
728 * @param WakeUpPin This parameter can be one of the following values:
729 * @arg @ref LL_PWR_WAKEUP_PIN1
730 * @arg @ref LL_PWR_WAKEUP_PIN2
731 * @arg @ref LL_PWR_WAKEUP_PIN3
732 * @arg @ref LL_PWR_WAKEUP_PIN4
733 * @arg @ref LL_PWR_WAKEUP_PIN5
734 * @arg @ref LL_PWR_WAKEUP_PIN6
735 * @retval None
736 */
LL_PWR_SetWakeUpPinPolarityLow(uint32_t WakeUpPin)737 __STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityLow(uint32_t WakeUpPin)
738 {
739 SET_BIT(PWR->WKUPCR, (WakeUpPin << PWR_WKUPCR_WKUPP_Pos));
740 }
741
742 /**
743 * @brief Set the Wake-Up pin polarity high for the event detection
744 * @rmtoll WKUPCR WKUPP1 LL_PWR_SetWakeUpPinPolarityHigh\n
745 * WKUPCR WKUPP2 LL_PWR_SetWakeUpPinPolarityHigh\n
746 * WKUPCR WKUPP3 LL_PWR_SetWakeUpPinPolarityHigh\n
747 * WKUPCR WKUPP4 LL_PWR_SetWakeUpPinPolarityHigh\n
748 * WKUPCR WKUPP5 LL_PWR_SetWakeUpPinPolarityHigh\n
749 * WKUPCR WKUPP6 LL_PWR_SetWakeUpPinPolarityHigh
750 * @param WakeUpPin This parameter can be one of the following values:
751 * @arg @ref LL_PWR_WAKEUP_PIN1
752 * @arg @ref LL_PWR_WAKEUP_PIN2
753 * @arg @ref LL_PWR_WAKEUP_PIN3
754 * @arg @ref LL_PWR_WAKEUP_PIN4
755 * @arg @ref LL_PWR_WAKEUP_PIN5
756 * @arg @ref LL_PWR_WAKEUP_PIN6
757 * @retval None
758 */
LL_PWR_SetWakeUpPinPolarityHigh(uint32_t WakeUpPin)759 __STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityHigh(uint32_t WakeUpPin)
760 {
761 CLEAR_BIT(PWR->WKUPCR, (WakeUpPin << PWR_WKUPCR_WKUPP_Pos));
762 }
763
764 /**
765 * @brief Get the Wake-Up pin polarity for the event detection
766 * @rmtoll WKUPCR WKUPP1 LL_PWR_IsWakeUpPinPolarityLow\n
767 * WKUPCR WKUPP2 LL_PWR_IsWakeUpPinPolarityLow\n
768 * WKUPCR WKUPP3 LL_PWR_IsWakeUpPinPolarityLow\n
769 * WKUPCR WKUPP4 LL_PWR_IsWakeUpPinPolarityLow\n
770 * WKUPCR WKUPP5 LL_PWR_IsWakeUpPinPolarityLow\n
771 * WKUPCR WKUPP6 LL_PWR_IsWakeUpPinPolarityLow
772 * @param WakeUpPin This parameter can be one of the following values:
773 * @arg @ref LL_PWR_WAKEUP_PIN1
774 * @arg @ref LL_PWR_WAKEUP_PIN2
775 * @arg @ref LL_PWR_WAKEUP_PIN3
776 * @arg @ref LL_PWR_WAKEUP_PIN4
777 * @arg @ref LL_PWR_WAKEUP_PIN5
778 * @arg @ref LL_PWR_WAKEUP_PIN6
779 * @retval State of bit (1 or 0).
780 */
LL_PWR_IsWakeUpPinPolarityLow(uint32_t WakeUpPin)781 __STATIC_INLINE uint32_t LL_PWR_IsWakeUpPinPolarityLow(uint32_t WakeUpPin)
782 {
783 return ((READ_BIT(PWR->WKUPCR, (WakeUpPin << PWR_WKUPCR_WKUPP_Pos)) == (WakeUpPin << PWR_WKUPCR_WKUPP_Pos)) ? 1UL : 0UL);
784 }
785
786 /**
787 * @brief Set the Wake-Up pin Pull None
788 * @rmtoll WKUPCR WKUPPUPD1 LL_PWR_SetWakeUpPinPullNone\n
789 * WKUPCR WKUPPUPD2 LL_PWR_SetWakeUpPinPullNone\n
790 * WKUPCR WKUPPUPD3 LL_PWR_SetWakeUpPinPullNone\n
791 * WKUPCR WKUPPUPD4 LL_PWR_SetWakeUpPinPullNone\n
792 * WKUPCR WKUPPUPD5 LL_PWR_SetWakeUpPinPullNone\n
793 * WKUPCR WKUPPUPD6 LL_PWR_SetWakeUpPinPullNone
794 * @param WakeUpPin This parameter can be one of the following values:
795 * @arg @ref LL_PWR_WAKEUP_PIN1
796 * @arg @ref LL_PWR_WAKEUP_PIN2
797 * @arg @ref LL_PWR_WAKEUP_PIN3
798 * @arg @ref LL_PWR_WAKEUP_PIN4
799 * @arg @ref LL_PWR_WAKEUP_PIN5
800 * @arg @ref LL_PWR_WAKEUP_PIN6
801 * @retval None
802 */
LL_PWR_SetWakeUpPinPullNone(uint32_t WakeUpPin)803 __STATIC_INLINE void LL_PWR_SetWakeUpPinPullNone(uint32_t WakeUpPin)
804 {
805 MODIFY_REG(PWR->WKUPCR, \
806 (PWR_WKUPCR_WKUPPUPD1 << ((LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin)) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)), \
807 (LL_PWR_WAKEUP_PIN_NOPULL << ((PWR_WKUPCR_WKUPPUPD1_Pos + (LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin))) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)));
808 }
809
810 /**
811 * @brief Set the Wake-Up pin Pull Up
812 * @rmtoll WKUPCR WKUPPUPD1 LL_PWR_SetWakeUpPinPullUp\n
813 * WKUPCR WKUPPUPD2 LL_PWR_SetWakeUpPinPullUp\n
814 * WKUPCR WKUPPUPD3 LL_PWR_SetWakeUpPinPullUp\n
815 * WKUPCR WKUPPUPD4 LL_PWR_SetWakeUpPinPullUp\n
816 * WKUPCR WKUPPUPD5 LL_PWR_SetWakeUpPinPullUp\n
817 * WKUPCR WKUPPUPD6 LL_PWR_SetWakeUpPinPullUp
818 * @param WakeUpPin This parameter can be one of the following values:
819 * @arg @ref LL_PWR_WAKEUP_PIN1
820 * @arg @ref LL_PWR_WAKEUP_PIN2
821 * @arg @ref LL_PWR_WAKEUP_PIN3
822 * @arg @ref LL_PWR_WAKEUP_PIN4
823 * @arg @ref LL_PWR_WAKEUP_PIN5
824 * @arg @ref LL_PWR_WAKEUP_PIN6
825 * @retval None
826 */
LL_PWR_SetWakeUpPinPullUp(uint32_t WakeUpPin)827 __STATIC_INLINE void LL_PWR_SetWakeUpPinPullUp(uint32_t WakeUpPin)
828 {
829 MODIFY_REG(PWR->WKUPCR, \
830 (PWR_WKUPCR_WKUPPUPD1 << ((LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin)) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)), \
831 (LL_PWR_WAKEUP_PIN_PULLUP << ((PWR_WKUPCR_WKUPPUPD1_Pos + (LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin))) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)));
832 }
833
834 /**
835 * @brief Set the Wake-Up pin Pull Down
836 * @rmtoll WKUPCR WKUPPUPD1 LL_PWR_SetWakeUpPinPullDown\n
837 * WKUPCR WKUPPUPD2 LL_PWR_SetWakeUpPinPullDown\n
838 * WKUPCR WKUPPUPD3 LL_PWR_SetWakeUpPinPullDown\n
839 * WKUPCR WKUPPUPD4 LL_PWR_SetWakeUpPinPullDown\n
840 * WKUPCR WKUPPUPD5 LL_PWR_SetWakeUpPinPullDown\n
841 * WKUPCR WKUPPUPD6 LL_PWR_SetWakeUpPinPullDown
842 * @param WakeUpPin This parameter can be one of the following values:
843 * @arg @ref LL_PWR_WAKEUP_PIN1
844 * @arg @ref LL_PWR_WAKEUP_PIN2
845 * @arg @ref LL_PWR_WAKEUP_PIN3
846 * @arg @ref LL_PWR_WAKEUP_PIN4
847 * @arg @ref LL_PWR_WAKEUP_PIN5
848 * @arg @ref LL_PWR_WAKEUP_PIN6
849 * @retval None
850 */
LL_PWR_SetWakeUpPinPullDown(uint32_t WakeUpPin)851 __STATIC_INLINE void LL_PWR_SetWakeUpPinPullDown(uint32_t WakeUpPin)
852 {
853 MODIFY_REG(PWR->WKUPCR, \
854 (PWR_WKUPCR_WKUPPUPD1 << ((LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin)) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)), \
855 (LL_PWR_WAKEUP_PIN_PULLDOWN << ((PWR_WKUPCR_WKUPPUPD1_Pos + (LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin))) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)));
856 }
857
858 /**
859 * @brief Get the Wake-Up pin pull
860 * @rmtoll WKUPCR WKUPPUPD1 LL_PWR_GetWakeUpPinPull\n
861 * WKUPCR WKUPPUPD2 LL_PWR_GetWakeUpPinPull\n
862 * WKUPCR WKUPPUPD3 LL_PWR_GetWakeUpPinPull\n
863 * WKUPCR WKUPPUPD4 LL_PWR_GetWakeUpPinPull\n
864 * WKUPCR WKUPPUPD5 LL_PWR_GetWakeUpPinPull\n
865 * WKUPCR WKUPPUPD6 LL_PWR_GetWakeUpPinPull
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_PIN6
873 * @retval Returned value can be one of the following values:
874 * @arg @ref LL_PWR_WAKEUP_PIN_NOPULL
875 * @arg @ref LL_PWR_WAKEUP_PIN_PULLUP
876 * @arg @ref LL_PWR_WAKEUP_PIN_PULLDOWN
877 */
LL_PWR_GetWakeUpPinPull(uint32_t WakeUpPin)878 __STATIC_INLINE uint32_t LL_PWR_GetWakeUpPinPull(uint32_t WakeUpPin)
879 {
880 register uint32_t regValue = READ_BIT(PWR->WKUPCR, (PWR_WKUPCR_WKUPPUPD1 << ((LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin)) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)));
881
882 return (uint32_t)(regValue >> ((PWR_WKUPCR_WKUPPUPD1_Pos + (LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin))) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK));
883 }
884
885 /**
886 * @}
887 */
888
889 /** @defgroup PWR_LL_EF_FLAG_Management FLAG_Management
890 * @{
891 */
892
893 /**
894 * @brief Indicate whether VDD voltage is below the selected PVD threshold
895 * @rmtoll CSR1 PVDO LL_PWR_IsActiveFlag_PVDO
896 * @retval State of bit (1 or 0).
897 */
LL_PWR_IsActiveFlag_PVDO(void)898 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(void)
899 {
900 return ((READ_BIT(PWR->CSR1, PWR_CSR1_PVDO) == (PWR_CSR1_PVDO)) ? 1UL : 0UL);
901 }
902
903 /**
904 * @brief Indicate whether VDDA voltage is below the selected AVD threshold
905 * @rmtoll CSR1 AVDO LL_PWR_IsActiveFlag_AVDO
906 * @retval State of bit (1 or 0).
907 */
LL_PWR_IsActiveFlag_AVDO(void)908 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_AVDO(void)
909 {
910 return ((READ_BIT(PWR->CSR1, PWR_CSR1_AVDO) == (PWR_CSR1_AVDO)) ? 1UL : 0UL);
911 }
912
913 /**
914 * @brief Get Backup Regulator ready Flag
915 * @rmtoll CR2 BRRDY LL_PWR_IsActiveFlag_BRR
916 * @retval State of bit (1 or 0).
917 */
LL_PWR_IsActiveFlag_BRR(void)918 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_BRR(void)
919 {
920 return ((READ_BIT(PWR->CR2, PWR_CR2_BRRDY) == (PWR_CR2_BRRDY)) ? 1UL : 0UL);
921 }
922
923 /**
924 * @brief Get Retention Regulator ready Flag
925 * @rmtoll CR2 RRRDY LL_PWR_IsActiveFlag_RRR
926 * @retval State of bit (1 or 0).
927 */
LL_PWR_IsActiveFlag_RRR(void)928 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_RRR(void)
929 {
930 return ((READ_BIT(PWR->CR2, PWR_CR2_RRRDY) == (PWR_CR2_RRRDY)) ? 1UL : 0UL);
931 }
932
933 /**
934 * @brief Indicate whether the VBAT level is equal or below low threshold
935 * @rmtoll CR2 VBATL LL_PWR_IsActiveFlag_VBATL
936 * @retval State of bit (1 or 0).
937 */
LL_PWR_IsActiveFlag_VBATL(void)938 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VBATL(void)
939 {
940 return ((READ_BIT(PWR->CR2, PWR_CR2_VBATL) == (PWR_CR2_VBATL)) ? 1UL : 0UL);
941 }
942
943 /**
944 * @brief Indicate whether the VBAT level is equal or above high threshold
945 * @rmtoll CR2 VBATH LL_PWR_IsActiveFlag_VBATH
946 * @retval State of bit (1 or 0).
947 */
LL_PWR_IsActiveFlag_VBATH(void)948 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VBATH(void)
949 {
950 return ((READ_BIT(PWR->CR2, PWR_CR2_VBATH) == (PWR_CR2_VBATH)) ? 1UL : 0UL);
951 }
952
953 /**
954 * @brief Indicate whether the device temperature level is equal or below low threshold
955 * @rmtoll CR2 TEMPL LL_PWR_IsActiveFlag_TEMPL
956 * @retval State of bit (1 or 0).
957 */
LL_PWR_IsActiveFlag_TEMPL(void)958 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_TEMPL(void)
959 {
960 return ((READ_BIT(PWR->CR2, PWR_CR2_TEMPL) == (PWR_CR2_TEMPL)) ? 1UL : 0UL);
961 }
962
963 /**
964 * @brief Indicate whether the CPU temperature level is equal or above high threshold
965 * @rmtoll CR2 TEMPH LL_PWR_IsActiveFlag_TEMPH
966 * @retval State of bit (1 or 0).
967 */
LL_PWR_IsActiveFlag_TEMPH(void)968 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_TEMPH(void)
969 {
970 return ((READ_BIT(PWR->CR2, PWR_CR2_TEMPH) == (PWR_CR2_TEMPH)) ? 1UL : 0UL);
971 }
972
973 /**
974 * @brief Indicate whether the USB supply is ready or not
975 * @rmtoll CR3 USBRDY LL_PWR_IsActiveFlag_USB
976 * @retval State of bit (1 or 0).
977 */
LL_PWR_IsActiveFlag_USB(void)978 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_USB(void)
979 {
980 return ((READ_BIT(PWR->CR3, PWR_CR3_USB33RDY) == (PWR_CR3_USB33RDY)) ? 1UL : 0UL);
981 }
982
983 /**
984 * @brief Indicate whether the 1V1 regulator is ready or not
985 * @rmtoll CR3 REG11RDY LL_PWR_IsActiveFlag_R1V1
986 * @retval State of bit (1 or 0).
987 */
LL_PWR_IsActiveFlag_R1V1(void)988 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_R1V1(void)
989 {
990 return ((READ_BIT(PWR->CR3, PWR_CR3_REG11RDY) == (PWR_CR3_REG11RDY)) ? 1UL : 0UL);
991 }
992
993 /**
994 * @brief Indicate whether the 1V8 regulator is ready or not
995 * @rmtoll CR3 REG18RDY LL_PWR_IsActiveFlag_R1V8
996 * @retval State of bit (1 or 0).
997 */
LL_PWR_IsActiveFlag_R1V8(void)998 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_R1V8(void)
999 {
1000 return ((READ_BIT(PWR->CR3, PWR_CR3_REG18RDY) == (PWR_CR3_REG18RDY)) ? 1UL : 0UL);
1001 }
1002
1003 /**
1004 * @brief Get MCU System Stop Flag
1005 * @rmtoll MCUCR STOPF LL_PWR_MCU_IsActiveFlag_STOP
1006 * @retval State of bit (1 or 0).
1007 */
LL_PWR_MCU_IsActiveFlag_STOP(void)1008 __STATIC_INLINE uint32_t LL_PWR_MCU_IsActiveFlag_STOP(void)
1009 {
1010 return ((READ_BIT(PWR->MCUCR, PWR_MCUCR_STOPF) == (PWR_MCUCR_STOPF)) ? 1UL : 0UL);
1011 }
1012
1013 /**
1014 * @brief Get MCU System Standby Flag
1015 * @rmtoll MCUCR SBF LL_PWR_MCU_IsActiveFlag_SB
1016 * @retval State of bit (1 or 0).
1017 */
LL_PWR_MCU_IsActiveFlag_SB(void)1018 __STATIC_INLINE uint32_t LL_PWR_MCU_IsActiveFlag_SB(void)
1019 {
1020 return ((READ_BIT(PWR->MCUCR, PWR_MCUCR_SBF) == (PWR_MCUCR_SBF)) ? 1UL : 0UL);
1021 }
1022
1023 /**
1024 * @brief Get Wake-up Flag 6
1025 * @rmtoll WKUPFR WKUPF6 LL_PWR_IsActiveFlag_WU6
1026 * @retval State of bit (1 or 0).
1027 */
LL_PWR_IsActiveFlag_WU6(void)1028 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU6(void)
1029 {
1030 return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF6) == (PWR_WKUPFR_WKUPF6)) ? 1UL : 0UL);
1031 }
1032
1033 /**
1034 * @brief Get Wake-up Flag 5
1035 * @rmtoll WKUPFR WKUPF5 LL_PWR_IsActiveFlag_WU5
1036 * @retval State of bit (1 or 0).
1037 */
LL_PWR_IsActiveFlag_WU5(void)1038 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU5(void)
1039 {
1040 return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF5) == (PWR_WKUPFR_WKUPF5)) ? 1UL : 0UL);
1041 }
1042
1043 /**
1044 * @brief Get Wake-up Flag 4
1045 * @rmtoll WKUPFR WKUPF4 LL_PWR_IsActiveFlag_WU4
1046 * @retval State of bit (1 or 0).
1047 */
LL_PWR_IsActiveFlag_WU4(void)1048 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU4(void)
1049 {
1050 return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF4) == (PWR_WKUPFR_WKUPF4)) ? 1UL : 0UL);
1051 }
1052
1053 /**
1054 * @brief Get Wake-up Flag 3
1055 * @rmtoll WKUPFR WKUPF3 LL_PWR_IsActiveFlag_WU3
1056 * @retval State of bit (1 or 0).
1057 */
LL_PWR_IsActiveFlag_WU3(void)1058 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU3(void)
1059 {
1060 return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF3) == (PWR_WKUPFR_WKUPF3)) ? 1UL : 0UL);
1061 }
1062
1063 /**
1064 * @brief Get Wake-up Flag 2
1065 * @rmtoll WKUPFR WKUPF2 LL_PWR_IsActiveFlag_WU2
1066 * @retval State of bit (1 or 0).
1067 */
LL_PWR_IsActiveFlag_WU2(void)1068 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU2(void)
1069 {
1070 return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF2) == (PWR_WKUPFR_WKUPF2)) ? 1UL : 0UL);
1071 }
1072
1073 /**
1074 * @brief Get Wake-up Flag 1
1075 * @rmtoll WKUPFR WKUPF1 LL_PWR_IsActiveFlag_WU1
1076 * @retval State of bit (1 or 0).
1077 */
LL_PWR_IsActiveFlag_WU1(void)1078 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU1(void)
1079 {
1080 return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF1) == (PWR_WKUPFR_WKUPF1)) ? 1UL : 0UL);
1081 }
1082
1083 /**
1084 * @brief Clear MCU STANDBY and STOP flags
1085 * @rmtoll MCUCR CSSF LL_PWR_ClearFlag_CPU
1086 * @retval None
1087 */
LL_PWR_ClearFlag_MCU(void)1088 __STATIC_INLINE void LL_PWR_ClearFlag_MCU(void)
1089 {
1090 SET_BIT(PWR->MCUCR, PWR_MCUCR_CSSF);
1091 }
1092
1093 /**
1094 * @brief Clear Wake-up Flag 6
1095 * @rmtoll WKUPCR WKUPC6 LL_PWR_ClearFlag_WU6
1096 * @retval None
1097 */
LL_PWR_ClearFlag_WU6(void)1098 __STATIC_INLINE void LL_PWR_ClearFlag_WU6(void)
1099 {
1100 WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC6);
1101 }
1102
1103 /**
1104 * @brief Clear Wake-up Flag 5
1105 * @rmtoll WKUPCR WKUPC5 LL_PWR_ClearFlag_WU5
1106 * @retval None
1107 */
LL_PWR_ClearFlag_WU5(void)1108 __STATIC_INLINE void LL_PWR_ClearFlag_WU5(void)
1109 {
1110 WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC5);
1111 }
1112
1113 /**
1114 * @brief Clear Wake-up Flag 4
1115 * @rmtoll WKUPCR WKUPC4 LL_PWR_ClearFlag_WU4
1116 * @retval None
1117 */
LL_PWR_ClearFlag_WU4(void)1118 __STATIC_INLINE void LL_PWR_ClearFlag_WU4(void)
1119 {
1120 WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC4);
1121 }
1122
1123 /**
1124 * @brief Clear Wake-up Flag 3
1125 * @rmtoll WKUPCR WKUPC3 LL_PWR_ClearFlag_WU3
1126 * @retval None
1127 */
LL_PWR_ClearFlag_WU3(void)1128 __STATIC_INLINE void LL_PWR_ClearFlag_WU3(void)
1129 {
1130 WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC3);
1131 }
1132
1133 /**
1134 * @brief Clear Wake-up Flag 2
1135 * @rmtoll WKUPCR WKUPC2 LL_PWR_ClearFlag_WU2
1136 * @retval None
1137 */
LL_PWR_ClearFlag_WU2(void)1138 __STATIC_INLINE void LL_PWR_ClearFlag_WU2(void)
1139 {
1140 WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC2);
1141 }
1142
1143 /**
1144 * @brief Clear Wake-up Flag 1
1145 * @rmtoll WKUPCR WKUPC1 LL_PWR_ClearFlag_WU1
1146 * @retval None
1147 */
LL_PWR_ClearFlag_WU1(void)1148 __STATIC_INLINE void LL_PWR_ClearFlag_WU1(void)
1149 {
1150 WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC1);
1151 }
1152
1153 #if defined(USE_FULL_LL_DRIVER)
1154 /** @defgroup PWR_LL_EF_Init De-initialization function
1155 * @{
1156 */
1157 ErrorStatus LL_PWR_DeInit(void);
1158 /**
1159 * @}
1160 */
1161 #endif /* USE_FULL_LL_DRIVER */
1162
1163
1164 /**
1165 * @}
1166 */
1167
1168 /**
1169 * @}
1170 */
1171
1172 /**
1173 * @}
1174 */
1175
1176 #endif /* defined(PWR) */
1177
1178 /**
1179 * @}
1180 */
1181
1182 #ifdef __cplusplus
1183 }
1184 #endif
1185
1186 #endif /* STM32MP1xx_LL_PWR_H */
1187