]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil/ST_Library/include/stm32f7xx_hal_pwr.h
Final V8.2.1 release ready for tagging:
[freertos] / FreeRTOS / Demo / CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil / ST_Library / include / stm32f7xx_hal_pwr.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f7xx_hal_pwr.h\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0RC1\r
6   * @date    24-March-2015\r
7   * @brief   Header file of PWR HAL module.\r
8   ******************************************************************************\r
9   * @attention\r
10   *\r
11   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>\r
12   *\r
13   * Redistribution and use in source and binary forms, with or without modification,\r
14   * are permitted provided that the following conditions are met:\r
15   *   1. Redistributions of source code must retain the above copyright notice,\r
16   *      this list of conditions and the following disclaimer.\r
17   *   2. Redistributions in binary form must reproduce the above copyright notice,\r
18   *      this list of conditions and the following disclaimer in the documentation\r
19   *      and/or other materials provided with the distribution.\r
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors\r
21   *      may be used to endorse or promote products derived from this software\r
22   *      without specific prior written permission.\r
23   *\r
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
34   *\r
35   ******************************************************************************\r
36   */ \r
37 \r
38 /* Define to prevent recursive inclusion -------------------------------------*/\r
39 #ifndef __STM32F7xx_HAL_PWR_H\r
40 #define __STM32F7xx_HAL_PWR_H\r
41 \r
42 #ifdef __cplusplus\r
43  extern "C" {\r
44 #endif\r
45 \r
46 /* Includes ------------------------------------------------------------------*/\r
47 #include "stm32f7xx_hal_def.h"\r
48 \r
49 /** @addtogroup STM32F7xx_HAL_Driver\r
50   * @{\r
51   */\r
52 \r
53 /** @addtogroup PWR\r
54   * @{\r
55   */ \r
56 \r
57 /* Exported types ------------------------------------------------------------*/\r
58 \r
59 /** @defgroup PWR_Exported_Types PWR Exported Types\r
60   * @{\r
61   */\r
62    \r
63 /**\r
64   * @brief  PWR PVD configuration structure definition\r
65   */\r
66 typedef struct\r
67 {\r
68   uint32_t PVDLevel;   /*!< PVDLevel: Specifies the PVD detection level.\r
69                             This parameter can be a value of @ref PWR_PVD_detection_level */\r
70 \r
71   uint32_t Mode;      /*!< Mode: Specifies the operating mode for the selected pins.\r
72                            This parameter can be a value of @ref PWR_PVD_Mode */\r
73 }PWR_PVDTypeDef;\r
74 \r
75 /**\r
76   * @}\r
77   */\r
78 \r
79 /* Exported constants --------------------------------------------------------*/\r
80 /** @defgroup PWR_Exported_Constants PWR Exported Constants\r
81   * @{\r
82   */\r
83 \r
84 /** @defgroup PWR_PVD_detection_level PWR PVD detection level\r
85   * @{\r
86   */ \r
87 #define PWR_PVDLEVEL_0                  PWR_CR1_PLS_LEV0\r
88 #define PWR_PVDLEVEL_1                  PWR_CR1_PLS_LEV1\r
89 #define PWR_PVDLEVEL_2                  PWR_CR1_PLS_LEV2\r
90 #define PWR_PVDLEVEL_3                  PWR_CR1_PLS_LEV3\r
91 #define PWR_PVDLEVEL_4                  PWR_CR1_PLS_LEV4\r
92 #define PWR_PVDLEVEL_5                  PWR_CR1_PLS_LEV5\r
93 #define PWR_PVDLEVEL_6                  PWR_CR1_PLS_LEV6\r
94 #define PWR_PVDLEVEL_7                  PWR_CR1_PLS_LEV7/* External input analog voltage \r
95                                                           (Compare internally to VREFINT) */\r
96 \r
97 /**\r
98   * @}\r
99   */   \r
100  \r
101 /** @defgroup PWR_PVD_Mode PWR PVD Mode\r
102   * @{\r
103   */\r
104 #define PWR_PVD_MODE_NORMAL                 ((uint32_t)0x00000000)   /*!< basic mode is used */\r
105 #define PWR_PVD_MODE_IT_RISING              ((uint32_t)0x00010001)   /*!< External Interrupt Mode with Rising edge trigger detection */\r
106 #define PWR_PVD_MODE_IT_FALLING             ((uint32_t)0x00010002)   /*!< External Interrupt Mode with Falling edge trigger detection */\r
107 #define PWR_PVD_MODE_IT_RISING_FALLING      ((uint32_t)0x00010003)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection */\r
108 #define PWR_PVD_MODE_EVENT_RISING           ((uint32_t)0x00020001)   /*!< Event Mode with Rising edge trigger detection */\r
109 #define PWR_PVD_MODE_EVENT_FALLING          ((uint32_t)0x00020002)   /*!< Event Mode with Falling edge trigger detection */\r
110 #define PWR_PVD_MODE_EVENT_RISING_FALLING   ((uint32_t)0x00020003)   /*!< Event Mode with Rising/Falling edge trigger detection */\r
111 /**\r
112   * @}\r
113   */\r
114 \r
115 /** @defgroup PWR_Regulator_state_in_STOP_mode PWR Regulator state in SLEEP/STOP mode\r
116   * @{\r
117   */\r
118 #define PWR_MAINREGULATOR_ON                        ((uint32_t)0x00000000)\r
119 #define PWR_LOWPOWERREGULATOR_ON                    PWR_CR1_LPDS\r
120 /**\r
121   * @}\r
122   */\r
123     \r
124 /** @defgroup PWR_SLEEP_mode_entry PWR SLEEP mode entry\r
125   * @{\r
126   */\r
127 #define PWR_SLEEPENTRY_WFI              ((uint8_t)0x01)\r
128 #define PWR_SLEEPENTRY_WFE              ((uint8_t)0x02)\r
129 /**\r
130   * @}\r
131   */\r
132 \r
133 /** @defgroup PWR_STOP_mode_entry PWR STOP mode entry\r
134   * @{\r
135   */\r
136 #define PWR_STOPENTRY_WFI               ((uint8_t)0x01)\r
137 #define PWR_STOPENTRY_WFE               ((uint8_t)0x02)\r
138 /**\r
139   * @}\r
140   */\r
141 \r
142 /** @defgroup PWR_Regulator_Voltage_Scale PWR Regulator Voltage Scale\r
143   * @{\r
144   */\r
145 #define PWR_REGULATOR_VOLTAGE_SCALE1         PWR_CR1_VOS\r
146 #define PWR_REGULATOR_VOLTAGE_SCALE2         PWR_CR1_VOS_1\r
147 #define PWR_REGULATOR_VOLTAGE_SCALE3         PWR_CR1_VOS_0\r
148 /**\r
149   * @}\r
150   */\r
151 \r
152 /** @defgroup PWR_Flag PWR Flag\r
153   * @{\r
154   */\r
155 #define PWR_FLAG_WU                     PWR_CSR1_WUIF\r
156 #define PWR_FLAG_SB                     PWR_CSR1_SBF\r
157 #define PWR_FLAG_PVDO                   PWR_CSR1_PVDO\r
158 #define PWR_FLAG_BRR                    PWR_CSR1_BRR\r
159 #define PWR_FLAG_VOSRDY                 PWR_CSR1_VOSRDY\r
160 /**\r
161   * @}\r
162   */\r
163 \r
164 /**\r
165   * @}\r
166   */ \r
167   \r
168 /* Exported macro ------------------------------------------------------------*/\r
169 /** @defgroup PWR_Exported_Macro PWR Exported Macro\r
170   * @{\r
171   */\r
172 \r
173 /** @brief  macros configure the main internal regulator output voltage.\r
174   * @param  __REGULATOR__: specifies the regulator output voltage to achieve\r
175   *         a tradeoff between performance and power consumption when the device does\r
176   *         not operate at the maximum frequency (refer to the datasheets for more details).\r
177   *          This parameter can be one of the following values:\r
178   *            @arg PWR_REGULATOR_VOLTAGE_SCALE1: Regulator voltage output Scale 1 mode\r
179   *            @arg PWR_REGULATOR_VOLTAGE_SCALE2: Regulator voltage output Scale 2 mode\r
180   *            @arg PWR_REGULATOR_VOLTAGE_SCALE3: Regulator voltage output Scale 3 mode\r
181   * @retval None\r
182   */\r
183 #define __HAL_PWR_VOLTAGESCALING_CONFIG(__REGULATOR__) do {                                                     \\r
184                                                             __IO uint32_t tmpreg;                               \\r
185                                                             MODIFY_REG(PWR->CR1, PWR_CR1_VOS, (__REGULATOR__)); \\r
186                                                             /* Delay after an RCC peripheral clock enabling */  \\r
187                                                             tmpreg = READ_BIT(PWR->CR1, PWR_CR1_VOS);           \\r
188                                                             UNUSED(tmpreg);                                     \\r
189                                                                                         } while(0)\r
190 \r
191 /** @brief  Check PWR flag is set or not.\r
192   * @param  __FLAG__: specifies the flag to check.\r
193   *           This parameter can be one of the following values:\r
194   *            @arg PWR_FLAG_WU: Wake Up flag. This flag indicates that a wakeup event \r
195   *                  was received on the internal wakeup line in standby mode (RTC alarm (Alarm A or Alarm B),\r
196   *                  RTC Tamper event, RTC TimeStamp event or RTC Wakeup)).\r
197   *            @arg PWR_FLAG_SB: StandBy flag. This flag indicates that the system was\r
198   *                  resumed from StandBy mode.    \r
199   *            @arg PWR_FLAG_PVDO: PVD Output. This flag is valid only if PVD is enabled \r
200   *                  by the HAL_PWR_EnablePVD() function. The PVD is stopped by Standby mode \r
201   *                  For this reason, this bit is equal to 0 after Standby or reset\r
202   *                  until the PVDE bit is set.\r
203   *            @arg PWR_FLAG_BRR: Backup regulator ready flag. This bit is not reset \r
204   *                  when the device wakes up from Standby mode or by a system reset \r
205   *                  or power reset.  \r
206   *            @arg PWR_FLAG_VOSRDY: This flag indicates that the Regulator voltage \r
207   *                 scaling output selection is ready.\r
208   * @retval The new state of __FLAG__ (TRUE or FALSE).\r
209   */\r
210 #define __HAL_PWR_GET_FLAG(__FLAG__) ((PWR->CSR1 & (__FLAG__)) == (__FLAG__))\r
211 \r
212 /** @brief  Clear the PWR's pending flags.\r
213   * @param  __FLAG__: specifies the flag to clear.\r
214   *          This parameter can be one of the following values:\r
215   *            @arg PWR_FLAG_SB: StandBy flag\r
216   */\r
217 #define __HAL_PWR_CLEAR_FLAG(__FLAG__) (PWR->CR1 |=  (__FLAG__) << 2)\r
218 \r
219 /**\r
220   * @brief Enable the PVD Exti Line 16.\r
221   * @retval None.\r
222   */\r
223 #define __HAL_PWR_PVD_EXTI_ENABLE_IT()   (EXTI->IMR |= (PWR_EXTI_LINE_PVD))\r
224 \r
225 /**\r
226   * @brief Disable the PVD EXTI Line 16.\r
227   * @retval None.\r
228   */\r
229 #define __HAL_PWR_PVD_EXTI_DISABLE_IT()  (EXTI->IMR &= ~(PWR_EXTI_LINE_PVD))\r
230 \r
231 /**\r
232   * @brief Enable event on PVD Exti Line 16.\r
233   * @retval None.\r
234   */\r
235 #define __HAL_PWR_PVD_EXTI_ENABLE_EVENT()   (EXTI->EMR |= (PWR_EXTI_LINE_PVD))\r
236 \r
237 /**\r
238   * @brief Disable event on PVD Exti Line 16.\r
239   * @retval None.\r
240   */\r
241 #define __HAL_PWR_PVD_EXTI_DISABLE_EVENT()  (EXTI->EMR &= ~(PWR_EXTI_LINE_PVD))\r
242 \r
243 /**\r
244   * @brief Enable the PVD Extended Interrupt Rising Trigger.\r
245   * @retval None.\r
246   */\r
247 #define __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE()   SET_BIT(EXTI->RTSR, PWR_EXTI_LINE_PVD)\r
248 \r
249 /**\r
250   * @brief Disable the PVD Extended Interrupt Rising Trigger.\r
251   * @retval None.\r
252   */\r
253 #define __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE()  CLEAR_BIT(EXTI->RTSR, PWR_EXTI_LINE_PVD)\r
254 \r
255 /**\r
256   * @brief Enable the PVD Extended Interrupt Falling Trigger.\r
257   * @retval None.\r
258   */\r
259 #define __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE()   SET_BIT(EXTI->FTSR, PWR_EXTI_LINE_PVD)\r
260 \r
261 \r
262 /**\r
263   * @brief Disable the PVD Extended Interrupt Falling Trigger.\r
264   * @retval None.\r
265   */\r
266 #define __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE()  CLEAR_BIT(EXTI->FTSR, PWR_EXTI_LINE_PVD)\r
267 \r
268 \r
269 /**\r
270   * @brief  PVD EXTI line configuration: set rising & falling edge trigger.\r
271   * @retval None.\r
272   */\r
273 #define __HAL_PWR_PVD_EXTI_ENABLE_RISING_FALLING_EDGE()   __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE();\r
274 \r
275 /**\r
276   * @brief Disable the PVD Extended Interrupt Rising & Falling Trigger.\r
277   * @retval None.\r
278   */\r
279 #define __HAL_PWR_PVD_EXTI_DISABLE_RISING_FALLING_EDGE()  __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE();\r
280 \r
281 /**\r
282   * @brief checks whether the specified PVD Exti interrupt flag is set or not.\r
283   * @retval EXTI PVD Line Status.\r
284   */\r
285 #define __HAL_PWR_PVD_EXTI_GET_FLAG()  (EXTI->PR & (PWR_EXTI_LINE_PVD))\r
286 \r
287 /**\r
288   * @brief Clear the PVD Exti flag.\r
289   * @retval None.\r
290   */\r
291 #define __HAL_PWR_PVD_EXTI_CLEAR_FLAG()  (EXTI->PR = (PWR_EXTI_LINE_PVD))\r
292 \r
293 /**\r
294   * @brief  Generates a Software interrupt on PVD EXTI line.\r
295   * @retval None\r
296   */\r
297 #define __HAL_PWR_PVD_EXTI_GENERATE_SWIT() (EXTI->SWIER |= (PWR_EXTI_LINE_PVD))\r
298 \r
299 /**\r
300   * @}\r
301   */\r
302 \r
303 /* Include PWR HAL Extension module */\r
304 #include "stm32f7xx_hal_pwr_ex.h"\r
305 \r
306 /* Exported functions --------------------------------------------------------*/\r
307 /** @addtogroup PWR_Exported_Functions PWR Exported Functions\r
308   * @{\r
309   */\r
310   \r
311 /** @addtogroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions \r
312   * @{\r
313   */\r
314 /* Initialization and de-initialization functions *****************************/\r
315 void HAL_PWR_DeInit(void);\r
316 void HAL_PWR_EnableBkUpAccess(void);\r
317 void HAL_PWR_DisableBkUpAccess(void);\r
318 /**\r
319   * @}\r
320   */\r
321 \r
322 /** @addtogroup PWR_Exported_Functions_Group2 Peripheral Control functions \r
323   * @{\r
324   */\r
325 /* Peripheral Control functions  **********************************************/\r
326 /* PVD configuration */\r
327 void HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD);\r
328 void HAL_PWR_EnablePVD(void);\r
329 void HAL_PWR_DisablePVD(void);\r
330 \r
331 /* WakeUp pins configuration */\r
332 void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinPolarity);\r
333 void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx);\r
334 \r
335 /* Low Power modes entry */\r
336 void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry);\r
337 void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry);\r
338 void HAL_PWR_EnterSTANDBYMode(void);\r
339 \r
340 /* Power PVD IRQ Handler */\r
341 void HAL_PWR_PVD_IRQHandler(void);\r
342 void HAL_PWR_PVDCallback(void);\r
343 \r
344 /* Cortex System Control functions  *******************************************/\r
345 void HAL_PWR_EnableSleepOnExit(void);\r
346 void HAL_PWR_DisableSleepOnExit(void);\r
347 void HAL_PWR_EnableSEVOnPend(void);\r
348 void HAL_PWR_DisableSEVOnPend(void);\r
349 /**\r
350   * @}\r
351   */\r
352 \r
353 /**\r
354   * @}\r
355   */\r
356 \r
357 /* Private types -------------------------------------------------------------*/\r
358 /* Private variables ---------------------------------------------------------*/\r
359 /* Private constants ---------------------------------------------------------*/\r
360 /** @defgroup PWR_Private_Constants PWR Private Constants\r
361   * @{\r
362   */\r
363 \r
364 /** @defgroup PWR_PVD_EXTI_Line PWR PVD EXTI Line\r
365   * @{\r
366   */\r
367 #define PWR_EXTI_LINE_PVD  ((uint32_t)0x00010000)  /*!< External interrupt line 16 Connected to the PVD EXTI Line */\r
368 /**\r
369   * @}\r
370   */\r
371 \r
372 /**\r
373   * @}\r
374   */\r
375 /* Private macros ------------------------------------------------------------*/\r
376 /** @defgroup PWR_Private_Macros PWR Private Macros\r
377   * @{\r
378   */\r
379 \r
380 /** @defgroup PWR_IS_PWR_Definitions PWR Private macros to check input parameters\r
381   * @{\r
382   */\r
383 #define IS_PWR_WAKEUP_POLARITY(POLARITY)       (((POLARITY) == PWR_POLARITY_RISINGEDGE)  || \\r
384                                                     ((POLARITY) == PWR_POLARITY_FALLINGEDGE))\r
385 #define IS_PWR_PVD_LEVEL(LEVEL) (((LEVEL) == PWR_PVDLEVEL_0) || ((LEVEL) == PWR_PVDLEVEL_1)|| \\r
386                                  ((LEVEL) == PWR_PVDLEVEL_2) || ((LEVEL) == PWR_PVDLEVEL_3)|| \\r
387                                  ((LEVEL) == PWR_PVDLEVEL_4) || ((LEVEL) == PWR_PVDLEVEL_5)|| \\r
388                                  ((LEVEL) == PWR_PVDLEVEL_6) || ((LEVEL) == PWR_PVDLEVEL_7))\r
389 #define IS_PWR_PVD_MODE(MODE) (((MODE) == PWR_PVD_MODE_IT_RISING)|| ((MODE) == PWR_PVD_MODE_IT_FALLING) || \\r
390                               ((MODE) == PWR_PVD_MODE_IT_RISING_FALLING) || ((MODE) == PWR_PVD_MODE_EVENT_RISING) || \\r
391                               ((MODE) == PWR_PVD_MODE_EVENT_FALLING) || ((MODE) == PWR_PVD_MODE_EVENT_RISING_FALLING) || \\r
392                               ((MODE) == PWR_PVD_MODE_NORMAL))\r
393 #define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_MAINREGULATOR_ON) || \\r
394                                      ((REGULATOR) == PWR_LOWPOWERREGULATOR_ON))\r
395 #define IS_PWR_SLEEP_ENTRY(ENTRY) (((ENTRY) == PWR_SLEEPENTRY_WFI) || ((ENTRY) == PWR_SLEEPENTRY_WFE))\r
396 #define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPENTRY_WFI) || ((ENTRY) == PWR_STOPENTRY_WFE))\r
397 #define IS_PWR_REGULATOR_VOLTAGE(VOLTAGE) (((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE1) || \\r
398                                            ((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE2) || \\r
399                                            ((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE3))\r
400 \r
401 /**\r
402   * @}\r
403   */\r
404 \r
405 /**\r
406   * @}\r
407   */\r
408 \r
409 /**\r
410   * @}\r
411   */ \r
412 \r
413 /**\r
414   * @}\r
415   */\r
416   \r
417 #ifdef __cplusplus\r
418 }\r
419 #endif\r
420 \r
421 \r
422 #endif /* __STM32F7xx_HAL_PWR_H */\r
423 \r
424 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r