1 /**
2 ******************************************************************************
3 * @file stm32l1xx_hal_pwr_ex.c
4 * @author MCD Application Team
5 * @brief Extended PWR HAL module driver.
6 * This file provides firmware functions to manage the following
7 * functionalities of the Power Controller (PWR) peripheral:
8 * + Extended Initialization and de-initialization functions
9 * + Extended Peripheral Control functions
10 *
11 ******************************************************************************
12 * @attention
13 *
14 * <h2><center>© Copyright (c) 2017 STMicroelectronics.
15 * All rights reserved.</center></h2>
16 *
17 * This software component is licensed by ST under BSD 3-Clause license,
18 * the "License"; You may not use this file except in compliance with the
19 * License. You may obtain a copy of the License at:
20 * opensource.org/licenses/BSD-3-Clause
21 *
22 ******************************************************************************
23 */
24
25 /* Includes ------------------------------------------------------------------*/
26 #include "stm32l1xx_hal.h"
27
28 /** @addtogroup STM32L1xx_HAL_Driver
29 * @{
30 */
31
32 /** @defgroup PWREx PWREx
33 * @brief PWR HAL module driver
34 * @{
35 */
36
37 #ifdef HAL_PWR_MODULE_ENABLED
38
39 /* Private typedef -----------------------------------------------------------*/
40 /* Private define ------------------------------------------------------------*/
41 /* Private macro -------------------------------------------------------------*/
42 /* Private variables ---------------------------------------------------------*/
43 /* Private function prototypes -----------------------------------------------*/
44 /* Private functions ---------------------------------------------------------*/
45
46 /** @defgroup PWREx_Exported_Functions PWREx Exported Functions
47 * @{
48 */
49
50 /** @defgroup PWREx_Exported_Functions_Group1 Peripheral Extended Features Functions
51 * @brief Low Power modes configuration functions
52 *
53 @verbatim
54
55 ===============================================================================
56 ##### Peripheral extended features functions #####
57 ===============================================================================
58 @endverbatim
59 * @{
60 */
61
62 /**
63 * @brief Return Voltage Scaling Range.
64 * @retval VOS bit field (PWR_REGULATOR_VOLTAGE_SCALE1, PWR_REGULATOR_VOLTAGE_SCALE2 or PWR_REGULATOR_VOLTAGE_SCALE3)
65 */
HAL_PWREx_GetVoltageRange(void)66 uint32_t HAL_PWREx_GetVoltageRange(void)
67 {
68 return (PWR->CR & PWR_CR_VOS);
69 }
70
71
72 /**
73 * @brief Enables the Fast WakeUp from Ultra Low Power mode.
74 * @note This bit works in conjunction with ULP bit.
75 * Means, when ULP = 1 and FWU = 1 :VREFINT startup time is ignored when
76 * exiting from low power mode.
77 * @retval None
78 */
HAL_PWREx_EnableFastWakeUp(void)79 void HAL_PWREx_EnableFastWakeUp(void)
80 {
81 /* Enable the fast wake up */
82 *(__IO uint32_t *) CR_FWU_BB = (uint32_t)ENABLE;
83 }
84
85 /**
86 * @brief Disables the Fast WakeUp from Ultra Low Power mode.
87 * @retval None
88 */
HAL_PWREx_DisableFastWakeUp(void)89 void HAL_PWREx_DisableFastWakeUp(void)
90 {
91 /* Disable the fast wake up */
92 *(__IO uint32_t *) CR_FWU_BB = (uint32_t)DISABLE;
93 }
94
95 /**
96 * @brief Enables the Ultra Low Power mode
97 * @retval None
98 */
HAL_PWREx_EnableUltraLowPower(void)99 void HAL_PWREx_EnableUltraLowPower(void)
100 {
101 /* Enable the Ultra Low Power mode */
102 *(__IO uint32_t *) CR_ULP_BB = (uint32_t)ENABLE;
103 }
104
105 /**
106 * @brief Disables the Ultra Low Power mode
107 * @retval None
108 */
HAL_PWREx_DisableUltraLowPower(void)109 void HAL_PWREx_DisableUltraLowPower(void)
110 {
111 /* Disable the Ultra Low Power mode */
112 *(__IO uint32_t *) CR_ULP_BB = (uint32_t)DISABLE;
113 }
114
115 /**
116 * @brief Enters the Low Power Run mode.
117 * @note Low power run mode can only be entered when VCORE is in range 2.
118 * In addition, the dynamic voltage scaling must not be used when Low
119 * power run mode is selected. Only Stop and Sleep modes with regulator
120 * configured in Low power mode is allowed when Low power run mode is
121 * selected.
122 * @note In Low power run mode, all I/O pins keep the same state as in Run mode.
123 * @retval None
124 */
HAL_PWREx_EnableLowPowerRunMode(void)125 void HAL_PWREx_EnableLowPowerRunMode(void)
126 {
127 /* Enters the Low Power Run mode */
128 *(__IO uint32_t *) CR_LPSDSR_BB = (uint32_t)ENABLE;
129 *(__IO uint32_t *) CR_LPRUN_BB = (uint32_t)ENABLE;
130 }
131
132 /**
133 * @brief Exits the Low Power Run mode.
134 * @retval None
135 */
HAL_PWREx_DisableLowPowerRunMode(void)136 HAL_StatusTypeDef HAL_PWREx_DisableLowPowerRunMode(void)
137 {
138 /* Exits the Low Power Run mode */
139 *(__IO uint32_t *) CR_LPRUN_BB = (uint32_t)DISABLE;
140 *(__IO uint32_t *) CR_LPSDSR_BB = (uint32_t)DISABLE;
141 return HAL_OK;
142 }
143
144 /**
145 * @}
146 */
147
148 /**
149 * @}
150 */
151
152 #endif /* HAL_PWR_MODULE_ENABLED */
153 /**
154 * @}
155 */
156
157 /**
158 * @}
159 */
160
161 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
162