You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1441 lines
47 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32l4xx_ll_pwr.h
  4. * @author MCD Application Team
  5. * @version V1.7.2
  6. * @date 16-June-2017
  7. * @brief Header file of PWR LL module.
  8. ******************************************************************************
  9. * @attention
  10. *
  11. * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
  12. *
  13. * Redistribution and use in source and binary forms, with or without modification,
  14. * are permitted provided that the following conditions are met:
  15. * 1. Redistributions of source code must retain the above copyright notice,
  16. * this list of conditions and the following disclaimer.
  17. * 2. Redistributions in binary form must reproduce the above copyright notice,
  18. * this list of conditions and the following disclaimer in the documentation
  19. * and/or other materials provided with the distribution.
  20. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  21. * may be used to endorse or promote products derived from this software
  22. * without specific prior written permission.
  23. *
  24. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  25. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  26. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  27. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  28. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  29. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  30. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  31. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  32. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  33. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  34. *
  35. ******************************************************************************
  36. */
  37. /* Define to prevent recursive inclusion -------------------------------------*/
  38. #ifndef __STM32L4xx_LL_PWR_H
  39. #define __STM32L4xx_LL_PWR_H
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43. /* Includes ------------------------------------------------------------------*/
  44. #include "stm32l4xx.h"
  45. /** @addtogroup STM32L4xx_LL_Driver
  46. * @{
  47. */
  48. #if defined(PWR)
  49. /** @defgroup PWR_LL PWR
  50. * @{
  51. */
  52. /* Private types -------------------------------------------------------------*/
  53. /* Private variables ---------------------------------------------------------*/
  54. /* Private constants ---------------------------------------------------------*/
  55. /* Private macros ------------------------------------------------------------*/
  56. /* Exported types ------------------------------------------------------------*/
  57. /* Exported constants --------------------------------------------------------*/
  58. /** @defgroup PWR_LL_Exported_Constants PWR Exported Constants
  59. * @{
  60. */
  61. /** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines
  62. * @brief Flags defines which can be used with LL_PWR_WriteReg function
  63. * @{
  64. */
  65. #define LL_PWR_SCR_CSBF PWR_SCR_CSBF
  66. #define LL_PWR_SCR_CWUF PWR_SCR_CWUF
  67. #define LL_PWR_SCR_CWUF5 PWR_SCR_CWUF5
  68. #define LL_PWR_SCR_CWUF4 PWR_SCR_CWUF4
  69. #define LL_PWR_SCR_CWUF3 PWR_SCR_CWUF3
  70. #define LL_PWR_SCR_CWUF2 PWR_SCR_CWUF2
  71. #define LL_PWR_SCR_CWUF1 PWR_SCR_CWUF1
  72. /**
  73. * @}
  74. */
  75. /** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines
  76. * @brief Flags defines which can be used with LL_PWR_ReadReg function
  77. * @{
  78. */
  79. #define LL_PWR_SR1_WUFI PWR_SR1_WUFI
  80. #define LL_PWR_SR1_SBF PWR_SR1_SBF
  81. #define LL_PWR_SR1_WUF5 PWR_SR1_WUF5
  82. #define LL_PWR_SR1_WUF4 PWR_SR1_WUF4
  83. #define LL_PWR_SR1_WUF3 PWR_SR1_WUF3
  84. #define LL_PWR_SR1_WUF2 PWR_SR1_WUF2
  85. #define LL_PWR_SR1_WUF1 PWR_SR1_WUF1
  86. #if defined(PWR_SR2_PVMO4)
  87. #define LL_PWR_SR2_PVMO4 PWR_SR2_PVMO4
  88. #endif /* PWR_SR2_PVMO4 */
  89. #if defined(PWR_SR2_PVMO3)
  90. #define LL_PWR_SR2_PVMO3 PWR_SR2_PVMO3
  91. #endif /* PWR_SR2_PVMO3 */
  92. #if defined(PWR_SR2_PVMO2)
  93. #define LL_PWR_SR2_PVMO2 PWR_SR2_PVMO2
  94. #endif /* PWR_SR2_PVMO2 */
  95. #if defined(PWR_SR2_PVMO1)
  96. #define LL_PWR_SR2_PVMO1 PWR_SR2_PVMO1
  97. #endif /* PWR_SR2_PVMO1 */
  98. #define LL_PWR_SR2_PVDO PWR_SR2_PVDO
  99. #define LL_PWR_SR2_VOSF PWR_SR2_VOSF
  100. #define LL_PWR_SR2_REGLPF PWR_SR2_REGLPF
  101. #define LL_PWR_SR2_REGLPS PWR_SR2_REGLPS
  102. /**
  103. * @}
  104. */
  105. /** @defgroup PWR_LL_EC_REGU_VOLTAGE REGU VOLTAGE
  106. * @{
  107. */
  108. #define LL_PWR_REGU_VOLTAGE_SCALE1 (PWR_CR1_VOS_0)
  109. #define LL_PWR_REGU_VOLTAGE_SCALE2 (PWR_CR1_VOS_1)
  110. /**
  111. * @}
  112. */
  113. /** @defgroup PWR_LL_EC_MODE_PWR MODE PWR
  114. * @{
  115. */
  116. #define LL_PWR_MODE_STOP0 (PWR_CR1_LPMS_STOP0)
  117. #define LL_PWR_MODE_STOP1 (PWR_CR1_LPMS_STOP1)
  118. #define LL_PWR_MODE_STOP2 (PWR_CR1_LPMS_STOP2)
  119. #define LL_PWR_MODE_STANDBY (PWR_CR1_LPMS_STANDBY)
  120. #define LL_PWR_MODE_SHUTDOWN (PWR_CR1_LPMS_SHUTDOWN)
  121. /**
  122. * @}
  123. */
  124. /** @defgroup PWR_LL_EC_PVM_VDDUSB_1 Peripheral voltage monitoring
  125. * @{
  126. */
  127. #if defined(PWR_CR2_PVME1)
  128. #define LL_PWR_PVM_VDDUSB_1_2V (PWR_CR2_PVME1) /* Monitoring VDDUSB vs. 1.2V */
  129. #endif
  130. #if defined(PWR_CR2_PVME2)
  131. #define LL_PWR_PVM_VDDIO2_0_9V (PWR_CR2_PVME2) /* Monitoring VDDIO2 vs. 0.9V */
  132. #endif
  133. #if defined(PWR_CR2_PVME3)
  134. #define LL_PWR_PVM_VDDA_1_62V (PWR_CR2_PVME3) /* Monitoring VDDA vs. 1.62V */
  135. #endif
  136. #if defined(PWR_CR2_PVME4)
  137. #define LL_PWR_PVM_VDDA_2_2V (PWR_CR2_PVME4) /* Monitoring VDDA vs. 2.2V */
  138. #endif
  139. /**
  140. * @}
  141. */
  142. /** @defgroup PWR_LL_EC_PVDLEVEL PVDLEVEL
  143. * @{
  144. */
  145. #define LL_PWR_PVDLEVEL_0 (PWR_CR2_PLS_LEV0) /* VPVD0 around 2.0 V */
  146. #define LL_PWR_PVDLEVEL_1 (PWR_CR2_PLS_LEV1) /* VPVD1 around 2.2 V */
  147. #define LL_PWR_PVDLEVEL_2 (PWR_CR2_PLS_LEV2) /* VPVD2 around 2.4 V */
  148. #define LL_PWR_PVDLEVEL_3 (PWR_CR2_PLS_LEV3) /* VPVD3 around 2.5 V */
  149. #define LL_PWR_PVDLEVEL_4 (PWR_CR2_PLS_LEV4) /* VPVD4 around 2.6 V */
  150. #define LL_PWR_PVDLEVEL_5 (PWR_CR2_PLS_LEV5) /* VPVD5 around 2.8 V */
  151. #define LL_PWR_PVDLEVEL_6 (PWR_CR2_PLS_LEV6) /* VPVD6 around 2.9 V */
  152. #define LL_PWR_PVDLEVEL_7 (PWR_CR2_PLS_LEV7) /* External input analog voltage (Compare internally to VREFINT) */
  153. /**
  154. * @}
  155. */
  156. /** @defgroup PWR_LL_EC_WAKEUP WAKEUP
  157. * @{
  158. */
  159. #define LL_PWR_WAKEUP_PIN1 (PWR_CR3_EWUP1)
  160. #define LL_PWR_WAKEUP_PIN2 (PWR_CR3_EWUP2)
  161. #define LL_PWR_WAKEUP_PIN3 (PWR_CR3_EWUP3)
  162. #define LL_PWR_WAKEUP_PIN4 (PWR_CR3_EWUP4)
  163. #define LL_PWR_WAKEUP_PIN5 (PWR_CR3_EWUP5)
  164. /**
  165. * @}
  166. */
  167. /** @defgroup PWR_LL_EC_BATT_CHARG_RESISTOR BATT CHARG RESISTOR
  168. * @{
  169. */
  170. #define LL_PWR_BATT_CHARG_RESISTOR_5K ((uint32_t)0x00000000)
  171. #define LL_PWR_BATT_CHARGRESISTOR_1_5K (PWR_CR4_VBRS)
  172. /**
  173. * @}
  174. */
  175. /** @defgroup PWR_LL_EC_GPIO GPIO
  176. * @{
  177. */
  178. #define LL_PWR_GPIO_A ((uint32_t)(&(PWR->PUCRA)))
  179. #define LL_PWR_GPIO_B ((uint32_t)(&(PWR->PUCRB)))
  180. #define LL_PWR_GPIO_C ((uint32_t)(&(PWR->PUCRC)))
  181. #define LL_PWR_GPIO_D ((uint32_t)(&(PWR->PUCRD)))
  182. #define LL_PWR_GPIO_E ((uint32_t)(&(PWR->PUCRE)))
  183. #if defined(GPIOF)
  184. #define LL_PWR_GPIO_F ((uint32_t)(&(PWR->PUCRF)))
  185. #endif
  186. #if defined(GPIOG)
  187. #define LL_PWR_GPIO_G ((uint32_t)(&(PWR->PUCRG)))
  188. #endif
  189. #if defined(GPIOH)
  190. #define LL_PWR_GPIO_H ((uint32_t)(&(PWR->PUCRH)))
  191. #endif
  192. #if defined(GPIOI)
  193. #define LL_PWR_GPIO_I ((uint32_t)(&(PWR->PUCRI)))
  194. #endif
  195. /**
  196. * @}
  197. */
  198. /** @defgroup PWR_LL_EC_GPIO_BIT GPIO BIT
  199. * @{
  200. */
  201. #define LL_PWR_GPIO_BIT_0 ((uint32_t)0x00000001)
  202. #define LL_PWR_GPIO_BIT_1 ((uint32_t)0x00000002)
  203. #define LL_PWR_GPIO_BIT_2 ((uint32_t)0x00000004)
  204. #define LL_PWR_GPIO_BIT_3 ((uint32_t)0x00000008)
  205. #define LL_PWR_GPIO_BIT_4 ((uint32_t)0x00000010)
  206. #define LL_PWR_GPIO_BIT_5 ((uint32_t)0x00000020)
  207. #define LL_PWR_GPIO_BIT_6 ((uint32_t)0x00000040)
  208. #define LL_PWR_GPIO_BIT_7 ((uint32_t)0x00000080)
  209. #define LL_PWR_GPIO_BIT_8 ((uint32_t)0x00000100)
  210. #define LL_PWR_GPIO_BIT_9 ((uint32_t)0x00000200)
  211. #define LL_PWR_GPIO_BIT_10 ((uint32_t)0x00000400)
  212. #define LL_PWR_GPIO_BIT_11 ((uint32_t)0x00000800)
  213. #define LL_PWR_GPIO_BIT_12 ((uint32_t)0x00001000)
  214. #define LL_PWR_GPIO_BIT_13 ((uint32_t)0x00002000)
  215. #define LL_PWR_GPIO_BIT_14 ((uint32_t)0x00004000)
  216. #define LL_PWR_GPIO_BIT_15 ((uint32_t)0x00008000)
  217. /**
  218. * @}
  219. */
  220. /**
  221. * @}
  222. */
  223. /* Exported macro ------------------------------------------------------------*/
  224. /** @defgroup PWR_LL_Exported_Macros PWR Exported Macros
  225. * @{
  226. */
  227. /** @defgroup PWR_LL_EM_WRITE_READ Common Write and read registers Macros
  228. * @{
  229. */
  230. /**
  231. * @brief Write a value in PWR register
  232. * @param __REG__ Register to be written
  233. * @param __VALUE__ Value to be written in the register
  234. * @retval None
  235. */
  236. #define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__))
  237. /**
  238. * @brief Read a value in PWR register
  239. * @param __REG__ Register to be read
  240. * @retval Register value
  241. */
  242. #define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__)
  243. /**
  244. * @}
  245. */
  246. /**
  247. * @}
  248. */
  249. /* Exported functions --------------------------------------------------------*/
  250. /** @defgroup PWR_LL_Exported_Functions PWR Exported Functions
  251. * @{
  252. */
  253. /** @defgroup PWR_LL_EF_Configuration Configuration
  254. * @{
  255. */
  256. /**
  257. * @brief Switch the regulator from main mode to low-power mode
  258. * @rmtoll CR1 LPR LL_PWR_EnableLowPowerRunMode
  259. * @retval None
  260. */
  261. __STATIC_INLINE void LL_PWR_EnableLowPowerRunMode(void)
  262. {
  263. SET_BIT(PWR->CR1, PWR_CR1_LPR);
  264. }
  265. /**
  266. * @brief Switch the regulator from low-power mode to main mode
  267. * @rmtoll CR1 LPR LL_PWR_DisableLowPowerRunMode
  268. * @retval None
  269. */
  270. __STATIC_INLINE void LL_PWR_DisableLowPowerRunMode(void)
  271. {
  272. CLEAR_BIT(PWR->CR1, PWR_CR1_LPR);
  273. }
  274. /**
  275. * @brief Check if the regulator is in low-power mode
  276. * @rmtoll CR1 LPR LL_PWR_IsEnabledLowPowerRunMode
  277. * @retval State of bit (1 or 0).
  278. */
  279. __STATIC_INLINE uint32_t LL_PWR_IsEnabledLowPowerRunMode(void)
  280. {
  281. return (READ_BIT(PWR->CR1, PWR_CR1_LPR) == (PWR_CR1_LPR));
  282. }
  283. /**
  284. * @brief Switch from run main mode to run low-power mode.
  285. * @rmtoll CR1 LPR LL_PWR_EnterLowPowerRunMode
  286. * @retval None
  287. */
  288. __STATIC_INLINE void LL_PWR_EnterLowPowerRunMode(void)
  289. {
  290. LL_PWR_EnableLowPowerRunMode();
  291. }
  292. /**
  293. * @brief Switch from run main mode to low-power mode.
  294. * @rmtoll CR1 LPR LL_PWR_ExitLowPowerRunMode
  295. * @retval None
  296. */
  297. __STATIC_INLINE void LL_PWR_ExitLowPowerRunMode(void)
  298. {
  299. LL_PWR_DisableLowPowerRunMode();
  300. }
  301. /**
  302. * @brief Set the main internal regulator output voltage
  303. * @rmtoll CR1 VOS LL_PWR_SetRegulVoltageScaling
  304. * @param VoltageScaling This parameter can be one of the following values:
  305. * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1
  306. * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2
  307. * @retval None
  308. */
  309. __STATIC_INLINE void LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling)
  310. {
  311. MODIFY_REG(PWR->CR1, PWR_CR1_VOS, VoltageScaling);
  312. }
  313. /**
  314. * @brief Get the main internal regulator output voltage
  315. * @rmtoll CR1 VOS LL_PWR_GetRegulVoltageScaling
  316. * @retval Returned value can be one of the following values:
  317. * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1
  318. * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2
  319. */
  320. __STATIC_INLINE uint32_t LL_PWR_GetRegulVoltageScaling(void)
  321. {
  322. return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_VOS));
  323. }
  324. /**
  325. * @brief Enable access to the backup domain
  326. * @rmtoll CR1 DBP LL_PWR_EnableBkUpAccess
  327. * @retval None
  328. */
  329. __STATIC_INLINE void LL_PWR_EnableBkUpAccess(void)
  330. {
  331. SET_BIT(PWR->CR1, PWR_CR1_DBP);
  332. }
  333. /**
  334. * @brief Disable access to the backup domain
  335. * @rmtoll CR1 DBP LL_PWR_DisableBkUpAccess
  336. * @retval None
  337. */
  338. __STATIC_INLINE void LL_PWR_DisableBkUpAccess(void)
  339. {
  340. CLEAR_BIT(PWR->CR1, PWR_CR1_DBP);
  341. }
  342. /**
  343. * @brief Check if the backup domain is enabled
  344. * @rmtoll CR1 DBP LL_PWR_IsEnabledBkUpAccess
  345. * @retval State of bit (1 or 0).
  346. */
  347. __STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void)
  348. {
  349. return (READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP));
  350. }
  351. /**
  352. * @brief Set Low-Power mode
  353. * @rmtoll CR1 LPMS LL_PWR_SetPowerMode
  354. * @param LowPowerMode This parameter can be one of the following values:
  355. * @arg @ref LL_PWR_MODE_STOP0
  356. * @arg @ref LL_PWR_MODE_STOP1
  357. * @arg @ref LL_PWR_MODE_STOP2
  358. * @arg @ref LL_PWR_MODE_STANDBY
  359. * @arg @ref LL_PWR_MODE_SHUTDOWN
  360. * @retval None
  361. */
  362. __STATIC_INLINE void LL_PWR_SetPowerMode(uint32_t LowPowerMode)
  363. {
  364. MODIFY_REG(PWR->CR1, PWR_CR1_LPMS, LowPowerMode);
  365. }
  366. /**
  367. * @brief Get Low-Power mode
  368. * @rmtoll CR1 LPMS LL_PWR_GetPowerMode
  369. * @retval Returned value can be one of the following values:
  370. * @arg @ref LL_PWR_MODE_STOP0
  371. * @arg @ref LL_PWR_MODE_STOP1
  372. * @arg @ref LL_PWR_MODE_STOP2
  373. * @arg @ref LL_PWR_MODE_STANDBY
  374. * @arg @ref LL_PWR_MODE_SHUTDOWN
  375. */
  376. __STATIC_INLINE uint32_t LL_PWR_GetPowerMode(void)
  377. {
  378. return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_LPMS));
  379. }
  380. #if defined(PWR_CR2_PVME1)
  381. /**
  382. * @brief Enable VDDUSB supply
  383. * @rmtoll CR2 USV LL_PWR_EnableVddUSB
  384. * @retval None
  385. */
  386. __STATIC_INLINE void LL_PWR_EnableVddUSB(void)
  387. {
  388. SET_BIT(PWR->CR2, PWR_CR2_USV);
  389. }
  390. /**
  391. * @brief Disable VDDUSB supply
  392. * @rmtoll CR2 USV LL_PWR_DisableVddUSB
  393. * @retval None
  394. */
  395. __STATIC_INLINE void LL_PWR_DisableVddUSB(void)
  396. {
  397. CLEAR_BIT(PWR->CR2, PWR_CR2_USV);
  398. }
  399. /**
  400. * @brief Check if VDDUSB supply is enabled
  401. * @rmtoll CR2 USV LL_PWR_IsEnabledVddUSB
  402. * @retval State of bit (1 or 0).
  403. */
  404. __STATIC_INLINE uint32_t LL_PWR_IsEnabledVddUSB(void)
  405. {
  406. return (READ_BIT(PWR->CR2, PWR_CR2_USV) == (PWR_CR2_USV));
  407. }
  408. #endif
  409. #if defined(PWR_CR2_IOSV)
  410. /**
  411. * @brief Enable VDDIO2 supply
  412. * @rmtoll CR2 IOSV LL_PWR_EnableVddIO2
  413. * @retval None
  414. */
  415. __STATIC_INLINE void LL_PWR_EnableVddIO2(void)
  416. {
  417. SET_BIT(PWR->CR2, PWR_CR2_IOSV);
  418. }
  419. /**
  420. * @brief Disable VDDIO2 supply
  421. * @rmtoll CR2 IOSV LL_PWR_DisableVddIO2
  422. * @retval None
  423. */
  424. __STATIC_INLINE void LL_PWR_DisableVddIO2(void)
  425. {
  426. CLEAR_BIT(PWR->CR2, PWR_CR2_IOSV);
  427. }
  428. /**
  429. * @brief Check if VDDIO2 supply is enabled
  430. * @rmtoll CR2 IOSV LL_PWR_IsEnabledVddIO2
  431. * @retval State of bit (1 or 0).
  432. */
  433. __STATIC_INLINE uint32_t LL_PWR_IsEnabledVddIO2(void)
  434. {
  435. return (READ_BIT(PWR->CR2, PWR_CR2_IOSV) == (PWR_CR2_IOSV));
  436. }
  437. #endif
  438. /**
  439. * @brief Enable the Power Voltage Monitoring on a peripheral
  440. * @rmtoll CR2 PVME1 LL_PWR_EnablePVM\n
  441. * CR2 PVME2 LL_PWR_EnablePVM\n
  442. * CR2 PVME3 LL_PWR_EnablePVM\n
  443. * CR2 PVME4 LL_PWR_EnablePVM
  444. * @param PeriphVoltage This parameter can be one of the following values:
  445. * @arg @ref LL_PWR_PVM_VDDUSB_1_2V (*)
  446. * @arg @ref LL_PWR_PVM_VDDIO2_0_9V (*)
  447. * @arg @ref LL_PWR_PVM_VDDA_1_62V
  448. * @arg @ref LL_PWR_PVM_VDDA_2_2V
  449. *
  450. * (*) value not defined in all devices
  451. * @retval None
  452. */
  453. __STATIC_INLINE void LL_PWR_EnablePVM(uint32_t PeriphVoltage)
  454. {
  455. SET_BIT(PWR->CR2, PeriphVoltage);
  456. }
  457. /**
  458. * @brief Disable the Power Voltage Monitoring on a peripheral
  459. * @rmtoll CR2 PVME1 LL_PWR_DisablePVM\n
  460. * CR2 PVME2 LL_PWR_DisablePVM\n
  461. * CR2 PVME3 LL_PWR_DisablePVM\n
  462. * CR2 PVME4 LL_PWR_DisablePVM
  463. * @param PeriphVoltage This parameter can be one of the following values:
  464. * @arg @ref LL_PWR_PVM_VDDUSB_1_2V (*)
  465. * @arg @ref LL_PWR_PVM_VDDIO2_0_9V (*)
  466. * @arg @ref LL_PWR_PVM_VDDA_1_62V
  467. * @arg @ref LL_PWR_PVM_VDDA_2_2V
  468. *
  469. * (*) value not defined in all devices
  470. * @retval None
  471. */
  472. __STATIC_INLINE void LL_PWR_DisablePVM(uint32_t PeriphVoltage)
  473. {
  474. CLEAR_BIT(PWR->CR2, PeriphVoltage);
  475. }
  476. /**
  477. * @brief Check if Power Voltage Monitoring is enabled on a peripheral
  478. * @rmtoll CR2 PVME1 LL_PWR_IsEnabledPVM\n
  479. * CR2 PVME2 LL_PWR_IsEnabledPVM\n
  480. * CR2 PVME3 LL_PWR_IsEnabledPVM\n
  481. * CR2 PVME4 LL_PWR_IsEnabledPVM
  482. * @param PeriphVoltage This parameter can be one of the following values:
  483. * @arg @ref LL_PWR_PVM_VDDUSB_1_2V (*)
  484. * @arg @ref LL_PWR_PVM_VDDIO2_0_9V (*)
  485. * @arg @ref LL_PWR_PVM_VDDA_1_62V
  486. * @arg @ref LL_PWR_PVM_VDDA_2_2V
  487. *
  488. * (*) value not defined in all devices
  489. * @retval State of bit (1 or 0).
  490. */
  491. __STATIC_INLINE uint32_t LL_PWR_IsEnabledPVM(uint32_t PeriphVoltage)
  492. {
  493. return (READ_BIT(PWR->CR2, PeriphVoltage) == (PeriphVoltage));
  494. }
  495. /**
  496. * @brief Configure the voltage threshold detected by the Power Voltage Detector
  497. * @rmtoll CR2 PLS LL_PWR_SetPVDLevel
  498. * @param PVDLevel This parameter can be one of the following values:
  499. * @arg @ref LL_PWR_PVDLEVEL_0
  500. * @arg @ref LL_PWR_PVDLEVEL_1
  501. * @arg @ref LL_PWR_PVDLEVEL_2
  502. * @arg @ref LL_PWR_PVDLEVEL_3
  503. * @arg @ref LL_PWR_PVDLEVEL_4
  504. * @arg @ref LL_PWR_PVDLEVEL_5
  505. * @arg @ref LL_PWR_PVDLEVEL_6
  506. * @arg @ref LL_PWR_PVDLEVEL_7
  507. * @retval None
  508. */
  509. __STATIC_INLINE void LL_PWR_SetPVDLevel(uint32_t PVDLevel)
  510. {
  511. MODIFY_REG(PWR->CR2, PWR_CR2_PLS, PVDLevel);
  512. }
  513. /**
  514. * @brief Get the voltage threshold detection
  515. * @rmtoll CR2 PLS LL_PWR_GetPVDLevel
  516. * @retval Returned value can be one of the following values:
  517. * @arg @ref LL_PWR_PVDLEVEL_0
  518. * @arg @ref LL_PWR_PVDLEVEL_1
  519. * @arg @ref LL_PWR_PVDLEVEL_2
  520. * @arg @ref LL_PWR_PVDLEVEL_3
  521. * @arg @ref LL_PWR_PVDLEVEL_4
  522. * @arg @ref LL_PWR_PVDLEVEL_5
  523. * @arg @ref LL_PWR_PVDLEVEL_6
  524. * @arg @ref LL_PWR_PVDLEVEL_7
  525. */
  526. __STATIC_INLINE uint32_t LL_PWR_GetPVDLevel(void)
  527. {
  528. return (uint32_t)(READ_BIT(PWR->CR2, PWR_CR2_PLS));
  529. }
  530. /**
  531. * @brief Enable Power Voltage Detector
  532. * @rmtoll CR2 PVDE LL_PWR_EnablePVD
  533. * @retval None
  534. */
  535. __STATIC_INLINE void LL_PWR_EnablePVD(void)
  536. {
  537. SET_BIT(PWR->CR2, PWR_CR2_PVDE);
  538. }
  539. /**
  540. * @brief Disable Power Voltage Detector
  541. * @rmtoll CR2 PVDE LL_PWR_DisablePVD
  542. * @retval None
  543. */
  544. __STATIC_INLINE void LL_PWR_DisablePVD(void)
  545. {
  546. CLEAR_BIT(PWR->CR2, PWR_CR2_PVDE);
  547. }
  548. /**
  549. * @brief Check if Power Voltage Detector is enabled
  550. * @rmtoll CR2 PVDE LL_PWR_IsEnabledPVD
  551. * @retval State of bit (1 or 0).
  552. */
  553. __STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(void)
  554. {
  555. return (READ_BIT(PWR->CR2, PWR_CR2_PVDE) == (PWR_CR2_PVDE));
  556. }
  557. /**
  558. * @brief Enable Internal Wake-up line
  559. * @rmtoll CR3 EIWF LL_PWR_EnableInternWU
  560. * @retval None
  561. */
  562. __STATIC_INLINE void LL_PWR_EnableInternWU(void)
  563. {
  564. SET_BIT(PWR->CR3, PWR_CR3_EIWF);
  565. }
  566. /**
  567. * @brief Disable Internal Wake-up line
  568. * @rmtoll CR3 EIWF LL_PWR_DisableInternWU
  569. * @retval None
  570. */
  571. __STATIC_INLINE void LL_PWR_DisableInternWU(void)
  572. {
  573. CLEAR_BIT(PWR->CR3, PWR_CR3_EIWF);
  574. }
  575. /**
  576. * @brief Check if Internal Wake-up line is enabled
  577. * @rmtoll CR3 EIWF LL_PWR_IsEnabledInternWU
  578. * @retval State of bit (1 or 0).
  579. */
  580. __STATIC_INLINE uint32_t LL_PWR_IsEnabledInternWU(void)
  581. {
  582. return (READ_BIT(PWR->CR3, PWR_CR3_EIWF) == (PWR_CR3_EIWF));
  583. }
  584. /**
  585. * @brief Enable pull-up and pull-down configuration
  586. * @rmtoll CR3 APC LL_PWR_EnablePUPDCfg
  587. * @retval None
  588. */
  589. __STATIC_INLINE void LL_PWR_EnablePUPDCfg(void)
  590. {
  591. SET_BIT(PWR->CR3, PWR_CR3_APC);
  592. }
  593. /**
  594. * @brief Disable pull-up and pull-down configuration
  595. * @rmtoll CR3 APC LL_PWR_DisablePUPDCfg
  596. * @retval None
  597. */
  598. __STATIC_INLINE void LL_PWR_DisablePUPDCfg(void)
  599. {
  600. CLEAR_BIT(PWR->CR3, PWR_CR3_APC);
  601. }
  602. /**
  603. * @brief Check if pull-up and pull-down configuration is enabled
  604. * @rmtoll CR3 APC LL_PWR_IsEnabledPUPDCfg
  605. * @retval State of bit (1 or 0).
  606. */
  607. __STATIC_INLINE uint32_t LL_PWR_IsEnabledPUPDCfg(void)
  608. {
  609. return (READ_BIT(PWR->CR3, PWR_CR3_APC) == (PWR_CR3_APC));
  610. }
  611. /**
  612. * @brief Enable SRAM2 content retention in Standby mode
  613. * @rmtoll CR3 RRS LL_PWR_EnableSRAM2Retention
  614. * @retval None
  615. */
  616. __STATIC_INLINE void LL_PWR_EnableSRAM2Retention(void)
  617. {
  618. SET_BIT(PWR->CR3, PWR_CR3_RRS);
  619. }
  620. /**
  621. * @brief Disable SRAM2 content retention in Standby mode
  622. * @rmtoll CR3 RRS LL_PWR_DisableSRAM2Retention
  623. * @retval None
  624. */
  625. __STATIC_INLINE void LL_PWR_DisableSRAM2Retention(void)
  626. {
  627. CLEAR_BIT(PWR->CR3, PWR_CR3_RRS);
  628. }
  629. /**
  630. * @brief Check if SRAM2 content retention in Standby mode is enabled
  631. * @rmtoll CR3 RRS LL_PWR_IsEnabledSRAM2Retention
  632. * @retval State of bit (1 or 0).
  633. */
  634. __STATIC_INLINE uint32_t LL_PWR_IsEnabledSRAM2Retention(void)
  635. {
  636. return (READ_BIT(PWR->CR3, PWR_CR3_RRS) == (PWR_CR3_RRS));
  637. }
  638. /**
  639. * @brief Enable the WakeUp PINx functionality
  640. * @rmtoll CR3 EWUP1 LL_PWR_EnableWakeUpPin\n
  641. * CR3 EWUP2 LL_PWR_EnableWakeUpPin\n
  642. * CR3 EWUP3 LL_PWR_EnableWakeUpPin\n
  643. * CR3 EWUP4 LL_PWR_EnableWakeUpPin\n
  644. * CR3 EWUP5 LL_PWR_EnableWakeUpPin\n
  645. * @param WakeUpPin This parameter can be one of the following values:
  646. * @arg @ref LL_PWR_WAKEUP_PIN1
  647. * @arg @ref LL_PWR_WAKEUP_PIN2
  648. * @arg @ref LL_PWR_WAKEUP_PIN3
  649. * @arg @ref LL_PWR_WAKEUP_PIN4
  650. * @arg @ref LL_PWR_WAKEUP_PIN5
  651. * @retval None
  652. */
  653. __STATIC_INLINE void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin)
  654. {
  655. SET_BIT(PWR->CR3, WakeUpPin);
  656. }
  657. /**
  658. * @brief Disable the WakeUp PINx functionality
  659. * @rmtoll CR3 EWUP1 LL_PWR_DisableWakeUpPin\n
  660. * CR3 EWUP2 LL_PWR_DisableWakeUpPin\n
  661. * CR3 EWUP3 LL_PWR_DisableWakeUpPin\n
  662. * CR3 EWUP4 LL_PWR_DisableWakeUpPin\n
  663. * CR3 EWUP5 LL_PWR_DisableWakeUpPin\n
  664. * @param WakeUpPin This parameter can be one of the following values:
  665. * @arg @ref LL_PWR_WAKEUP_PIN1
  666. * @arg @ref LL_PWR_WAKEUP_PIN2
  667. * @arg @ref LL_PWR_WAKEUP_PIN3
  668. * @arg @ref LL_PWR_WAKEUP_PIN4
  669. * @arg @ref LL_PWR_WAKEUP_PIN5
  670. * @retval None
  671. */
  672. __STATIC_INLINE void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin)
  673. {
  674. CLEAR_BIT(PWR->CR3, WakeUpPin);
  675. }
  676. /**
  677. * @brief Check if the WakeUp PINx functionality is enabled
  678. * @rmtoll CR3 EWUP1 LL_PWR_IsEnabledWakeUpPin\n
  679. * CR3 EWUP2 LL_PWR_IsEnabledWakeUpPin\n
  680. * CR3 EWUP3 LL_PWR_IsEnabledWakeUpPin\n
  681. * CR3 EWUP4 LL_PWR_IsEnabledWakeUpPin\n
  682. * CR3 EWUP5 LL_PWR_IsEnabledWakeUpPin\n
  683. * @param WakeUpPin This parameter can be one of the following values:
  684. * @arg @ref LL_PWR_WAKEUP_PIN1
  685. * @arg @ref LL_PWR_WAKEUP_PIN2
  686. * @arg @ref LL_PWR_WAKEUP_PIN3
  687. * @arg @ref LL_PWR_WAKEUP_PIN4
  688. * @arg @ref LL_PWR_WAKEUP_PIN5
  689. * @retval State of bit (1 or 0).
  690. */
  691. __STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin)
  692. {
  693. return (READ_BIT(PWR->CR3, WakeUpPin) == (WakeUpPin));
  694. }
  695. /**
  696. * @brief Set the resistor impedance
  697. * @rmtoll CR4 VBRS LL_PWR_SetBattChargResistor
  698. * @param Resistor This parameter can be one of the following values:
  699. * @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K
  700. * @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K
  701. * @retval None
  702. */
  703. __STATIC_INLINE void LL_PWR_SetBattChargResistor(uint32_t Resistor)
  704. {
  705. MODIFY_REG(PWR->CR4, PWR_CR4_VBRS, Resistor);
  706. }
  707. /**
  708. * @brief Get the resistor impedance
  709. * @rmtoll CR4 VBRS LL_PWR_GetBattChargResistor
  710. * @retval Returned value can be one of the following values:
  711. * @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K
  712. * @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K
  713. */
  714. __STATIC_INLINE uint32_t LL_PWR_GetBattChargResistor(void)
  715. {
  716. return (uint32_t)(READ_BIT(PWR->CR4, PWR_CR4_VBRS));
  717. }
  718. /**
  719. * @brief Enable battery charging
  720. * @rmtoll CR4 VBE LL_PWR_EnableBatteryCharging
  721. * @retval None
  722. */
  723. __STATIC_INLINE void LL_PWR_EnableBatteryCharging(void)
  724. {
  725. SET_BIT(PWR->CR4, PWR_CR4_VBE);
  726. }
  727. /**
  728. * @brief Disable battery charging
  729. * @rmtoll CR4 VBE LL_PWR_DisableBatteryCharging
  730. * @retval None
  731. */
  732. __STATIC_INLINE void LL_PWR_DisableBatteryCharging(void)
  733. {
  734. CLEAR_BIT(PWR->CR4, PWR_CR4_VBE);
  735. }
  736. /**
  737. * @brief Check if battery charging is enabled
  738. * @rmtoll CR4 VBE LL_PWR_IsEnabledBatteryCharging
  739. * @retval State of bit (1 or 0).
  740. */
  741. __STATIC_INLINE uint32_t LL_PWR_IsEnabledBatteryCharging(void)
  742. {
  743. return (READ_BIT(PWR->CR4, PWR_CR4_VBE) == (PWR_CR4_VBE));
  744. }
  745. /**
  746. * @brief Set the Wake-Up pin polarity low for the event detection
  747. * @rmtoll CR4 WP1 LL_PWR_SetWakeUpPinPolarityLow\n
  748. * CR4 WP2 LL_PWR_SetWakeUpPinPolarityLow\n
  749. * CR4 WP3 LL_PWR_SetWakeUpPinPolarityLow\n
  750. * CR4 WP4 LL_PWR_SetWakeUpPinPolarityLow\n
  751. * CR4 WP5 LL_PWR_SetWakeUpPinPolarityLow
  752. * @param WakeUpPin This parameter can be one of the following values:
  753. * @arg @ref LL_PWR_WAKEUP_PIN1
  754. * @arg @ref LL_PWR_WAKEUP_PIN2
  755. * @arg @ref LL_PWR_WAKEUP_PIN3
  756. * @arg @ref LL_PWR_WAKEUP_PIN4
  757. * @arg @ref LL_PWR_WAKEUP_PIN5
  758. * @retval None
  759. */
  760. __STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityLow(uint32_t WakeUpPin)
  761. {
  762. SET_BIT(PWR->CR4, WakeUpPin);
  763. }
  764. /**
  765. * @brief Set the Wake-Up pin polarity high for the event detection
  766. * @rmtoll CR4 WP1 LL_PWR_SetWakeUpPinPolarityHigh\n
  767. * CR4 WP2 LL_PWR_SetWakeUpPinPolarityHigh\n
  768. * CR4 WP3 LL_PWR_SetWakeUpPinPolarityHigh\n
  769. * CR4 WP4 LL_PWR_SetWakeUpPinPolarityHigh\n
  770. * CR4 WP5 LL_PWR_SetWakeUpPinPolarityHigh
  771. * @param WakeUpPin This parameter can be one of the following values:
  772. * @arg @ref LL_PWR_WAKEUP_PIN1
  773. * @arg @ref LL_PWR_WAKEUP_PIN2
  774. * @arg @ref LL_PWR_WAKEUP_PIN3
  775. * @arg @ref LL_PWR_WAKEUP_PIN4
  776. * @arg @ref LL_PWR_WAKEUP_PIN5
  777. * @retval None
  778. */
  779. __STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityHigh(uint32_t WakeUpPin)
  780. {
  781. CLEAR_BIT(PWR->CR4, WakeUpPin);
  782. }
  783. /**
  784. * @brief Get the Wake-Up pin polarity for the event detection
  785. * @rmtoll CR4 WP1 LL_PWR_IsWakeUpPinPolarityLow\n
  786. * CR4 WP2 LL_PWR_IsWakeUpPinPolarityLow\n
  787. * CR4 WP3 LL_PWR_IsWakeUpPinPolarityLow\n
  788. * CR4 WP4 LL_PWR_IsWakeUpPinPolarityLow\n
  789. * CR4 WP5 LL_PWR_IsWakeUpPinPolarityLow
  790. * @param WakeUpPin This parameter can be one of the following values:
  791. * @arg @ref LL_PWR_WAKEUP_PIN1
  792. * @arg @ref LL_PWR_WAKEUP_PIN2
  793. * @arg @ref LL_PWR_WAKEUP_PIN3
  794. * @arg @ref LL_PWR_WAKEUP_PIN4
  795. * @arg @ref LL_PWR_WAKEUP_PIN5
  796. * @retval State of bit (1 or 0).
  797. */
  798. __STATIC_INLINE uint32_t LL_PWR_IsWakeUpPinPolarityLow(uint32_t WakeUpPin)
  799. {
  800. return (READ_BIT(PWR->CR4, WakeUpPin) == (WakeUpPin));
  801. }
  802. /**
  803. * @brief Enable GPIO pull-up state in Standby and Shutdown modes
  804. * @rmtoll PUCRA PU0-15 LL_PWR_EnableGPIOPullUp\n
  805. * PUCRB PU0-15 LL_PWR_EnableGPIOPullUp\n
  806. * PUCRC PU0-15 LL_PWR_EnableGPIOPullUp\n
  807. * PUCRD PU0-15 LL_PWR_EnableGPIOPullUp\n
  808. * PUCRE PU0-15 LL_PWR_EnableGPIOPullUp\n
  809. * PUCRF PU0-15 LL_PWR_EnableGPIOPullUp\n
  810. * PUCRG PU0-15 LL_PWR_EnableGPIOPullUp\n
  811. * PUCRH PU0-15 LL_PWR_EnableGPIOPullUp\n
  812. * PUCRI PU0-11 LL_PWR_EnableGPIOPullUp
  813. * @param GPIO This parameter can be one of the following values:
  814. * @arg @ref LL_PWR_GPIO_A
  815. * @arg @ref LL_PWR_GPIO_B
  816. * @arg @ref LL_PWR_GPIO_C
  817. * @arg @ref LL_PWR_GPIO_D
  818. * @arg @ref LL_PWR_GPIO_E
  819. * @arg @ref LL_PWR_GPIO_F (*)
  820. * @arg @ref LL_PWR_GPIO_G (*)
  821. * @arg @ref LL_PWR_GPIO_H
  822. * @arg @ref LL_PWR_GPIO_I (*)
  823. *
  824. * (*) value not defined in all devices
  825. * @param GPIONumber This parameter can be one of the following values:
  826. * @arg @ref LL_PWR_GPIO_BIT_0
  827. * @arg @ref LL_PWR_GPIO_BIT_1
  828. * @arg @ref LL_PWR_GPIO_BIT_2
  829. * @arg @ref LL_PWR_GPIO_BIT_3
  830. * @arg @ref LL_PWR_GPIO_BIT_4
  831. * @arg @ref LL_PWR_GPIO_BIT_5
  832. * @arg @ref LL_PWR_GPIO_BIT_6
  833. * @arg @ref LL_PWR_GPIO_BIT_7
  834. * @arg @ref LL_PWR_GPIO_BIT_8
  835. * @arg @ref LL_PWR_GPIO_BIT_9
  836. * @arg @ref LL_PWR_GPIO_BIT_10
  837. * @arg @ref LL_PWR_GPIO_BIT_11
  838. * @arg @ref LL_PWR_GPIO_BIT_12
  839. * @arg @ref LL_PWR_GPIO_BIT_13
  840. * @arg @ref LL_PWR_GPIO_BIT_14
  841. * @arg @ref LL_PWR_GPIO_BIT_15
  842. * @retval None
  843. */
  844. __STATIC_INLINE void LL_PWR_EnableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber)
  845. {
  846. SET_BIT(*((uint32_t *)GPIO), GPIONumber);
  847. }
  848. /**
  849. * @brief Disable GPIO pull-up state in Standby and Shutdown modes
  850. * @rmtoll PUCRA PU0-15 LL_PWR_DisableGPIOPullUp\n
  851. * PUCRB PU0-15 LL_PWR_DisableGPIOPullUp\n
  852. * PUCRC PU0-15 LL_PWR_DisableGPIOPullUp\n
  853. * PUCRD PU0-15 LL_PWR_DisableGPIOPullUp\n
  854. * PUCRE PU0-15 LL_PWR_DisableGPIOPullUp\n
  855. * PUCRF PU0-15 LL_PWR_DisableGPIOPullUp\n
  856. * PUCRG PU0-15 LL_PWR_DisableGPIOPullUp\n
  857. * PUCRH PU0-15 LL_PWR_DisableGPIOPullUp\n
  858. * PUCRI PU0-11 LL_PWR_DisableGPIOPullUp
  859. * @param GPIO This parameter can be one of the following values:
  860. * @arg @ref LL_PWR_GPIO_A
  861. * @arg @ref LL_PWR_GPIO_B
  862. * @arg @ref LL_PWR_GPIO_C
  863. * @arg @ref LL_PWR_GPIO_D
  864. * @arg @ref LL_PWR_GPIO_E
  865. * @arg @ref LL_PWR_GPIO_F (*)
  866. * @arg @ref LL_PWR_GPIO_G (*)
  867. * @arg @ref LL_PWR_GPIO_H
  868. * @arg @ref LL_PWR_GPIO_I (*)
  869. *
  870. * (*) value not defined in all devices
  871. * @param GPIONumber This parameter can be one of the following values:
  872. * @arg @ref LL_PWR_GPIO_BIT_0
  873. * @arg @ref LL_PWR_GPIO_BIT_1
  874. * @arg @ref LL_PWR_GPIO_BIT_2
  875. * @arg @ref LL_PWR_GPIO_BIT_3
  876. * @arg @ref LL_PWR_GPIO_BIT_4
  877. * @arg @ref LL_PWR_GPIO_BIT_5
  878. * @arg @ref LL_PWR_GPIO_BIT_6
  879. * @arg @ref LL_PWR_GPIO_BIT_7
  880. * @arg @ref LL_PWR_GPIO_BIT_8
  881. * @arg @ref LL_PWR_GPIO_BIT_9
  882. * @arg @ref LL_PWR_GPIO_BIT_10
  883. * @arg @ref LL_PWR_GPIO_BIT_11
  884. * @arg @ref LL_PWR_GPIO_BIT_12
  885. * @arg @ref LL_PWR_GPIO_BIT_13
  886. * @arg @ref LL_PWR_GPIO_BIT_14
  887. * @arg @ref LL_PWR_GPIO_BIT_15
  888. * @retval None
  889. */
  890. __STATIC_INLINE void LL_PWR_DisableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber)
  891. {
  892. CLEAR_BIT(*((uint32_t *)GPIO), GPIONumber);
  893. }
  894. /**
  895. * @brief Check if GPIO pull-up state is enabled
  896. * @rmtoll PUCRA PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
  897. * PUCRB PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
  898. * PUCRC PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
  899. * PUCRD PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
  900. * PUCRE PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
  901. * PUCRF PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
  902. * PUCRG PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
  903. * PUCRH PU0-15 LL_PWR_IsEnabledGPIOPullUp\n
  904. * PUCRI PU0-11 LL_PWR_IsEnabledGPIOPullUp
  905. * @param GPIO This parameter can be one of the following values:
  906. * @arg @ref LL_PWR_GPIO_A
  907. * @arg @ref LL_PWR_GPIO_B
  908. * @arg @ref LL_PWR_GPIO_C
  909. * @arg @ref LL_PWR_GPIO_D
  910. * @arg @ref LL_PWR_GPIO_E
  911. * @arg @ref LL_PWR_GPIO_F (*)
  912. * @arg @ref LL_PWR_GPIO_G (*)
  913. * @arg @ref LL_PWR_GPIO_H
  914. * @arg @ref LL_PWR_GPIO_I (*)
  915. *
  916. * (*) value not defined in all devices
  917. * @param GPIONumber This parameter can be one of the following values:
  918. * @arg @ref LL_PWR_GPIO_BIT_0
  919. * @arg @ref LL_PWR_GPIO_BIT_1
  920. * @arg @ref LL_PWR_GPIO_BIT_2
  921. * @arg @ref LL_PWR_GPIO_BIT_3
  922. * @arg @ref LL_PWR_GPIO_BIT_4
  923. * @arg @ref LL_PWR_GPIO_BIT_5
  924. * @arg @ref LL_PWR_GPIO_BIT_6
  925. * @arg @ref LL_PWR_GPIO_BIT_7
  926. * @arg @ref LL_PWR_GPIO_BIT_8
  927. * @arg @ref LL_PWR_GPIO_BIT_9
  928. * @arg @ref LL_PWR_GPIO_BIT_10
  929. * @arg @ref LL_PWR_GPIO_BIT_11
  930. * @arg @ref LL_PWR_GPIO_BIT_12
  931. * @arg @ref LL_PWR_GPIO_BIT_13
  932. * @arg @ref LL_PWR_GPIO_BIT_14
  933. * @arg @ref LL_PWR_GPIO_BIT_15
  934. * @retval State of bit (1 or 0).
  935. */
  936. __STATIC_INLINE uint32_t LL_PWR_IsEnabledGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber)
  937. {
  938. return (READ_BIT(*((uint32_t *)(GPIO)), GPIONumber) == (GPIONumber));
  939. }
  940. /**
  941. * @brief Enable GPIO pull-down state in Standby and Shutdown modes
  942. * @rmtoll PDCRA PD0-15 LL_PWR_EnableGPIOPullDown\n
  943. * PDCRB PD0-15 LL_PWR_EnableGPIOPullDown\n
  944. * PDCRC PD0-15 LL_PWR_EnableGPIOPullDown\n
  945. * PDCRD PD0-15 LL_PWR_EnableGPIOPullDown\n
  946. * PDCRE PD0-15 LL_PWR_EnableGPIOPullDown\n
  947. * PDCRF PD0-15 LL_PWR_EnableGPIOPullDown\n
  948. * PDCRG PD0-15 LL_PWR_EnableGPIOPullDown\n
  949. * PDCRH PD0-15 LL_PWR_EnableGPIOPullDown\n
  950. * PDCRI PD0-11 LL_PWR_EnableGPIOPullDown
  951. * @param GPIO This parameter can be one of the following values:
  952. * @arg @ref LL_PWR_GPIO_A
  953. * @arg @ref LL_PWR_GPIO_B
  954. * @arg @ref LL_PWR_GPIO_C
  955. * @arg @ref LL_PWR_GPIO_D
  956. * @arg @ref LL_PWR_GPIO_E
  957. * @arg @ref LL_PWR_GPIO_F (*)
  958. * @arg @ref LL_PWR_GPIO_G (*)
  959. * @arg @ref LL_PWR_GPIO_H
  960. * @arg @ref LL_PWR_GPIO_I (*)
  961. *
  962. * (*) value not defined in all devices
  963. * @param GPIONumber This parameter can be one of the following values:
  964. * @arg @ref LL_PWR_GPIO_BIT_0
  965. * @arg @ref LL_PWR_GPIO_BIT_1
  966. * @arg @ref LL_PWR_GPIO_BIT_2
  967. * @arg @ref LL_PWR_GPIO_BIT_3
  968. * @arg @ref LL_PWR_GPIO_BIT_4
  969. * @arg @ref LL_PWR_GPIO_BIT_5
  970. * @arg @ref LL_PWR_GPIO_BIT_6
  971. * @arg @ref LL_PWR_GPIO_BIT_7
  972. * @arg @ref LL_PWR_GPIO_BIT_8
  973. * @arg @ref LL_PWR_GPIO_BIT_9
  974. * @arg @ref LL_PWR_GPIO_BIT_10
  975. * @arg @ref LL_PWR_GPIO_BIT_11
  976. * @arg @ref LL_PWR_GPIO_BIT_12
  977. * @arg @ref LL_PWR_GPIO_BIT_13
  978. * @arg @ref LL_PWR_GPIO_BIT_14
  979. * @arg @ref LL_PWR_GPIO_BIT_15
  980. * @retval None
  981. */
  982. __STATIC_INLINE void LL_PWR_EnableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber)
  983. {
  984. register uint32_t temp = (uint32_t)(GPIO) + 4;
  985. SET_BIT(*((uint32_t *)(temp)), GPIONumber);
  986. }
  987. /**
  988. * @brief Disable GPIO pull-down state in Standby and Shutdown modes
  989. * @rmtoll PDCRA PD0-15 LL_PWR_DisableGPIOPullDown\n
  990. * PDCRB PD0-15 LL_PWR_DisableGPIOPullDown\n
  991. * PDCRC PD0-15 LL_PWR_DisableGPIOPullDown\n
  992. * PDCRD PD0-15 LL_PWR_DisableGPIOPullDown\n
  993. * PDCRE PD0-15 LL_PWR_DisableGPIOPullDown\n
  994. * PDCRF PD0-15 LL_PWR_DisableGPIOPullDown\n
  995. * PDCRG PD0-15 LL_PWR_DisableGPIOPullDown\n
  996. * PDCRH PD0-15 LL_PWR_DisableGPIOPullDown\n
  997. * PDCRI PD0-11 LL_PWR_DisableGPIOPullDown
  998. * @param GPIO This parameter can be one of the following values:
  999. * @arg @ref LL_PWR_GPIO_A
  1000. * @arg @ref LL_PWR_GPIO_B
  1001. * @arg @ref LL_PWR_GPIO_C
  1002. * @arg @ref LL_PWR_GPIO_D
  1003. * @arg @ref LL_PWR_GPIO_E
  1004. * @arg @ref LL_PWR_GPIO_F (*)
  1005. * @arg @ref LL_PWR_GPIO_G (*)
  1006. * @arg @ref LL_PWR_GPIO_H
  1007. * @arg @ref LL_PWR_GPIO_I (*)
  1008. *
  1009. * (*) value not defined in all devices
  1010. * @param GPIONumber This parameter can be one of the following values:
  1011. * @arg @ref LL_PWR_GPIO_BIT_0
  1012. * @arg @ref LL_PWR_GPIO_BIT_1
  1013. * @arg @ref LL_PWR_GPIO_BIT_2
  1014. * @arg @ref LL_PWR_GPIO_BIT_3
  1015. * @arg @ref LL_PWR_GPIO_BIT_4
  1016. * @arg @ref LL_PWR_GPIO_BIT_5
  1017. * @arg @ref LL_PWR_GPIO_BIT_6
  1018. * @arg @ref LL_PWR_GPIO_BIT_7
  1019. * @arg @ref LL_PWR_GPIO_BIT_8
  1020. * @arg @ref LL_PWR_GPIO_BIT_9
  1021. * @arg @ref LL_PWR_GPIO_BIT_10
  1022. * @arg @ref LL_PWR_GPIO_BIT_11
  1023. * @arg @ref LL_PWR_GPIO_BIT_12
  1024. * @arg @ref LL_PWR_GPIO_BIT_13
  1025. * @arg @ref LL_PWR_GPIO_BIT_14
  1026. * @arg @ref LL_PWR_GPIO_BIT_15
  1027. * @retval None
  1028. */
  1029. __STATIC_INLINE void LL_PWR_DisableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber)
  1030. {
  1031. register uint32_t temp = (uint32_t)(GPIO) + 4;
  1032. CLEAR_BIT(*((uint32_t *)(temp)), GPIONumber);
  1033. }
  1034. /**
  1035. * @brief Check if GPIO pull-down state is enabled
  1036. * @rmtoll PDCRA PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
  1037. * PDCRB PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
  1038. * PDCRC PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
  1039. * PDCRD PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
  1040. * PDCRE PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
  1041. * PDCRF PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
  1042. * PDCRG PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
  1043. * PDCRH PD0-15 LL_PWR_IsEnabledGPIOPullDown\n
  1044. * PDCRI PD0-11 LL_PWR_IsEnabledGPIOPullDown
  1045. * @param GPIO This parameter can be one of the following values:
  1046. * @arg @ref LL_PWR_GPIO_A
  1047. * @arg @ref LL_PWR_GPIO_B
  1048. * @arg @ref LL_PWR_GPIO_C
  1049. * @arg @ref LL_PWR_GPIO_D
  1050. * @arg @ref LL_PWR_GPIO_E
  1051. * @arg @ref LL_PWR_GPIO_F (*)
  1052. * @arg @ref LL_PWR_GPIO_G (*)
  1053. * @arg @ref LL_PWR_GPIO_H
  1054. * @arg @ref LL_PWR_GPIO_I (*)
  1055. *
  1056. * (*) value not defined in all devices
  1057. * @param GPIONumber This parameter can be one of the following values:
  1058. * @arg @ref LL_PWR_GPIO_BIT_0
  1059. * @arg @ref LL_PWR_GPIO_BIT_1
  1060. * @arg @ref LL_PWR_GPIO_BIT_2
  1061. * @arg @ref LL_PWR_GPIO_BIT_3
  1062. * @arg @ref LL_PWR_GPIO_BIT_4
  1063. * @arg @ref LL_PWR_GPIO_BIT_5
  1064. * @arg @ref LL_PWR_GPIO_BIT_6
  1065. * @arg @ref LL_PWR_GPIO_BIT_7
  1066. * @arg @ref LL_PWR_GPIO_BIT_8
  1067. * @arg @ref LL_PWR_GPIO_BIT_9
  1068. * @arg @ref LL_PWR_GPIO_BIT_10
  1069. * @arg @ref LL_PWR_GPIO_BIT_11
  1070. * @arg @ref LL_PWR_GPIO_BIT_12
  1071. * @arg @ref LL_PWR_GPIO_BIT_13
  1072. * @arg @ref LL_PWR_GPIO_BIT_14
  1073. * @arg @ref LL_PWR_GPIO_BIT_15
  1074. * @retval State of bit (1 or 0).
  1075. */
  1076. __STATIC_INLINE uint32_t LL_PWR_IsEnabledGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber)
  1077. {
  1078. register uint32_t temp = (uint32_t)(GPIO) + 4;
  1079. return (READ_BIT(*((uint32_t *)(temp)), GPIONumber) == (GPIONumber));
  1080. }
  1081. /**
  1082. * @}
  1083. */
  1084. /** @defgroup PWR_LL_EF_FLAG_Management FLAG_Management
  1085. * @{
  1086. */
  1087. /**
  1088. * @brief Get Internal Wake-up line Flag
  1089. * @rmtoll SR1 WUFI LL_PWR_IsActiveFlag_InternWU
  1090. * @retval State of bit (1 or 0).
  1091. */
  1092. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_InternWU(void)
  1093. {
  1094. return (READ_BIT(PWR->SR1, PWR_SR1_WUFI) == (PWR_SR1_WUFI));
  1095. }
  1096. /**
  1097. * @brief Get Stand-By Flag
  1098. * @rmtoll SR1 SBF LL_PWR_IsActiveFlag_SB
  1099. * @retval State of bit (1 or 0).
  1100. */
  1101. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SB(void)
  1102. {
  1103. return (READ_BIT(PWR->SR1, PWR_SR1_SBF) == (PWR_SR1_SBF));
  1104. }
  1105. /**
  1106. * @brief Get Wake-up Flag 5
  1107. * @rmtoll SR1 WUF5 LL_PWR_IsActiveFlag_WU5
  1108. * @retval State of bit (1 or 0).
  1109. */
  1110. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU5(void)
  1111. {
  1112. return (READ_BIT(PWR->SR1, PWR_SR1_WUF5) == (PWR_SR1_WUF5));
  1113. }
  1114. /**
  1115. * @brief Get Wake-up Flag 4
  1116. * @rmtoll SR1 WUF4 LL_PWR_IsActiveFlag_WU4
  1117. * @retval State of bit (1 or 0).
  1118. */
  1119. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU4(void)
  1120. {
  1121. return (READ_BIT(PWR->SR1, PWR_SR1_WUF4) == (PWR_SR1_WUF4));
  1122. }
  1123. /**
  1124. * @brief Get Wake-up Flag 3
  1125. * @rmtoll SR1 WUF3 LL_PWR_IsActiveFlag_WU3
  1126. * @retval State of bit (1 or 0).
  1127. */
  1128. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU3(void)
  1129. {
  1130. return (READ_BIT(PWR->SR1, PWR_SR1_WUF3) == (PWR_SR1_WUF3));
  1131. }
  1132. /**
  1133. * @brief Get Wake-up Flag 2
  1134. * @rmtoll SR1 WUF2 LL_PWR_IsActiveFlag_WU2
  1135. * @retval State of bit (1 or 0).
  1136. */
  1137. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU2(void)
  1138. {
  1139. return (READ_BIT(PWR->SR1, PWR_SR1_WUF2) == (PWR_SR1_WUF2));
  1140. }
  1141. /**
  1142. * @brief Get Wake-up Flag 1
  1143. * @rmtoll SR1 WUF1 LL_PWR_IsActiveFlag_WU1
  1144. * @retval State of bit (1 or 0).
  1145. */
  1146. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU1(void)
  1147. {
  1148. return (READ_BIT(PWR->SR1, PWR_SR1_WUF1) == (PWR_SR1_WUF1));
  1149. }
  1150. /**
  1151. * @brief Clear Stand-By Flag
  1152. * @rmtoll SCR CSBF LL_PWR_ClearFlag_SB
  1153. * @retval None
  1154. */
  1155. __STATIC_INLINE void LL_PWR_ClearFlag_SB(void)
  1156. {
  1157. WRITE_REG(PWR->SCR, PWR_SCR_CSBF);
  1158. }
  1159. /**
  1160. * @brief Clear Wake-up Flags
  1161. * @rmtoll SCR CWUF LL_PWR_ClearFlag_WU
  1162. * @retval None
  1163. */
  1164. __STATIC_INLINE void LL_PWR_ClearFlag_WU(void)
  1165. {
  1166. WRITE_REG(PWR->SCR, PWR_SCR_CWUF);
  1167. }
  1168. /**
  1169. * @brief Clear Wake-up Flag 5
  1170. * @rmtoll SCR CWUF5 LL_PWR_ClearFlag_WU5
  1171. * @retval None
  1172. */
  1173. __STATIC_INLINE void LL_PWR_ClearFlag_WU5(void)
  1174. {
  1175. WRITE_REG(PWR->SCR, PWR_SCR_CWUF5);
  1176. }
  1177. /**
  1178. * @brief Clear Wake-up Flag 4
  1179. * @rmtoll SCR CWUF4 LL_PWR_ClearFlag_WU4
  1180. * @retval None
  1181. */
  1182. __STATIC_INLINE void LL_PWR_ClearFlag_WU4(void)
  1183. {
  1184. WRITE_REG(PWR->SCR, PWR_SCR_CWUF4);
  1185. }
  1186. /**
  1187. * @brief Clear Wake-up Flag 3
  1188. * @rmtoll SCR CWUF3 LL_PWR_ClearFlag_WU3
  1189. * @retval None
  1190. */
  1191. __STATIC_INLINE void LL_PWR_ClearFlag_WU3(void)
  1192. {
  1193. WRITE_REG(PWR->SCR, PWR_SCR_CWUF3);
  1194. }
  1195. /**
  1196. * @brief Clear Wake-up Flag 2
  1197. * @rmtoll SCR CWUF2 LL_PWR_ClearFlag_WU2
  1198. * @retval None
  1199. */
  1200. __STATIC_INLINE void LL_PWR_ClearFlag_WU2(void)
  1201. {
  1202. WRITE_REG(PWR->SCR, PWR_SCR_CWUF2);
  1203. }
  1204. /**
  1205. * @brief Clear Wake-up Flag 1
  1206. * @rmtoll SCR CWUF1 LL_PWR_ClearFlag_WU1
  1207. * @retval None
  1208. */
  1209. __STATIC_INLINE void LL_PWR_ClearFlag_WU1(void)
  1210. {
  1211. WRITE_REG(PWR->SCR, PWR_SCR_CWUF1);
  1212. }
  1213. /**
  1214. * @brief Indicate whether VDDA voltage is below or above PVM4 threshold
  1215. * @rmtoll SR2 PVMO4 LL_PWR_IsActiveFlag_PVMO4
  1216. * @retval State of bit (1 or 0).
  1217. */
  1218. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO4(void)
  1219. {
  1220. return (READ_BIT(PWR->SR2, PWR_SR2_PVMO4) == (PWR_SR2_PVMO4));
  1221. }
  1222. /**
  1223. * @brief Indicate whether VDDA voltage is below or above PVM3 threshold
  1224. * @rmtoll SR2 PVMO3 LL_PWR_IsActiveFlag_PVMO3
  1225. * @retval State of bit (1 or 0).
  1226. */
  1227. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO3(void)
  1228. {
  1229. return (READ_BIT(PWR->SR2, PWR_SR2_PVMO3) == (PWR_SR2_PVMO3));
  1230. }
  1231. #if defined(PWR_SR2_PVMO2)
  1232. /**
  1233. * @brief Indicate whether VDDIO2 voltage is below or above PVM2 threshold
  1234. * @rmtoll SR2 PVMO2 LL_PWR_IsActiveFlag_PVMO2
  1235. * @retval State of bit (1 or 0).
  1236. */
  1237. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO2(void)
  1238. {
  1239. return (READ_BIT(PWR->SR2, PWR_SR2_PVMO2) == (PWR_SR2_PVMO2));
  1240. }
  1241. #endif /* PWR_SR2_PVMO2 */
  1242. #if defined(PWR_SR2_PVMO1)
  1243. /**
  1244. * @brief Indicate whether VDDUSB voltage is below or above PVM1 threshold
  1245. * @rmtoll SR2 PVMO1 LL_PWR_IsActiveFlag_PVMO1
  1246. * @retval State of bit (1 or 0).
  1247. */
  1248. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO1(void)
  1249. {
  1250. return (READ_BIT(PWR->SR2, PWR_SR2_PVMO1) == (PWR_SR2_PVMO1));
  1251. }
  1252. #endif /* PWR_SR2_PVMO1 */
  1253. /**
  1254. * @brief Indicate whether VDD voltage is below or above the selected PVD threshold
  1255. * @rmtoll SR2 PVDO LL_PWR_IsActiveFlag_PVDO
  1256. * @retval State of bit (1 or 0).
  1257. */
  1258. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(void)
  1259. {
  1260. return (READ_BIT(PWR->SR2, PWR_SR2_PVDO) == (PWR_SR2_PVDO));
  1261. }
  1262. /**
  1263. * @brief Indicate whether the regulator is ready in the selected voltage range or if its output voltage is still changing to the required voltage level
  1264. * @rmtoll SR2 VOSF LL_PWR_IsActiveFlag_VOS
  1265. * @retval State of bit (1 or 0).
  1266. */
  1267. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VOS(void)
  1268. {
  1269. return (READ_BIT(PWR->SR2, PWR_SR2_VOSF) == (PWR_SR2_VOSF));
  1270. }
  1271. /**
  1272. * @brief Indicate whether the regulator is ready in main mode or is in low-power mode
  1273. * @note: Take care, return value "0" means the regulator is ready. Return value "1" means the output voltage range is still changing.
  1274. * @rmtoll SR2 REGLPF LL_PWR_IsActiveFlag_REGLPF
  1275. * @retval State of bit (1 or 0).
  1276. */
  1277. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_REGLPF(void)
  1278. {
  1279. return (READ_BIT(PWR->SR2, PWR_SR2_REGLPF) == (PWR_SR2_REGLPF));
  1280. }
  1281. /**
  1282. * @brief Indicate whether or not the low-power regulator is ready
  1283. * @rmtoll SR2 REGLPS LL_PWR_IsActiveFlag_REGLPS
  1284. * @retval State of bit (1 or 0).
  1285. */
  1286. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_REGLPS(void)
  1287. {
  1288. return (READ_BIT(PWR->SR2, PWR_SR2_REGLPS) == (PWR_SR2_REGLPS));
  1289. }
  1290. /**
  1291. * @}
  1292. */
  1293. #if defined(USE_FULL_LL_DRIVER)
  1294. /** @defgroup PWR_LL_EF_Init De-initialization function
  1295. * @{
  1296. */
  1297. ErrorStatus LL_PWR_DeInit(void);
  1298. /**
  1299. * @}
  1300. */
  1301. #endif /* USE_FULL_LL_DRIVER */
  1302. /** Legacy definitions for compatibility purpose
  1303. @cond 0
  1304. */
  1305. /* Old functions name kept for legacy purpose, to be replaced by the */
  1306. /* current functions name. */
  1307. #define LL_PWR_IsActiveFlag_VOSF LL_PWR_IsActiveFlag_VOS
  1308. /**
  1309. @endcond
  1310. */
  1311. /**
  1312. * @}
  1313. */
  1314. /**
  1315. * @}
  1316. */
  1317. #endif /* defined(PWR) */
  1318. /**
  1319. * @}
  1320. */
  1321. #ifdef __cplusplus
  1322. }
  1323. #endif
  1324. #endif /* __STM32L4xx_LL_PWR_H */
  1325. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/