]> git.sur5r.net Git - freertos/blob
b6364c5f362766a1e58be843224a63f21ecefbab
[freertos] /
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32l4xx_hal_pwr_ex.h\r
4   * @author  MCD Application Team\r
5   * @brief   Header file of PWR HAL Extended module.\r
6   ******************************************************************************\r
7   * @attention\r
8   *\r
9   * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.\r
10   * All rights reserved.</center></h2>\r
11   *\r
12   * This software component is licensed by ST under BSD 3-Clause license,\r
13   * the "License"; You may not use this file except in compliance with the\r
14   * License. You may obtain a copy of the License at:\r
15   *                        opensource.org/licenses/BSD-3-Clause\r
16   *\r
17   ******************************************************************************\r
18   */\r
19 \r
20 /* Define to prevent recursive inclusion -------------------------------------*/\r
21 #ifndef __STM32L4xx_HAL_PWR_EX_H\r
22 #define __STM32L4xx_HAL_PWR_EX_H\r
23 \r
24 #ifdef __cplusplus\r
25  extern "C" {\r
26 #endif\r
27 \r
28 /* Includes ------------------------------------------------------------------*/\r
29 #include "stm32l4xx_hal_def.h"\r
30 \r
31 /** @addtogroup STM32L4xx_HAL_Driver\r
32   * @{\r
33   */\r
34 \r
35 /** @addtogroup PWREx\r
36   * @{\r
37   */\r
38 \r
39 \r
40 /* Exported types ------------------------------------------------------------*/\r
41 \r
42 /** @defgroup PWREx_Exported_Types PWR Extended Exported Types\r
43   * @{\r
44   */\r
45 \r
46 \r
47 /**\r
48   * @brief  PWR PVM configuration structure definition\r
49   */\r
50 typedef struct\r
51 {\r
52   uint32_t PVMType;   /*!< PVMType: Specifies which voltage is monitored and against which threshold.\r
53                            This parameter can be a value of @ref PWREx_PVM_Type.\r
54                            @arg @ref PWR_PVM_1 Peripheral Voltage Monitoring 1 enable: VDDUSB versus 1.2 V (applicable when USB feature is supported).\r
55 @if STM32L486xx\r
56                            @arg @ref PWR_PVM_2 Peripheral Voltage Monitoring 2 enable: VDDIO2 versus 0.9 V (applicable when VDDIO2 is present on device).\r
57 @endif\r
58                            @arg @ref PWR_PVM_3 Peripheral Voltage Monitoring 3 enable: VDDA versus 1.62 V.\r
59                            @arg @ref PWR_PVM_4 Peripheral Voltage Monitoring 4 enable: VDDA versus 2.2 V. */\r
60 \r
61   uint32_t Mode;      /*!< Mode: Specifies the operating mode for the selected pins.\r
62                            This parameter can be a value of @ref PWREx_PVM_Mode. */\r
63 }PWR_PVMTypeDef;\r
64 \r
65 /**\r
66   * @}\r
67   */\r
68 \r
69 /* Exported constants --------------------------------------------------------*/\r
70 \r
71 /** @defgroup PWREx_Exported_Constants  PWR Extended Exported Constants\r
72   * @{\r
73   */\r
74 \r
75 /** @defgroup PWREx_WUP_Polarity Shift to apply to retrieve polarity information from PWR_WAKEUP_PINy_xxx constants\r
76   * @{\r
77   */\r
78 #define PWR_WUP_POLARITY_SHIFT                  0x05   /*!< Internal constant used to retrieve wakeup pin polariry */\r
79 /**\r
80   * @}\r
81   */\r
82 \r
83 \r
84 /** @defgroup PWREx_WakeUp_Pins  PWR wake-up pins\r
85   * @{\r
86   */\r
87 #define PWR_WAKEUP_PIN1                 PWR_CR3_EWUP1  /*!< Wakeup pin 1 (with high level polarity) */\r
88 #define PWR_WAKEUP_PIN2                 PWR_CR3_EWUP2  /*!< Wakeup pin 2 (with high level polarity) */\r
89 #define PWR_WAKEUP_PIN3                 PWR_CR3_EWUP3  /*!< Wakeup pin 3 (with high level polarity) */\r
90 #define PWR_WAKEUP_PIN4                 PWR_CR3_EWUP4  /*!< Wakeup pin 4 (with high level polarity) */\r
91 #define PWR_WAKEUP_PIN5                 PWR_CR3_EWUP5  /*!< Wakeup pin 5 (with high level polarity) */\r
92 #define PWR_WAKEUP_PIN1_HIGH            PWR_CR3_EWUP1  /*!< Wakeup pin 1 (with high level polarity) */\r
93 #define PWR_WAKEUP_PIN2_HIGH            PWR_CR3_EWUP2  /*!< Wakeup pin 2 (with high level polarity) */\r
94 #define PWR_WAKEUP_PIN3_HIGH            PWR_CR3_EWUP3  /*!< Wakeup pin 3 (with high level polarity) */\r
95 #define PWR_WAKEUP_PIN4_HIGH            PWR_CR3_EWUP4  /*!< Wakeup pin 4 (with high level polarity) */\r
96 #define PWR_WAKEUP_PIN5_HIGH            PWR_CR3_EWUP5  /*!< Wakeup pin 5 (with high level polarity) */\r
97 #define PWR_WAKEUP_PIN1_LOW             (uint32_t)((PWR_CR4_WP1<<PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP1) /*!< Wakeup pin 1 (with low level polarity) */\r
98 #define PWR_WAKEUP_PIN2_LOW             (uint32_t)((PWR_CR4_WP2<<PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP2) /*!< Wakeup pin 2 (with low level polarity) */\r
99 #define PWR_WAKEUP_PIN3_LOW             (uint32_t)((PWR_CR4_WP3<<PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP3) /*!< Wakeup pin 3 (with low level polarity) */\r
100 #define PWR_WAKEUP_PIN4_LOW             (uint32_t)((PWR_CR4_WP4<<PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP4) /*!< Wakeup pin 4 (with low level polarity) */\r
101 #define PWR_WAKEUP_PIN5_LOW             (uint32_t)((PWR_CR4_WP5<<PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP5) /*!< Wakeup pin 5 (with low level polarity) */\r
102 /**\r
103   * @}\r
104   */\r
105 \r
106 /** @defgroup PWREx_PVM_Type Peripheral Voltage Monitoring type\r
107   * @{\r
108   */\r
109 #if defined(PWR_CR2_PVME1)\r
110 #define PWR_PVM_1                  PWR_CR2_PVME1  /*!< Peripheral Voltage Monitoring 1 enable: VDDUSB versus 1.2 V (applicable when USB feature is supported) */\r
111 #endif /* PWR_CR2_PVME1 */\r
112 #if defined(PWR_CR2_PVME2)\r
113 #define PWR_PVM_2                  PWR_CR2_PVME2  /*!< Peripheral Voltage Monitoring 2 enable: VDDIO2 versus 0.9 V (applicable when VDDIO2 is present on device) */\r
114 #endif /* PWR_CR2_PVME2 */\r
115 #define PWR_PVM_3                  PWR_CR2_PVME3  /*!< Peripheral Voltage Monitoring 3 enable: VDDA versus 1.62 V */\r
116 #define PWR_PVM_4                  PWR_CR2_PVME4  /*!< Peripheral Voltage Monitoring 4 enable: VDDA versus 2.2 V  */\r
117 /**\r
118   * @}\r
119   */\r
120 \r
121 /** @defgroup PWREx_PVM_Mode  PWR PVM interrupt and event mode\r
122   * @{\r
123   */\r
124 #define PWR_PVM_MODE_NORMAL                 ((uint32_t)0x00000000)   /*!< basic mode is used */\r
125 #define PWR_PVM_MODE_IT_RISING              ((uint32_t)0x00010001)   /*!< External Interrupt Mode with Rising edge trigger detection */\r
126 #define PWR_PVM_MODE_IT_FALLING             ((uint32_t)0x00010002)   /*!< External Interrupt Mode with Falling edge trigger detection */\r
127 #define PWR_PVM_MODE_IT_RISING_FALLING      ((uint32_t)0x00010003)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection */\r
128 #define PWR_PVM_MODE_EVENT_RISING           ((uint32_t)0x00020001)   /*!< Event Mode with Rising edge trigger detection */\r
129 #define PWR_PVM_MODE_EVENT_FALLING          ((uint32_t)0x00020002)   /*!< Event Mode with Falling edge trigger detection */\r
130 #define PWR_PVM_MODE_EVENT_RISING_FALLING   ((uint32_t)0x00020003)   /*!< Event Mode with Rising/Falling edge trigger detection */\r
131 /**\r
132   * @}\r
133   */\r
134 \r
135 \r
136 \r
137 /** @defgroup PWREx_Regulator_Voltage_Scale  PWR Regulator voltage scale\r
138   * @{\r
139   */\r
140 #if defined(PWR_CR5_R1MODE)\r
141 #define PWR_REGULATOR_VOLTAGE_SCALE1_BOOST  ((uint32_t)0x00000000)  /*!< Voltage scaling range 1 boost mode  */\r
142 #endif\r
143 #define PWR_REGULATOR_VOLTAGE_SCALE1        PWR_CR1_VOS_0           /*!< Voltage scaling range 1 normal mode */\r
144 #define PWR_REGULATOR_VOLTAGE_SCALE2        PWR_CR1_VOS_1           /*!< Voltage scaling range 2             */\r
145 /**\r
146   * @}\r
147   */\r
148 \r
149 \r
150 /** @defgroup PWREx_VBAT_Battery_Charging_Selection PWR battery charging resistor selection\r
151   * @{\r
152   */\r
153 #define PWR_BATTERY_CHARGING_RESISTOR_5          ((uint32_t)0x00000000) /*!< VBAT charging through a 5 kOhms resistor   */\r
154 #define PWR_BATTERY_CHARGING_RESISTOR_1_5         PWR_CR4_VBRS          /*!< VBAT charging through a 1.5 kOhms resistor */\r
155 /**\r
156   * @}\r
157   */\r
158 \r
159 /** @defgroup PWREx_VBAT_Battery_Charging PWR battery charging\r
160   * @{\r
161   */\r
162 #define PWR_BATTERY_CHARGING_DISABLE        ((uint32_t)0x00000000)\r
163 #define PWR_BATTERY_CHARGING_ENABLE         PWR_CR4_VBE\r
164 /**\r
165   * @}\r
166   */\r
167 \r
168 /** @defgroup PWREx_GPIO_Bit_Number GPIO bit number for I/O setting in standby/shutdown mode\r
169   * @{\r
170   */\r
171 #define PWR_GPIO_BIT_0   PWR_PUCRA_PA0    /*!< GPIO port I/O pin 0  */\r
172 #define PWR_GPIO_BIT_1   PWR_PUCRA_PA1    /*!< GPIO port I/O pin 1  */\r
173 #define PWR_GPIO_BIT_2   PWR_PUCRA_PA2    /*!< GPIO port I/O pin 2  */\r
174 #define PWR_GPIO_BIT_3   PWR_PUCRA_PA3    /*!< GPIO port I/O pin 3  */\r
175 #define PWR_GPIO_BIT_4   PWR_PUCRA_PA4    /*!< GPIO port I/O pin 4  */\r
176 #define PWR_GPIO_BIT_5   PWR_PUCRA_PA5    /*!< GPIO port I/O pin 5  */\r
177 #define PWR_GPIO_BIT_6   PWR_PUCRA_PA6    /*!< GPIO port I/O pin 6  */\r
178 #define PWR_GPIO_BIT_7   PWR_PUCRA_PA7    /*!< GPIO port I/O pin 7  */\r
179 #define PWR_GPIO_BIT_8   PWR_PUCRA_PA8    /*!< GPIO port I/O pin 8  */\r
180 #define PWR_GPIO_BIT_9   PWR_PUCRA_PA9    /*!< GPIO port I/O pin 9  */\r
181 #define PWR_GPIO_BIT_10  PWR_PUCRA_PA10   /*!< GPIO port I/O pin 10 */\r
182 #define PWR_GPIO_BIT_11  PWR_PUCRA_PA11   /*!< GPIO port I/O pin 11 */\r
183 #define PWR_GPIO_BIT_12  PWR_PUCRA_PA12   /*!< GPIO port I/O pin 12 */\r
184 #define PWR_GPIO_BIT_13  PWR_PUCRA_PA13   /*!< GPIO port I/O pin 13 */\r
185 #define PWR_GPIO_BIT_14  PWR_PDCRA_PA14   /*!< GPIO port I/O pin 14 */\r
186 #define PWR_GPIO_BIT_15  PWR_PUCRA_PA15   /*!< GPIO port I/O pin 15 */\r
187 /**\r
188   * @}\r
189   */\r
190 \r
191 /** @defgroup PWREx_GPIO GPIO port\r
192   * @{\r
193   */\r
194 #define PWR_GPIO_A   0x00000000U      /*!< GPIO port A */\r
195 #define PWR_GPIO_B   0x00000001U      /*!< GPIO port B */\r
196 #define PWR_GPIO_C   0x00000002U      /*!< GPIO port C */\r
197 #if defined(GPIOD_BASE)\r
198 #define PWR_GPIO_D   0x00000003U      /*!< GPIO port D */\r
199 #endif\r
200 #if defined(GPIOE_BASE)\r
201 #define PWR_GPIO_E   0x00000004U      /*!< GPIO port E */\r
202 #endif\r
203 #if defined(GPIOF_BASE)\r
204 #define PWR_GPIO_F   0x00000005U      /*!< GPIO port F */\r
205 #endif\r
206 #if defined(GPIOG_BASE)\r
207 #define PWR_GPIO_G   0x00000006U      /*!< GPIO port G */\r
208 #endif\r
209 #define PWR_GPIO_H   0x00000007U      /*!< GPIO port H */\r
210 #if defined(GPIOI_BASE)\r
211 #define PWR_GPIO_I   0x00000008U      /*!< GPIO port I */\r
212 #endif\r
213 /**\r
214   * @}\r
215   */\r
216 \r
217 /** @defgroup PWREx_PVM_EXTI_LINE PWR PVM external interrupts lines\r
218   * @{\r
219   */\r
220 #if defined(PWR_CR2_PVME1)\r
221 #define PWR_EXTI_LINE_PVM1  ((uint32_t)0x00000008)  /*!< External interrupt line 35 Connected to the PVM1 EXTI Line   */\r
222 #endif /* PWR_CR2_PVME1 */\r
223 #if defined(PWR_CR2_PVME2)\r
224 #define PWR_EXTI_LINE_PVM2  ((uint32_t)0x00000010)  /*!< External interrupt line 36 Connected to the PVM2 EXTI Line   */\r
225 #endif /* PWR_CR2_PVME2 */\r
226 #define PWR_EXTI_LINE_PVM3  ((uint32_t)0x00000020)  /*!< External interrupt line 37 Connected to the PVM3 EXTI Line   */\r
227 #define PWR_EXTI_LINE_PVM4  ((uint32_t)0x00000040)  /*!< External interrupt line 38 Connected to the PVM4 EXTI Line   */\r
228 /**\r
229   * @}\r
230   */\r
231 \r
232 /** @defgroup PWREx_PVM_EVENT_LINE PWR PVM event lines\r
233   * @{\r
234   */\r
235 #if defined(PWR_CR2_PVME1)\r
236 #define PWR_EVENT_LINE_PVM1 ((uint32_t)0x00000008)  /*!< Event line 35 Connected to the PVM1 EXTI Line */\r
237 #endif /* PWR_CR2_PVME1 */\r
238 #if defined(PWR_CR2_PVME2)\r
239 #define PWR_EVENT_LINE_PVM2 ((uint32_t)0x00000010)  /*!< Event line 36 Connected to the PVM2 EXTI Line */\r
240 #endif /* PWR_CR2_PVME2 */\r
241 #define PWR_EVENT_LINE_PVM3 ((uint32_t)0x00000020)  /*!< Event line 37 Connected to the PVM3 EXTI Line */\r
242 #define PWR_EVENT_LINE_PVM4 ((uint32_t)0x00000040)  /*!< Event line 38 Connected to the PVM4 EXTI Line */\r
243 /**\r
244   * @}\r
245   */\r
246 \r
247 /** @defgroup PWREx_Flag  PWR Status Flags\r
248   *        Elements values convention: 0000 0000 0XXY YYYYb\r
249   *           - Y YYYY  : Flag position in the XX register (5 bits)\r
250   *           - XX  : Status register (2 bits)\r
251   *                 - 01: SR1 register\r
252   *                 - 10: SR2 register\r
253   *        The only exception is PWR_FLAG_WU, encompassing all\r
254   *        wake-up flags and set to PWR_SR1_WUF.\r
255   * @{\r
256   */\r
257 #define PWR_FLAG_WUF1                       ((uint32_t)0x0020)   /*!< Wakeup event on wakeup pin 1 */\r
258 #define PWR_FLAG_WUF2                       ((uint32_t)0x0021)   /*!< Wakeup event on wakeup pin 2 */\r
259 #define PWR_FLAG_WUF3                       ((uint32_t)0x0022)   /*!< Wakeup event on wakeup pin 3 */\r
260 #define PWR_FLAG_WUF4                       ((uint32_t)0x0023)   /*!< Wakeup event on wakeup pin 4 */\r
261 #define PWR_FLAG_WUF5                       ((uint32_t)0x0024)   /*!< Wakeup event on wakeup pin 5 */\r
262 #define PWR_FLAG_WU                         PWR_SR1_WUF          /*!< Encompass wakeup event on all wakeup pins */\r
263 #define PWR_FLAG_SB                         ((uint32_t)0x0028)   /*!< Standby flag */\r
264 #if defined(PWR_SR1_EXT_SMPS_RDY)\r
265 #define PWR_FLAG_EXT_SMPS                   ((uint32_t)0x002D)   /*!< Switching to external SMPS ready flag */\r
266 #endif /* PWR_SR1_EXT_SMPS_RDY */\r
267 #define PWR_FLAG_WUFI                       ((uint32_t)0x002F)   /*!< Wakeup on internal wakeup line */\r
268 \r
269 #define PWR_FLAG_REGLPS                     ((uint32_t)0x0048)   /*!< Low-power regulator start flag */\r
270 #define PWR_FLAG_REGLPF                     ((uint32_t)0x0049)   /*!< Low-power regulator flag */\r
271 #define PWR_FLAG_VOSF                       ((uint32_t)0x004A)   /*!< Voltage scaling flag */\r
272 #define PWR_FLAG_PVDO                       ((uint32_t)0x004B)   /*!< Power Voltage Detector output flag */\r
273 #if defined(PWR_CR2_PVME1)\r
274 #define PWR_FLAG_PVMO1                      ((uint32_t)0x004C)   /*!< Power Voltage Monitoring 1 output flag */\r
275 #endif /* PWR_CR2_PVME1 */\r
276 #if defined(PWR_CR2_PVME2)\r
277 #define PWR_FLAG_PVMO2                      ((uint32_t)0x004D)   /*!< Power Voltage Monitoring 2 output flag */\r
278 #endif /* PWR_CR2_PVME2 */\r
279 #define PWR_FLAG_PVMO3                      ((uint32_t)0x004E)   /*!< Power Voltage Monitoring 3 output flag */\r
280 #define PWR_FLAG_PVMO4                      ((uint32_t)0x004F)   /*!< Power Voltage Monitoring 4 output flag */\r
281 /**\r
282   * @}\r
283   */\r
284 \r
285 /**\r
286   * @}\r
287   */\r
288 \r
289 /* Exported macros -----------------------------------------------------------*/\r
290 /** @defgroup PWREx_Exported_Macros PWR Extended Exported Macros\r
291  * @{\r
292  */\r
293 \r
294 #if defined(PWR_CR2_PVME1)\r
295 /**\r
296   * @brief Enable the PVM1 Extended Interrupt Line.\r
297   * @retval None\r
298   */\r
299 #define __HAL_PWR_PVM1_EXTI_ENABLE_IT()   SET_BIT(EXTI->IMR2, PWR_EXTI_LINE_PVM1)\r
300 \r
301 /**\r
302   * @brief Disable the PVM1 Extended Interrupt Line.\r
303   * @retval None\r
304   */\r
305 #define __HAL_PWR_PVM1_EXTI_DISABLE_IT()  CLEAR_BIT(EXTI->IMR2, PWR_EXTI_LINE_PVM1)\r
306 \r
307 /**\r
308   * @brief Enable the PVM1 Event Line.\r
309   * @retval None\r
310   */\r
311 #define __HAL_PWR_PVM1_EXTI_ENABLE_EVENT()   SET_BIT(EXTI->EMR2, PWR_EVENT_LINE_PVM1)\r
312 \r
313 /**\r
314   * @brief Disable the PVM1 Event Line.\r
315   * @retval None\r
316   */\r
317 #define __HAL_PWR_PVM1_EXTI_DISABLE_EVENT()  CLEAR_BIT(EXTI->EMR2, PWR_EVENT_LINE_PVM1)\r
318 \r
319 /**\r
320   * @brief Enable the PVM1 Extended Interrupt Rising Trigger.\r
321   * @retval None\r
322   */\r
323 #define __HAL_PWR_PVM1_EXTI_ENABLE_RISING_EDGE()   SET_BIT(EXTI->RTSR2, PWR_EXTI_LINE_PVM1)\r
324 \r
325 /**\r
326   * @brief Disable the PVM1 Extended Interrupt Rising Trigger.\r
327   * @retval None\r
328   */\r
329 #define __HAL_PWR_PVM1_EXTI_DISABLE_RISING_EDGE()  CLEAR_BIT(EXTI->RTSR2, PWR_EXTI_LINE_PVM1)\r
330 \r
331 /**\r
332   * @brief Enable the PVM1 Extended Interrupt Falling Trigger.\r
333   * @retval None\r
334   */\r
335 #define __HAL_PWR_PVM1_EXTI_ENABLE_FALLING_EDGE()   SET_BIT(EXTI->FTSR2, PWR_EXTI_LINE_PVM1)\r
336 \r
337 \r
338 /**\r
339   * @brief Disable the PVM1 Extended Interrupt Falling Trigger.\r
340   * @retval None\r
341   */\r
342 #define __HAL_PWR_PVM1_EXTI_DISABLE_FALLING_EDGE()  CLEAR_BIT(EXTI->FTSR2, PWR_EXTI_LINE_PVM1)\r
343 \r
344 \r
345 /**\r
346   * @brief  PVM1 EXTI line configuration: set rising & falling edge trigger.\r
347   * @retval None\r
348   */\r
349 #define __HAL_PWR_PVM1_EXTI_ENABLE_RISING_FALLING_EDGE()  \\r
350   do {                                                    \\r
351     __HAL_PWR_PVM1_EXTI_ENABLE_RISING_EDGE();             \\r
352     __HAL_PWR_PVM1_EXTI_ENABLE_FALLING_EDGE();            \\r
353   } while(0)\r
354 \r
355 /**\r
356   * @brief Disable the PVM1 Extended Interrupt Rising & Falling Trigger.\r
357   * @retval None\r
358   */\r
359 #define __HAL_PWR_PVM1_EXTI_DISABLE_RISING_FALLING_EDGE()  \\r
360   do {                                                     \\r
361     __HAL_PWR_PVM1_EXTI_DISABLE_RISING_EDGE();             \\r
362     __HAL_PWR_PVM1_EXTI_DISABLE_FALLING_EDGE();            \\r
363   } while(0)\r
364 \r
365 /**\r
366   * @brief  Generate a Software interrupt on selected EXTI line.\r
367   * @retval None\r
368   */\r
369 #define __HAL_PWR_PVM1_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER2, PWR_EXTI_LINE_PVM1)\r
370 \r
371 /**\r
372   * @brief Check whether the specified PVM1 EXTI interrupt flag is set or not.\r
373   * @retval EXTI PVM1 Line Status.\r
374   */\r
375 #define __HAL_PWR_PVM1_EXTI_GET_FLAG()  (EXTI->PR2 & PWR_EXTI_LINE_PVM1)\r
376 \r
377 /**\r
378   * @brief Clear the PVM1 EXTI flag.\r
379   * @retval None\r
380   */\r
381 #define __HAL_PWR_PVM1_EXTI_CLEAR_FLAG()  WRITE_REG(EXTI->PR2, PWR_EXTI_LINE_PVM1)\r
382 \r
383 #endif /* PWR_CR2_PVME1 */\r
384 \r
385 \r
386 #if defined(PWR_CR2_PVME2)\r
387 /**\r
388   * @brief Enable the PVM2 Extended Interrupt Line.\r
389   * @retval None\r
390   */\r
391 #define __HAL_PWR_PVM2_EXTI_ENABLE_IT()   SET_BIT(EXTI->IMR2, PWR_EXTI_LINE_PVM2)\r
392 \r
393 /**\r
394   * @brief Disable the PVM2 Extended Interrupt Line.\r
395   * @retval None\r
396   */\r
397 #define __HAL_PWR_PVM2_EXTI_DISABLE_IT()  CLEAR_BIT(EXTI->IMR2, PWR_EXTI_LINE_PVM2)\r
398 \r
399 /**\r
400   * @brief Enable the PVM2 Event Line.\r
401   * @retval None\r
402   */\r
403 #define __HAL_PWR_PVM2_EXTI_ENABLE_EVENT()   SET_BIT(EXTI->EMR2, PWR_EVENT_LINE_PVM2)\r
404 \r
405 /**\r
406   * @brief Disable the PVM2 Event Line.\r
407   * @retval None\r
408   */\r
409 #define __HAL_PWR_PVM2_EXTI_DISABLE_EVENT()  CLEAR_BIT(EXTI->EMR2, PWR_EVENT_LINE_PVM2)\r
410 \r
411 /**\r
412   * @brief Enable the PVM2 Extended Interrupt Rising Trigger.\r
413   * @retval None\r
414   */\r
415 #define __HAL_PWR_PVM2_EXTI_ENABLE_RISING_EDGE()   SET_BIT(EXTI->RTSR2, PWR_EXTI_LINE_PVM2)\r
416 \r
417 /**\r
418   * @brief Disable the PVM2 Extended Interrupt Rising Trigger.\r
419   * @retval None\r
420   */\r
421 #define __HAL_PWR_PVM2_EXTI_DISABLE_RISING_EDGE()  CLEAR_BIT(EXTI->RTSR2, PWR_EXTI_LINE_PVM2)\r
422 \r
423 /**\r
424   * @brief Enable the PVM2 Extended Interrupt Falling Trigger.\r
425   * @retval None\r
426   */\r
427 #define __HAL_PWR_PVM2_EXTI_ENABLE_FALLING_EDGE()   SET_BIT(EXTI->FTSR2, PWR_EXTI_LINE_PVM2)\r
428 \r
429 \r
430 /**\r
431   * @brief Disable the PVM2 Extended Interrupt Falling Trigger.\r
432   * @retval None\r
433   */\r
434 #define __HAL_PWR_PVM2_EXTI_DISABLE_FALLING_EDGE()  CLEAR_BIT(EXTI->FTSR2, PWR_EXTI_LINE_PVM2)\r
435 \r
436 \r
437 /**\r
438   * @brief  PVM2 EXTI line configuration: set rising & falling edge trigger.\r
439   * @retval None\r
440   */\r
441 #define __HAL_PWR_PVM2_EXTI_ENABLE_RISING_FALLING_EDGE()  \\r
442   do {                                                    \\r
443     __HAL_PWR_PVM2_EXTI_ENABLE_RISING_EDGE();             \\r
444     __HAL_PWR_PVM2_EXTI_ENABLE_FALLING_EDGE();            \\r
445   } while(0)\r
446 \r
447 /**\r
448   * @brief Disable the PVM2 Extended Interrupt Rising & Falling Trigger.\r
449   * @retval None\r
450   */\r
451 #define __HAL_PWR_PVM2_EXTI_DISABLE_RISING_FALLING_EDGE()  \\r
452   do {                                                     \\r
453     __HAL_PWR_PVM2_EXTI_DISABLE_RISING_EDGE();             \\r
454     __HAL_PWR_PVM2_EXTI_DISABLE_FALLING_EDGE();            \\r
455   } while(0)\r
456 \r
457 /**\r
458   * @brief  Generate a Software interrupt on selected EXTI line.\r
459   * @retval None\r
460   */\r
461 #define __HAL_PWR_PVM2_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER2, PWR_EXTI_LINE_PVM2)\r
462 \r
463 /**\r
464   * @brief Check whether the specified PVM2 EXTI interrupt flag is set or not.\r
465   * @retval EXTI PVM2 Line Status.\r
466   */\r
467 #define __HAL_PWR_PVM2_EXTI_GET_FLAG()  (EXTI->PR2 & PWR_EXTI_LINE_PVM2)\r
468 \r
469 /**\r
470   * @brief Clear the PVM2 EXTI flag.\r
471   * @retval None\r
472   */\r
473 #define __HAL_PWR_PVM2_EXTI_CLEAR_FLAG()  WRITE_REG(EXTI->PR2, PWR_EXTI_LINE_PVM2)\r
474 \r
475 #endif /* PWR_CR2_PVME2 */\r
476 \r
477 \r
478 /**\r
479   * @brief Enable the PVM3 Extended Interrupt Line.\r
480   * @retval None\r
481   */\r
482 #define __HAL_PWR_PVM3_EXTI_ENABLE_IT()   SET_BIT(EXTI->IMR2, PWR_EXTI_LINE_PVM3)\r
483 \r
484 /**\r
485   * @brief Disable the PVM3 Extended Interrupt Line.\r
486   * @retval None\r
487   */\r
488 #define __HAL_PWR_PVM3_EXTI_DISABLE_IT()  CLEAR_BIT(EXTI->IMR2, PWR_EXTI_LINE_PVM3)\r
489 \r
490 /**\r
491   * @brief Enable the PVM3 Event Line.\r
492   * @retval None\r
493   */\r
494 #define __HAL_PWR_PVM3_EXTI_ENABLE_EVENT()   SET_BIT(EXTI->EMR2, PWR_EVENT_LINE_PVM3)\r
495 \r
496 /**\r
497   * @brief Disable the PVM3 Event Line.\r
498   * @retval None\r
499   */\r
500 #define __HAL_PWR_PVM3_EXTI_DISABLE_EVENT()  CLEAR_BIT(EXTI->EMR2, PWR_EVENT_LINE_PVM3)\r
501 \r
502 /**\r
503   * @brief Enable the PVM3 Extended Interrupt Rising Trigger.\r
504   * @retval None\r
505   */\r
506 #define __HAL_PWR_PVM3_EXTI_ENABLE_RISING_EDGE()   SET_BIT(EXTI->RTSR2, PWR_EXTI_LINE_PVM3)\r
507 \r
508 /**\r
509   * @brief Disable the PVM3 Extended Interrupt Rising Trigger.\r
510   * @retval None\r
511   */\r
512 #define __HAL_PWR_PVM3_EXTI_DISABLE_RISING_EDGE()  CLEAR_BIT(EXTI->RTSR2, PWR_EXTI_LINE_PVM3)\r
513 \r
514 /**\r
515   * @brief Enable the PVM3 Extended Interrupt Falling Trigger.\r
516   * @retval None\r
517   */\r
518 #define __HAL_PWR_PVM3_EXTI_ENABLE_FALLING_EDGE()   SET_BIT(EXTI->FTSR2, PWR_EXTI_LINE_PVM3)\r
519 \r
520 \r
521 /**\r
522   * @brief Disable the PVM3 Extended Interrupt Falling Trigger.\r
523   * @retval None\r
524   */\r
525 #define __HAL_PWR_PVM3_EXTI_DISABLE_FALLING_EDGE()  CLEAR_BIT(EXTI->FTSR2, PWR_EXTI_LINE_PVM3)\r
526 \r
527 \r
528 /**\r
529   * @brief  PVM3 EXTI line configuration: set rising & falling edge trigger.\r
530   * @retval None\r
531   */\r
532 #define __HAL_PWR_PVM3_EXTI_ENABLE_RISING_FALLING_EDGE()  \\r
533   do {                                                    \\r
534     __HAL_PWR_PVM3_EXTI_ENABLE_RISING_EDGE();             \\r
535     __HAL_PWR_PVM3_EXTI_ENABLE_FALLING_EDGE();            \\r
536   } while(0)\r
537 \r
538 /**\r
539   * @brief Disable the PVM3 Extended Interrupt Rising & Falling Trigger.\r
540   * @retval None\r
541   */\r
542 #define __HAL_PWR_PVM3_EXTI_DISABLE_RISING_FALLING_EDGE()  \\r
543   do {                                                     \\r
544     __HAL_PWR_PVM3_EXTI_DISABLE_RISING_EDGE();             \\r
545     __HAL_PWR_PVM3_EXTI_DISABLE_FALLING_EDGE();            \\r
546   } while(0)\r
547 \r
548 /**\r
549   * @brief  Generate a Software interrupt on selected EXTI line.\r
550   * @retval None\r
551   */\r
552 #define __HAL_PWR_PVM3_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER2, PWR_EXTI_LINE_PVM3)\r
553 \r
554 /**\r
555   * @brief Check whether the specified PVM3 EXTI interrupt flag is set or not.\r
556   * @retval EXTI PVM3 Line Status.\r
557   */\r
558 #define __HAL_PWR_PVM3_EXTI_GET_FLAG()  (EXTI->PR2 & PWR_EXTI_LINE_PVM3)\r
559 \r
560 /**\r
561   * @brief Clear the PVM3 EXTI flag.\r
562   * @retval None\r
563   */\r
564 #define __HAL_PWR_PVM3_EXTI_CLEAR_FLAG()  WRITE_REG(EXTI->PR2, PWR_EXTI_LINE_PVM3)\r
565 \r
566 \r
567 \r
568 \r
569 /**\r
570   * @brief Enable the PVM4 Extended Interrupt Line.\r
571   * @retval None\r
572   */\r
573 #define __HAL_PWR_PVM4_EXTI_ENABLE_IT()   SET_BIT(EXTI->IMR2, PWR_EXTI_LINE_PVM4)\r
574 \r
575 /**\r
576   * @brief Disable the PVM4 Extended Interrupt Line.\r
577   * @retval None\r
578   */\r
579 #define __HAL_PWR_PVM4_EXTI_DISABLE_IT()  CLEAR_BIT(EXTI->IMR2, PWR_EXTI_LINE_PVM4)\r
580 \r
581 /**\r
582   * @brief Enable the PVM4 Event Line.\r
583   * @retval None\r
584   */\r
585 #define __HAL_PWR_PVM4_EXTI_ENABLE_EVENT()   SET_BIT(EXTI->EMR2, PWR_EVENT_LINE_PVM4)\r
586 \r
587 /**\r
588   * @brief Disable the PVM4 Event Line.\r
589   * @retval None\r
590   */\r
591 #define __HAL_PWR_PVM4_EXTI_DISABLE_EVENT()  CLEAR_BIT(EXTI->EMR2, PWR_EVENT_LINE_PVM4)\r
592 \r
593 /**\r
594   * @brief Enable the PVM4 Extended Interrupt Rising Trigger.\r
595   * @retval None\r
596   */\r
597 #define __HAL_PWR_PVM4_EXTI_ENABLE_RISING_EDGE()   SET_BIT(EXTI->RTSR2, PWR_EXTI_LINE_PVM4)\r
598 \r
599 /**\r
600   * @brief Disable the PVM4 Extended Interrupt Rising Trigger.\r
601   * @retval None\r
602   */\r
603 #define __HAL_PWR_PVM4_EXTI_DISABLE_RISING_EDGE()  CLEAR_BIT(EXTI->RTSR2, PWR_EXTI_LINE_PVM4)\r
604 \r
605 /**\r
606   * @brief Enable the PVM4 Extended Interrupt Falling Trigger.\r
607   * @retval None\r
608   */\r
609 #define __HAL_PWR_PVM4_EXTI_ENABLE_FALLING_EDGE()   SET_BIT(EXTI->FTSR2, PWR_EXTI_LINE_PVM4)\r
610 \r
611 \r
612 /**\r
613   * @brief Disable the PVM4 Extended Interrupt Falling Trigger.\r
614   * @retval None\r
615   */\r
616 #define __HAL_PWR_PVM4_EXTI_DISABLE_FALLING_EDGE()  CLEAR_BIT(EXTI->FTSR2, PWR_EXTI_LINE_PVM4)\r
617 \r
618 \r
619 /**\r
620   * @brief  PVM4 EXTI line configuration: set rising & falling edge trigger.\r
621   * @retval None\r
622   */\r
623 #define __HAL_PWR_PVM4_EXTI_ENABLE_RISING_FALLING_EDGE()  \\r
624   do {                                                    \\r
625     __HAL_PWR_PVM4_EXTI_ENABLE_RISING_EDGE();             \\r
626     __HAL_PWR_PVM4_EXTI_ENABLE_FALLING_EDGE();            \\r
627   } while(0)\r
628 \r
629 /**\r
630   * @brief Disable the PVM4 Extended Interrupt Rising & Falling Trigger.\r
631   * @retval None\r
632   */\r
633 #define __HAL_PWR_PVM4_EXTI_DISABLE_RISING_FALLING_EDGE()  \\r
634   do {                                                     \\r
635     __HAL_PWR_PVM4_EXTI_DISABLE_RISING_EDGE();             \\r
636     __HAL_PWR_PVM4_EXTI_DISABLE_FALLING_EDGE();            \\r
637   } while(0)\r
638 \r
639 /**\r
640   * @brief  Generate a Software interrupt on selected EXTI line.\r
641   * @retval None\r
642   */\r
643 #define __HAL_PWR_PVM4_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER2, PWR_EXTI_LINE_PVM4)\r
644 \r
645 /**\r
646   * @brief Check whether or not the specified PVM4 EXTI interrupt flag is set.\r
647   * @retval EXTI PVM4 Line Status.\r
648   */\r
649 #define __HAL_PWR_PVM4_EXTI_GET_FLAG()  (EXTI->PR2 & PWR_EXTI_LINE_PVM4)\r
650 \r
651 /**\r
652   * @brief Clear the PVM4 EXTI flag.\r
653   * @retval None\r
654   */\r
655 #define __HAL_PWR_PVM4_EXTI_CLEAR_FLAG()  WRITE_REG(EXTI->PR2, PWR_EXTI_LINE_PVM4)\r
656 \r
657 \r
658 /**\r
659   * @brief Configure the main internal regulator output voltage.\r
660   * @param  __REGULATOR__: specifies the regulator output voltage to achieve\r
661   *         a tradeoff between performance and power consumption.\r
662   *          This parameter can be one of the following values:\r
663   *            @arg @ref PWR_REGULATOR_VOLTAGE_SCALE1  Regulator voltage output range 1 mode,\r
664   *                                                typical output voltage at 1.2 V,\r
665   *                                                system frequency up to 80 MHz.\r
666   *            @arg @ref PWR_REGULATOR_VOLTAGE_SCALE2  Regulator voltage output range 2 mode,\r
667   *                                                typical output voltage at 1.0 V,\r
668   *                                                system frequency up to 26 MHz.\r
669   * @note  This macro is similar to HAL_PWREx_ControlVoltageScaling() API but doesn't check\r
670   *        whether or not VOSF flag is cleared when moving from range 2 to range 1. User\r
671   *        may resort to __HAL_PWR_GET_FLAG() macro to check VOSF bit resetting.\r
672   * @retval None\r
673   */\r
674 #define __HAL_PWR_VOLTAGESCALING_CONFIG(__REGULATOR__) do {                                                     \\r
675                                                             __IO uint32_t tmpreg;                               \\r
676                                                             MODIFY_REG(PWR->CR1, PWR_CR1_VOS, (__REGULATOR__)); \\r
677                                                             /* Delay after an RCC peripheral clock enabling */  \\r
678                                                             tmpreg = READ_BIT(PWR->CR1, PWR_CR1_VOS);           \\r
679                                                             UNUSED(tmpreg);                                     \\r
680                                                           } while(0)\r
681 \r
682 /**\r
683   * @}\r
684   */\r
685 \r
686 /* Private macros --------------------------------------------------------*/\r
687 /** @addtogroup  PWREx_Private_Macros   PWR Extended Private Macros\r
688   * @{\r
689   */\r
690 \r
691 #define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1) || \\r
692                                 ((PIN) == PWR_WAKEUP_PIN2) || \\r
693                                 ((PIN) == PWR_WAKEUP_PIN3) || \\r
694                                 ((PIN) == PWR_WAKEUP_PIN4) || \\r
695                                 ((PIN) == PWR_WAKEUP_PIN5) || \\r
696                                 ((PIN) == PWR_WAKEUP_PIN1_HIGH) || \\r
697                                 ((PIN) == PWR_WAKEUP_PIN2_HIGH) || \\r
698                                 ((PIN) == PWR_WAKEUP_PIN3_HIGH) || \\r
699                                 ((PIN) == PWR_WAKEUP_PIN4_HIGH) || \\r
700                                 ((PIN) == PWR_WAKEUP_PIN5_HIGH) || \\r
701                                 ((PIN) == PWR_WAKEUP_PIN1_LOW) || \\r
702                                 ((PIN) == PWR_WAKEUP_PIN2_LOW) || \\r
703                                 ((PIN) == PWR_WAKEUP_PIN3_LOW) || \\r
704                                 ((PIN) == PWR_WAKEUP_PIN4_LOW) || \\r
705                                 ((PIN) == PWR_WAKEUP_PIN5_LOW))\r
706 \r
707 #if defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || \\r
708     defined (STM32L496xx) || defined (STM32L4A6xx)                                                   || \\r
709     defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined (STM32L4S9xx)\r
710 #define IS_PWR_PVM_TYPE(TYPE) (((TYPE) == PWR_PVM_1) ||\\r
711                                ((TYPE) == PWR_PVM_2) ||\\r
712                                ((TYPE) == PWR_PVM_3) ||\\r
713                                ((TYPE) == PWR_PVM_4))\r
714 #elif defined (STM32L471xx)\r
715 #define IS_PWR_PVM_TYPE(TYPE) (((TYPE) == PWR_PVM_2) ||\\r
716                                ((TYPE) == PWR_PVM_3) ||\\r
717                                ((TYPE) == PWR_PVM_4))\r
718 #endif\r
719 \r
720 #if defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L433xx) || defined (STM32L443xx) || defined (STM32L452xx) || defined (STM32L462xx)\r
721 #define IS_PWR_PVM_TYPE(TYPE) (((TYPE) == PWR_PVM_1) ||\\r
722                                ((TYPE) == PWR_PVM_3) ||\\r
723                                ((TYPE) == PWR_PVM_4))\r
724 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L442xx) || defined (STM32L451xx)\r
725 #define IS_PWR_PVM_TYPE(TYPE) (((TYPE) == PWR_PVM_3) ||\\r
726                                ((TYPE) == PWR_PVM_4))\r
727 #endif\r
728 \r
729 #define IS_PWR_PVM_MODE(MODE)  (((MODE) == PWR_PVM_MODE_NORMAL)              ||\\r
730                                 ((MODE) == PWR_PVM_MODE_IT_RISING)           ||\\r
731                                 ((MODE) == PWR_PVM_MODE_IT_FALLING)          ||\\r
732                                 ((MODE) == PWR_PVM_MODE_IT_RISING_FALLING)   ||\\r
733                                 ((MODE) == PWR_PVM_MODE_EVENT_RISING)        ||\\r
734                                 ((MODE) == PWR_PVM_MODE_EVENT_FALLING)       ||\\r
735                                 ((MODE) == PWR_PVM_MODE_EVENT_RISING_FALLING))\r
736 \r
737 #if defined(PWR_CR5_R1MODE)\r
738 #define IS_PWR_VOLTAGE_SCALING_RANGE(RANGE) (((RANGE) == PWR_REGULATOR_VOLTAGE_SCALE1_BOOST) || \\r
739                                              ((RANGE) == PWR_REGULATOR_VOLTAGE_SCALE1)       || \\r
740                                              ((RANGE) == PWR_REGULATOR_VOLTAGE_SCALE2))\r
741 #else\r
742 #define IS_PWR_VOLTAGE_SCALING_RANGE(RANGE) (((RANGE) == PWR_REGULATOR_VOLTAGE_SCALE1) || \\r
743                                              ((RANGE) == PWR_REGULATOR_VOLTAGE_SCALE2))\r
744 #endif\r
745 \r
746 \r
747 #define IS_PWR_BATTERY_RESISTOR_SELECT(RESISTOR) (((RESISTOR) == PWR_BATTERY_CHARGING_RESISTOR_5) ||\\r
748                                                   ((RESISTOR) == PWR_BATTERY_CHARGING_RESISTOR_1_5))\r
749 \r
750 #define IS_PWR_BATTERY_CHARGING(CHARGING) (((CHARGING) == PWR_BATTERY_CHARGING_DISABLE) ||\\r
751                                            ((CHARGING) == PWR_BATTERY_CHARGING_ENABLE))\r
752 \r
753 #define IS_PWR_GPIO_BIT_NUMBER(BIT_NUMBER) (((BIT_NUMBER) & GPIO_PIN_MASK) != (uint32_t)0x00)\r
754 \r
755 \r
756 #if defined (STM32L412xx) || defined (STM32L422xx)\r
757 #define IS_PWR_GPIO(GPIO) (((GPIO) == PWR_GPIO_A) ||\\r
758                            ((GPIO) == PWR_GPIO_B) ||\\r
759                            ((GPIO) == PWR_GPIO_C) ||\\r
760                            ((GPIO) == PWR_GPIO_D) ||\\r
761                            ((GPIO) == PWR_GPIO_H))\r
762 #elif defined (STM32L431xx) || defined (STM32L433xx) || defined (STM32L443xx) || \\r
763       defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)\r
764 #define IS_PWR_GPIO(GPIO) (((GPIO) == PWR_GPIO_A) ||\\r
765                            ((GPIO) == PWR_GPIO_B) ||\\r
766                            ((GPIO) == PWR_GPIO_C) ||\\r
767                            ((GPIO) == PWR_GPIO_D) ||\\r
768                            ((GPIO) == PWR_GPIO_E) ||\\r
769                            ((GPIO) == PWR_GPIO_H))\r
770 #elif defined (STM32L432xx) || defined (STM32L442xx)\r
771 #define IS_PWR_GPIO(GPIO) (((GPIO) == PWR_GPIO_A) ||\\r
772                            ((GPIO) == PWR_GPIO_B) ||\\r
773                            ((GPIO) == PWR_GPIO_C) ||\\r
774                            ((GPIO) == PWR_GPIO_H))\r
775 #elif defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx)\r
776 #define IS_PWR_GPIO(GPIO) (((GPIO) == PWR_GPIO_A) ||\\r
777                            ((GPIO) == PWR_GPIO_B) ||\\r
778                            ((GPIO) == PWR_GPIO_C) ||\\r
779                            ((GPIO) == PWR_GPIO_D) ||\\r
780                            ((GPIO) == PWR_GPIO_E) ||\\r
781                            ((GPIO) == PWR_GPIO_F) ||\\r
782                            ((GPIO) == PWR_GPIO_G) ||\\r
783                            ((GPIO) == PWR_GPIO_H))\r
784 #elif defined (STM32L496xx) || defined (STM32L4A6xx) || \\r
785       defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined (STM32L4S9xx)\r
786 #define IS_PWR_GPIO(GPIO) (((GPIO) == PWR_GPIO_A) ||\\r
787                            ((GPIO) == PWR_GPIO_B) ||\\r
788                            ((GPIO) == PWR_GPIO_C) ||\\r
789                            ((GPIO) == PWR_GPIO_D) ||\\r
790                            ((GPIO) == PWR_GPIO_E) ||\\r
791                            ((GPIO) == PWR_GPIO_F) ||\\r
792                            ((GPIO) == PWR_GPIO_G) ||\\r
793                            ((GPIO) == PWR_GPIO_H) ||\\r
794                            ((GPIO) == PWR_GPIO_I))\r
795 #endif\r
796 \r
797 \r
798 /**\r
799   * @}\r
800   */\r
801 \r
802 \r
803 /** @addtogroup PWREx_Exported_Functions PWR Extended Exported Functions\r
804   * @{\r
805   */\r
806 \r
807 /** @addtogroup PWREx_Exported_Functions_Group1 Extended Peripheral Control functions\r
808   * @{\r
809   */\r
810 \r
811 \r
812 /* Peripheral Control functions  **********************************************/\r
813 uint32_t HAL_PWREx_GetVoltageRange(void);\r
814 HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling);\r
815 void HAL_PWREx_EnableBatteryCharging(uint32_t ResistorSelection);\r
816 void HAL_PWREx_DisableBatteryCharging(void);\r
817 #if defined(PWR_CR2_USV)\r
818 void HAL_PWREx_EnableVddUSB(void);\r
819 void HAL_PWREx_DisableVddUSB(void);\r
820 #endif /* PWR_CR2_USV */\r
821 #if defined(PWR_CR2_IOSV)\r
822 void HAL_PWREx_EnableVddIO2(void);\r
823 void HAL_PWREx_DisableVddIO2(void);\r
824 #endif /* PWR_CR2_IOSV */\r
825 void HAL_PWREx_EnableInternalWakeUpLine(void);\r
826 void HAL_PWREx_DisableInternalWakeUpLine(void);\r
827 HAL_StatusTypeDef HAL_PWREx_EnableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber);\r
828 HAL_StatusTypeDef HAL_PWREx_DisableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber);\r
829 HAL_StatusTypeDef HAL_PWREx_EnableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber);\r
830 HAL_StatusTypeDef HAL_PWREx_DisableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber);\r
831 void HAL_PWREx_EnablePullUpPullDownConfig(void);\r
832 void HAL_PWREx_DisablePullUpPullDownConfig(void);\r
833 void HAL_PWREx_EnableSRAM2ContentRetention(void);\r
834 void HAL_PWREx_DisableSRAM2ContentRetention(void);\r
835 #if defined(PWR_CR1_RRSTP)\r
836 void HAL_PWREx_EnableSRAM3ContentRetention(void);\r
837 void HAL_PWREx_DisableSRAM3ContentRetention(void);\r
838 #endif /* PWR_CR1_RRSTP */\r
839 #if defined(PWR_CR3_DSIPDEN)\r
840 void HAL_PWREx_EnableDSIPinsPDActivation(void);\r
841 void HAL_PWREx_DisableDSIPinsPDActivation(void);\r
842 #endif /* PWR_CR3_DSIPDEN */\r
843 #if defined(PWR_CR2_PVME1)\r
844 void HAL_PWREx_EnablePVM1(void);\r
845 void HAL_PWREx_DisablePVM1(void);\r
846 #endif /* PWR_CR2_PVME1 */\r
847 #if defined(PWR_CR2_PVME2)\r
848 void HAL_PWREx_EnablePVM2(void);\r
849 void HAL_PWREx_DisablePVM2(void);\r
850 #endif /* PWR_CR2_PVME2 */\r
851 void HAL_PWREx_EnablePVM3(void);\r
852 void HAL_PWREx_DisablePVM3(void);\r
853 void HAL_PWREx_EnablePVM4(void);\r
854 void HAL_PWREx_DisablePVM4(void);\r
855 HAL_StatusTypeDef HAL_PWREx_ConfigPVM(PWR_PVMTypeDef *sConfigPVM);\r
856 #if defined(PWR_CR3_ENULP)\r
857 void HAL_PWREx_EnableBORPVD_ULP(void);\r
858 void HAL_PWREx_DisableBORPVD_ULP(void);\r
859 #endif /* PWR_CR3_ENULP */\r
860 #if defined(PWR_CR4_EXT_SMPS_ON)\r
861 void HAL_PWREx_EnableExtSMPS_0V95(void);\r
862 void HAL_PWREx_DisableExtSMPS_0V95(void);\r
863 #endif /* PWR_CR4_EXT_SMPS_ON */\r
864 \r
865 \r
866 /* Low Power modes configuration functions ************************************/\r
867 void HAL_PWREx_EnableLowPowerRunMode(void);\r
868 HAL_StatusTypeDef HAL_PWREx_DisableLowPowerRunMode(void);\r
869 void HAL_PWREx_EnterSTOP0Mode(uint8_t STOPEntry);\r
870 void HAL_PWREx_EnterSTOP1Mode(uint8_t STOPEntry);\r
871 void HAL_PWREx_EnterSTOP2Mode(uint8_t STOPEntry);\r
872 void HAL_PWREx_EnterSHUTDOWNMode(void);\r
873 \r
874 void HAL_PWREx_PVD_PVM_IRQHandler(void);\r
875 #if defined(PWR_CR2_PVME1)\r
876 void HAL_PWREx_PVM1Callback(void);\r
877 #endif /* PWR_CR2_PVME1 */\r
878 #if defined(PWR_CR2_PVME2)\r
879 void HAL_PWREx_PVM2Callback(void);\r
880 #endif /* PWR_CR2_PVME2 */\r
881 void HAL_PWREx_PVM3Callback(void);\r
882 void HAL_PWREx_PVM4Callback(void);\r
883 \r
884 /**\r
885   * @}\r
886   */\r
887 \r
888 /**\r
889   * @}\r
890   */\r
891 \r
892 /**\r
893   * @}\r
894   */\r
895 \r
896 /**\r
897   * @}\r
898   */\r
899 \r
900 #ifdef __cplusplus\r
901 }\r
902 #endif\r
903 \r
904 \r
905 #endif /* __STM32L4xx_HAL_PWR_EX_H */\r
906 \r
907 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r