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.
 
 
 

2250 lines
76 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32h7xx_ll_pwr.h
  4. * @author MCD Application Team
  5. * @brief Header file of PWR LL module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by ST under BSD 3-Clause license,
  13. * the "License"; You may not use this file except in compliance with the
  14. * License. You may obtain a copy of the License at:
  15. * opensource.org/licenses/BSD-3-Clause
  16. *
  17. ******************************************************************************
  18. */
  19. /* Define to prevent recursive inclusion -------------------------------------*/
  20. #ifndef STM32H7xx_LL_PWR_H
  21. #define STM32H7xx_LL_PWR_H
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. /* Includes ------------------------------------------------------------------*/
  26. #include "stm32h7xx.h"
  27. /** @addtogroup STM32H7xx_LL_Driver
  28. * @{
  29. */
  30. #if defined (PWR)
  31. /** @defgroup PWR_LL PWR
  32. * @{
  33. */
  34. /* Private types -------------------------------------------------------------*/
  35. /* Private variables ---------------------------------------------------------*/
  36. /* Private constants ---------------------------------------------------------*/
  37. /** @defgroup PWR_LL_Private_Constants PWR Private Constants
  38. * @{
  39. */
  40. /** @defgroup PWR_LL_WAKEUP_PIN_OFFSET Wake-Up Pins register offsets Defines
  41. * @brief Flags defines which can be used with LL_PWR_WriteReg function
  42. * @{
  43. */
  44. /* Wake-Up Pins PWR register offsets */
  45. #define LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET 2UL
  46. #define LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK 0x1FU
  47. /**
  48. * @}
  49. */
  50. /**
  51. * @}
  52. */
  53. /* Private macros ------------------------------------------------------------*/
  54. /* Exported types ------------------------------------------------------------*/
  55. /* Exported constants --------------------------------------------------------*/
  56. /** @defgroup PWR_LL_Exported_Constants PWR Exported Constants
  57. * @{
  58. */
  59. /** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines
  60. * @brief Flags defines which can be used with LL_PWR_WriteReg function
  61. * @{
  62. */
  63. #define LL_PWR_FLAG_CPU_CSSF PWR_CPUCR_CSSF /*!< Clear flags for CPU */
  64. #if defined (DUAL_CORE)
  65. #define LL_PWR_FLAG_CPU2_CSSF PWR_CPU2CR_CSSF /*!< Clear flags for CPU2 */
  66. #endif /* DUAL_CORE */
  67. #define LL_PWR_FLAG_WKUPCR_WKUPC6 PWR_WKUPCR_WKUPC6 /*!< Clear PC1 WKUP flag */
  68. #define LL_PWR_FLAG_WKUPCR_WKUPC5 PWR_WKUPCR_WKUPC5 /*!< Clear PI11 WKUP flag */
  69. #define LL_PWR_FLAG_WKUPCR_WKUPC4 PWR_WKUPCR_WKUPC4 /*!< Clear PC13 WKUP flag */
  70. #define LL_PWR_FLAG_WKUPCR_WKUPC3 PWR_WKUPCR_WKUPC3 /*!< Clear PI8 WKUP flag */
  71. #define LL_PWR_FLAG_WKUPCR_WKUPC2 PWR_WKUPCR_WKUPC2 /*!< Clear PA2 WKUP flag */
  72. #define LL_PWR_FLAG_WKUPCR_WKUPC1 PWR_WKUPCR_WKUPC1 /*!< Clear PA0 WKUP flag */
  73. /**
  74. * @}
  75. */
  76. /** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines
  77. * @brief Flags defines which can be used with LL_PWR_ReadReg function
  78. * @{
  79. */
  80. #define LL_PWR_FLAG_AVDO PWR_CSR1_AVDO /*!< Analog voltage detector output on VDDA flag */
  81. #define LL_PWR_FLAG_PVDO PWR_CSR1_PVDO /*!< Programmable voltage detect output flag */
  82. #define LL_PWR_FLAG_ACTVOS PWR_CSR1_ACTVOS /*!< Current VOS applied for VCORE voltage scaling flag */
  83. #define LL_PWR_FLAG_ACTVOSRDY PWR_CSR1_ACTVOSRDY /*!< Ready bit for current actual used VOS for VCORE voltage scaling flag */
  84. #if defined (PWR_CSR1_MMCVDO)
  85. #define LL_PWR_FLAG_MMCVDO PWR_CSR1_MMCVDO /*!< Voltage detector output on VDDMMC flag */
  86. #endif /* PWR_CSR1_MMCVDO */
  87. #define LL_PWR_FLAG_TEMPH PWR_CR2_TEMPH /*!< Temperature high threshold flag */
  88. #define LL_PWR_FLAG_TEMPL PWR_CR2_TEMPL /*!< Temperature low threshold flag */
  89. #define LL_PWR_FLAG_VBATH PWR_CR2_VBATH /*!< VBAT high threshold flag */
  90. #define LL_PWR_FLAG_VBATL PWR_CR2_VBATL /*!< VBAT low threshold flag */
  91. #define LL_PWR_FLAG_BRRDY PWR_CR2_BRRDY /*!< Backup Regulator ready flag */
  92. #define LL_PWR_FLAG_USBRDY PWR_CR3_USB33RDY /*!< USB supply ready flag */
  93. #define LL_PWR_FLAG_SMPSEXTRDY PWR_CR3_SMPSEXTRDY /*!< SMPS External supply ready flag */
  94. #if defined (PWR_CPUCR_SBF_D2)
  95. #define LL_PWR_FLAG_CPU_SBF_D2 PWR_CPUCR_SBF_D2 /*!< D2 domain DSTANDBY Flag */
  96. #endif /* PWR_CPUCR_SBF_D2 */
  97. #if defined (PWR_CPUCR_SBF_D1)
  98. #define LL_PWR_FLAG_CPU_SBF_D1 PWR_CPUCR_SBF_D1 /*!< D1 domain DSTANDBY Flag */
  99. #endif /* PWR_CPUCR_SBF_D1 */
  100. #define LL_PWR_FLAG_CPU_SBF PWR_CPUCR_SBF /*!< System STANDBY Flag */
  101. #define LL_PWR_FLAG_CPU_STOPF PWR_CPUCR_STOPF /*!< STOP Flag */
  102. #if defined (DUAL_CORE)
  103. #define LL_PWR_FLAG_CPU_HOLD2F PWR_CPUCR_HOLD2F /*!< CPU2 in hold wakeup flag */
  104. #endif /* DUAL_CORE */
  105. #if defined (DUAL_CORE)
  106. #define LL_PWR_FLAG_CPU2_SBF_D2 PWR_CPU2CR_SBF_D2 /*!< D2 domain DSTANDBY Flag */
  107. #define LL_PWR_FLAG_CPU2_SBF_D1 PWR_CPU2CR_SBF_D1 /*!< D1 domain DSTANDBY Flag */
  108. #define LL_PWR_FLAG_CPU2_SBF PWR_CPU2CR_SBF /*!< System STANDBY Flag */
  109. #define LL_PWR_FLAG_CPU2_STOPF PWR_CPU2CR_STOPF /*!< STOP Flag */
  110. #define LL_PWR_FLAG_CPU2_HOLD1F PWR_CPU2CR_HOLD1F /*!< CPU1 in hold wakeup flag */
  111. #endif /* DUAL_CORE */
  112. #if defined (PWR_CPUCR_PDDS_D2)
  113. #define LL_PWR_D3CR_VOSRDY PWR_D3CR_VOSRDY /*!< Voltage scaling ready flag */
  114. #else
  115. #define LL_PWR_SRDCR_VOSRDY PWR_SRDCR_VOSRDY /*!< Voltage scaling ready flag */
  116. #endif /* PWR_CPUCR_PDDS_D2 */
  117. #define LL_PWR_WKUPFR_WKUPF6 PWR_WKUPFR_WKUPF6 /*!< Wakeup flag on PC1 */
  118. #define LL_PWR_WKUPFR_WKUPF5 PWR_WKUPFR_WKUPF5 /*!< Wakeup flag on PI11 */
  119. #define LL_PWR_WKUPFR_WKUPF4 PWR_WKUPFR_WKUPF4 /*!< Wakeup flag on PC13 */
  120. #define LL_PWR_WKUPFR_WKUPF3 PWR_WKUPFR_WKUPF3 /*!< Wakeup flag on PI8 */
  121. #define LL_PWR_WKUPFR_WKUPF2 PWR_WKUPFR_WKUPF2 /*!< Wakeup flag on PA2 */
  122. #define LL_PWR_WKUPFR_WKUPF1 PWR_WKUPFR_WKUPF1 /*!< Wakeup flag on PA0 */
  123. /**
  124. * @}
  125. */
  126. /** @defgroup PWR_LL_EC_MODE_PWR Power mode
  127. * @{
  128. */
  129. #if defined (PWR_CPUCR_PDDS_D2)
  130. #define LL_PWR_CPU_MODE_D1STOP 0x00000000U /*!< Enter D1 domain to Stop mode when the CPU enters deepsleep */
  131. #define LL_PWR_CPU_MODE_D1STANDBY PWR_CPUCR_PDDS_D1 /*!< Enter D1 domain to Standby mode when the CPU enters deepsleep */
  132. #else
  133. #define LL_PWR_CPU_MODE_CDSTOP 0x00000000U /*!< Enter CD domain to Stop mode when the CPU enters deepsleep */
  134. #define LL_PWR_CPU_MODE_CDSTOP2 PWR_CPUCR_RETDS_CD /*!< Enter CD domain to Stop2 mode when the CPU enters deepsleep */
  135. #endif /* PWR_CPUCR_PDDS_D2 */
  136. #if defined (PWR_CPUCR_PDDS_D2)
  137. #define LL_PWR_CPU_MODE_D2STOP 0x00000000U /*!< Enter D2 domain to Stop mode when the CPU enters deepsleep */
  138. #define LL_PWR_CPU_MODE_D2STANDBY PWR_CPUCR_PDDS_D2 /*!< Enter D2 domain to Standby mode when the CPU enters deepsleep */
  139. #endif /* PWR_CPUCR_PDDS_D2 */
  140. #if defined (PWR_CPUCR_PDDS_D2)
  141. #define LL_PWR_CPU_MODE_D3RUN PWR_CPUCR_RUN_D3 /*!< Keep system D3 domain in Run mode when the CPU enter deepsleep */
  142. #define LL_PWR_CPU_MODE_D3STOP 0x00000000U /*!< Enter D3 domain to Stop mode when the CPU enters deepsleep */
  143. #define LL_PWR_CPU_MODE_D3STANDBY PWR_CPUCR_PDDS_D3 /*!< Enter D3 domain to Standby mode when the CPU enters deepsleep */
  144. #else
  145. #define LL_PWR_CPU_MODE_SRDRUN PWR_CPUCR_RUN_SRD /*!< Keep system SRD domain in Run mode when the CPU enter deepsleep */
  146. #define LL_PWR_CPU_MODE_SRDSTOP 0x00000000U /*!< Enter SRD domain to Stop mode when the CPU enters deepsleep */
  147. #define LL_PWR_CPU_MODE_SRDSTANDBY PWR_CPUCR_PDDS_SRD /*!< Enter SRD domain to Standby mode when the CPU enters deepsleep */
  148. #endif /* PWR_CPUCR_PDDS_D2 */
  149. #if defined (DUAL_CORE)
  150. #define LL_PWR_CPU2_MODE_D1STOP 0x00000000U /*!< Enter D1 domain to Stop mode when the CPU2 enters deepsleep */
  151. #define LL_PWR_CPU2_MODE_D1STANDBY PWR_CPU2CR_PDDS_D1 /*!< Enter D1 domain to Standby mode when the CPU2 enters deepsleep */
  152. #define LL_PWR_CPU2_MODE_D2STOP 0x00000000U /*!< Enter D2 domain to Stop mode when the CPU2 enters deepsleep */
  153. #define LL_PWR_CPU2_MODE_D2STANDBY PWR_CPU2CR_PDDS_D2 /*!< Enter D2 domain to Standby mode when the CPU2 enters deepsleep */
  154. #define LL_PWR_CPU2_MODE_D3RUN PWR_CPU2CR_RUN_D3 /*!< Keep system D3 domain in RUN mode when the CPU2 enter deepsleep */
  155. #define LL_PWR_CPU2_MODE_D3STOP 0x00000000U /*!< Enter D3 domain to Stop mode when the CPU2 enters deepsleep */
  156. #define LL_PWR_CPU2_MODE_D3STANDBY PWR_CPU2CR_PDDS_D3 /*!< Enter D3 domain to Standby mode when the CPU2 enter deepsleep */
  157. #endif /* DUAL_CORE */
  158. /**
  159. * @}
  160. */
  161. /** @defgroup PWR_LL_EC_REGU_VOLTAGE Run mode Regulator Voltage Scaling
  162. * @{
  163. */
  164. #if defined (PWR_CPUCR_PDDS_D2)
  165. #define LL_PWR_REGU_VOLTAGE_SCALE3 PWR_D3CR_VOS_0 /*!< Select voltage scale 3 */
  166. #define LL_PWR_REGU_VOLTAGE_SCALE2 PWR_D3CR_VOS_1 /*!< Select voltage scale 2 */
  167. #define LL_PWR_REGU_VOLTAGE_SCALE1 (PWR_D3CR_VOS_0 | PWR_D3CR_VOS_1) /*!< Select voltage scale 1 */
  168. #define LL_PWR_REGU_VOLTAGE_SCALE0 (PWR_D3CR_VOS_0 | PWR_D3CR_VOS_1) /*!< Select voltage scale 0 */
  169. #else
  170. #define LL_PWR_REGU_VOLTAGE_SCALE3 0x00000000U /*!< Select voltage scale 3 */
  171. #define LL_PWR_REGU_VOLTAGE_SCALE2 PWR_D3CR_VOS_0 /*!< Select voltage scale 2 */
  172. #define LL_PWR_REGU_VOLTAGE_SCALE1 PWR_D3CR_VOS_1 /*!< Select voltage scale 1 */
  173. #define LL_PWR_REGU_VOLTAGE_SCALE0 (PWR_D3CR_VOS_0 | PWR_D3CR_VOS_1) /*!< Select voltage scale 0 */
  174. #endif /* PWR_CPUCR_PDDS_D2 */
  175. /**
  176. * @}
  177. */
  178. /** @defgroup PWR_LL_EC_STOP_MODE_REGU_VOLTAGE Stop mode Regulator Voltage Scaling
  179. * @{
  180. */
  181. #define LL_PWR_REGU_VOLTAGE_SVOS_SCALE5 PWR_CR1_SVOS_0 /*!< Select voltage scale 5 when system enters STOP mode */
  182. #define LL_PWR_REGU_VOLTAGE_SVOS_SCALE4 PWR_CR1_SVOS_1 /*!< Select voltage scale 4 when system enters STOP mode */
  183. #define LL_PWR_REGU_VOLTAGE_SVOS_SCALE3 (PWR_CR1_SVOS_0 | PWR_CR1_SVOS_1) /*!< Select voltage scale 3 when system enters STOP mode */
  184. /**
  185. * @}
  186. */
  187. /** @defgroup PWR_LL_EC_REGU_MODE_DS_MODE Regulator Mode In Deep Sleep Mode
  188. * @{
  189. */
  190. #define LL_PWR_REGU_DSMODE_MAIN 0x00000000U /*!< Voltage Regulator in main mode during deepsleep mode */
  191. #define LL_PWR_REGU_DSMODE_LOW_POWER PWR_CR1_LPDS /*!< Voltage Regulator in low-power mode during deepsleep mode */
  192. /**
  193. * @}
  194. */
  195. /** @defgroup PWR_LL_EC_PVDLEVEL Power Digital Voltage Level Detector
  196. * @{
  197. */
  198. #define LL_PWR_PVDLEVEL_0 PWR_CR1_PLS_LEV0 /*!< Voltage threshold detected by PVD 1.95 V */
  199. #define LL_PWR_PVDLEVEL_1 PWR_CR1_PLS_LEV1 /*!< Voltage threshold detected by PVD 2.1 V */
  200. #define LL_PWR_PVDLEVEL_2 PWR_CR1_PLS_LEV2 /*!< Voltage threshold detected by PVD 2.25 V */
  201. #define LL_PWR_PVDLEVEL_3 PWR_CR1_PLS_LEV3 /*!< Voltage threshold detected by PVD 2.4 V */
  202. #define LL_PWR_PVDLEVEL_4 PWR_CR1_PLS_LEV4 /*!< Voltage threshold detected by PVD 2.55 V */
  203. #define LL_PWR_PVDLEVEL_5 PWR_CR1_PLS_LEV5 /*!< Voltage threshold detected by PVD 2.7 V */
  204. #define LL_PWR_PVDLEVEL_6 PWR_CR1_PLS_LEV6 /*!< Voltage threshold detected by PVD 2.85 V */
  205. #define LL_PWR_PVDLEVEL_7 PWR_CR1_PLS_LEV7 /*!< External voltage level on PVD_IN pin, compared to internal VREFINT level. */
  206. /**
  207. * @}
  208. */
  209. /** @defgroup PWR_LL_EC_AVDLEVEL Power Analog Voltage Level Detector
  210. * @{
  211. */
  212. #define LL_PWR_AVDLEVEL_0 PWR_CR1_ALS_LEV0 /*!< Analog Voltage threshold detected by AVD 1.7 V */
  213. #define LL_PWR_AVDLEVEL_1 PWR_CR1_ALS_LEV1 /*!< Analog Voltage threshold detected by AVD 2.1 V */
  214. #define LL_PWR_AVDLEVEL_2 PWR_CR1_ALS_LEV2 /*!< Analog Voltage threshold detected by AVD 2.5 V */
  215. #define LL_PWR_AVDLEVEL_3 PWR_CR1_ALS_LEV3 /*!< Analog Voltage threshold detected by AVD 2.8 V */
  216. /**
  217. * @}
  218. */
  219. /** @defgroup PWR_LL_EC_BATT_CHARG_RESISTOR Battery Charge Resistor
  220. * @{
  221. */
  222. #define LL_PWR_BATT_CHARG_RESISTOR_5K 0x00000000U /*!< Charge the Battery through a 5 kO resistor */
  223. #define LL_PWR_BATT_CHARGRESISTOR_1_5K PWR_CR3_VBRS /*!< Charge the Battery through a 1.5 kO resistor */
  224. /**
  225. * @}
  226. */
  227. /** @defgroup PWR_LL_EC_WAKEUP_PIN Wakeup Pins
  228. * @{
  229. */
  230. #define LL_PWR_WAKEUP_PIN1 PWR_WKUPEPR_WKUPEN1 /*!< Wake-Up pin 1 : PA0 */
  231. #define LL_PWR_WAKEUP_PIN2 PWR_WKUPEPR_WKUPEN2 /*!< Wake-Up pin 2 : PA2 */
  232. #define LL_PWR_WAKEUP_PIN3 PWR_WKUPEPR_WKUPEN3 /*!< Wake-Up pin 3 : PI8 */
  233. #define LL_PWR_WAKEUP_PIN4 PWR_WKUPEPR_WKUPEN4 /*!< Wake-Up pin 4 : PC13 */
  234. #define LL_PWR_WAKEUP_PIN5 PWR_WKUPEPR_WKUPEN5 /*!< Wake-Up pin 5 : PI11 */
  235. #define LL_PWR_WAKEUP_PIN6 PWR_WKUPEPR_WKUPEN6 /*!< Wake-Up pin 6 : PC1 */
  236. /**
  237. * @}
  238. */
  239. /** @defgroup PWR_LL_EC_WAKEUP_PIN_PULL Wakeup Pins pull configuration
  240. * @{
  241. */
  242. #define LL_PWR_WAKEUP_PIN_NOPULL 0x00000000UL /*!< Configure Wake-Up pin in no pull */
  243. #define LL_PWR_WAKEUP_PIN_PULLUP 0x00000001UL /*!< Configure Wake-Up pin in pull Up */
  244. #define LL_PWR_WAKEUP_PIN_PULLDOWN 0x00000002UL /*!< Configure Wake-Up pin in pull Down */
  245. /**
  246. * @}
  247. */
  248. /** @defgroup PWR_LL_EC_SUPPLY_PWR Power supply source configuration
  249. * @{
  250. */
  251. #define LL_PWR_LDO_SUPPLY PWR_CR3_LDOEN /*!< Core domains are suppplied from the LDO */
  252. #if defined (SMPS)
  253. #define LL_PWR_DIRECT_SMPS_SUPPLY PWR_CR3_SMPSEN /*!< Core domains are suppplied from the SMPS */
  254. #define LL_PWR_SMPS_1V8_SUPPLIES_LDO (PWR_CR3_SMPSLEVEL_0 | PWR_CR3_SMPSEN | PWR_CR3_LDOEN) /*!< The SMPS 1.8V output supplies the LDO which supplies the Core domains */
  255. #define LL_PWR_SMPS_2V5_SUPPLIES_LDO (PWR_CR3_SMPSLEVEL_1 | PWR_CR3_SMPSEN | PWR_CR3_LDOEN) /*!< The SMPS 2.5V output supplies the LDO which supplies the Core domains */
  256. #define LL_PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO (PWR_CR3_SMPSLEVEL_0 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_LDOEN) /*!< The SMPS 1.8V output supplies an external circuits and the LDO. The Core domains are suppplied from the LDO */
  257. #define LL_PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO (PWR_CR3_SMPSLEVEL_1 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_LDOEN) /*!< The SMPS 2.5V output supplies an external circuits and the LDO. The Core domains are suppplied from the LDO */
  258. #define LL_PWR_SMPS_1V8_SUPPLIES_EXT (PWR_CR3_SMPSLEVEL_0 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_BYPASS) /*!< The SMPS 1.8V output supplies an external source which supplies the Core domains */
  259. #define LL_PWR_SMPS_2V5_SUPPLIES_EXT (PWR_CR3_SMPSLEVEL_1 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_BYPASS) /*!< The SMPS 2.5V output supplies an external source which supplies the Core domains */
  260. #endif /* SMPS */
  261. #define LL_PWR_EXTERNAL_SOURCE_SUPPLY PWR_CR3_BYPASS /*!< The SMPS and the LDO are Bypassed. The Core domains are supplied from an external source */
  262. /**
  263. * @}
  264. */
  265. /**
  266. * @}
  267. */
  268. /* Exported macro ------------------------------------------------------------*/
  269. /** @defgroup PWR_LL_Exported_Macros PWR Exported Macros
  270. * @{
  271. */
  272. /** @defgroup PWR_LL_EM_WRITE_READ Common write and read registers Macros
  273. * @{
  274. */
  275. /**
  276. * @brief Write a value in PWR register
  277. * @param __REG__ Register to be written
  278. * @param __VALUE__ Value to be written in the register
  279. * @retval None
  280. */
  281. #define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__))
  282. /**
  283. * @brief Read a value in PWR register
  284. * @param __REG__ Register to be read
  285. * @retval Register value
  286. */
  287. #define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__)
  288. /**
  289. * @}
  290. */
  291. /**
  292. * @}
  293. */
  294. /* Exported functions --------------------------------------------------------*/
  295. /** @defgroup PWR_LL_Exported_Functions PWR Exported Functions
  296. * @{
  297. */
  298. /** @defgroup PWR_LL_EF_Configuration Configuration
  299. * @{
  300. */
  301. /**
  302. * @brief Set the voltage Regulator mode during deep sleep mode
  303. * @rmtoll CR1 LPDS LL_PWR_SetRegulModeDS
  304. * @param RegulMode This parameter can be one of the following values:
  305. * @arg @ref LL_PWR_REGU_DSMODE_MAIN
  306. * @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER
  307. * @retval None
  308. */
  309. __STATIC_INLINE void LL_PWR_SetRegulModeDS(uint32_t RegulMode)
  310. {
  311. MODIFY_REG(PWR->CR1, PWR_CR1_LPDS, RegulMode);
  312. }
  313. /**
  314. * @brief Get the voltage Regulator mode during deep sleep mode
  315. * @rmtoll CR1 LPDS LL_PWR_GetRegulModeDS
  316. * @retval Returned value can be one of the following values:
  317. * @arg @ref LL_PWR_REGU_DSMODE_MAIN
  318. * @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER
  319. */
  320. __STATIC_INLINE uint32_t LL_PWR_GetRegulModeDS(void)
  321. {
  322. return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_LPDS));
  323. }
  324. /**
  325. * @brief Enable Power Voltage Detector
  326. * @rmtoll CR1 PVDEN LL_PWR_EnablePVD
  327. * @retval None
  328. */
  329. __STATIC_INLINE void LL_PWR_EnablePVD(void)
  330. {
  331. SET_BIT(PWR->CR1, PWR_CR1_PVDEN);
  332. }
  333. /**
  334. * @brief Disable Power Voltage Detector
  335. * @rmtoll CR1 PVDEN LL_PWR_DisablePVD
  336. * @retval None
  337. */
  338. __STATIC_INLINE void LL_PWR_DisablePVD(void)
  339. {
  340. CLEAR_BIT(PWR->CR1, PWR_CR1_PVDEN);
  341. }
  342. /**
  343. * @brief Check if Power Voltage Detector is enabled
  344. * @rmtoll CR1 PVDEN LL_PWR_IsEnabledPVD
  345. * @retval State of bit (1 or 0).
  346. */
  347. __STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(void)
  348. {
  349. return ((READ_BIT(PWR->CR1, PWR_CR1_PVDEN) == (PWR_CR1_PVDEN)) ? 1UL : 0UL);
  350. }
  351. /**
  352. * @brief Configure the voltage threshold detected by the Power Voltage Detector
  353. * @rmtoll CR1 PLS LL_PWR_SetPVDLevel
  354. * @param PVDLevel This parameter can be one of the following values:
  355. * @arg @ref LL_PWR_PVDLEVEL_0
  356. * @arg @ref LL_PWR_PVDLEVEL_1
  357. * @arg @ref LL_PWR_PVDLEVEL_2
  358. * @arg @ref LL_PWR_PVDLEVEL_3
  359. * @arg @ref LL_PWR_PVDLEVEL_4
  360. * @arg @ref LL_PWR_PVDLEVEL_5
  361. * @arg @ref LL_PWR_PVDLEVEL_6
  362. * @arg @ref LL_PWR_PVDLEVEL_7
  363. * @retval None
  364. */
  365. __STATIC_INLINE void LL_PWR_SetPVDLevel(uint32_t PVDLevel)
  366. {
  367. MODIFY_REG(PWR->CR1, PWR_CR1_PLS, PVDLevel);
  368. }
  369. /**
  370. * @brief Get the voltage threshold detection
  371. * @rmtoll CR1 PLS LL_PWR_GetPVDLevel
  372. * @retval Returned value can be one of the following values:
  373. * @arg @ref LL_PWR_PVDLEVEL_0
  374. * @arg @ref LL_PWR_PVDLEVEL_1
  375. * @arg @ref LL_PWR_PVDLEVEL_2
  376. * @arg @ref LL_PWR_PVDLEVEL_3
  377. * @arg @ref LL_PWR_PVDLEVEL_4
  378. * @arg @ref LL_PWR_PVDLEVEL_5
  379. * @arg @ref LL_PWR_PVDLEVEL_6
  380. * @arg @ref LL_PWR_PVDLEVEL_7
  381. */
  382. __STATIC_INLINE uint32_t LL_PWR_GetPVDLevel(void)
  383. {
  384. return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_PLS));
  385. }
  386. /**
  387. * @brief Enable access to the backup domain
  388. * @rmtoll CR1 DBP LL_PWR_EnableBkUpAccess
  389. * @retval None
  390. */
  391. __STATIC_INLINE void LL_PWR_EnableBkUpAccess(void)
  392. {
  393. SET_BIT(PWR->CR1, PWR_CR1_DBP);
  394. }
  395. /**
  396. * @brief Disable access to the backup domain
  397. * @rmtoll CR1 DBP LL_PWR_DisableBkUpAccess
  398. * @retval None
  399. */
  400. __STATIC_INLINE void LL_PWR_DisableBkUpAccess(void)
  401. {
  402. CLEAR_BIT(PWR->CR1, PWR_CR1_DBP);
  403. }
  404. /**
  405. * @brief Check if the backup domain is enabled
  406. * @rmtoll CR1 DBP LL_PWR_IsEnabledBkUpAccess
  407. * @retval State of bit (1 or 0).
  408. */
  409. __STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void)
  410. {
  411. return ((READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP)) ? 1UL : 0UL);
  412. }
  413. /**
  414. * @brief Enable the Flash Power Down in Stop Mode
  415. * @rmtoll CR1 FLPS LL_PWR_EnableFlashPowerDown
  416. * @retval None
  417. */
  418. __STATIC_INLINE void LL_PWR_EnableFlashPowerDown(void)
  419. {
  420. SET_BIT(PWR->CR1, PWR_CR1_FLPS);
  421. }
  422. /**
  423. * @brief Disable the Flash Power Down in Stop Mode
  424. * @rmtoll CR1 FLPS LL_PWR_DisableFlashPowerDown
  425. * @retval None
  426. */
  427. __STATIC_INLINE void LL_PWR_DisableFlashPowerDown(void)
  428. {
  429. CLEAR_BIT(PWR->CR1, PWR_CR1_FLPS);
  430. }
  431. /**
  432. * @brief Check if the Flash Power Down in Stop Mode is enabled
  433. * @rmtoll CR1 FLPS LL_PWR_IsEnabledFlashPowerDown
  434. * @retval State of bit (1 or 0).
  435. */
  436. __STATIC_INLINE uint32_t LL_PWR_IsEnabledFlashPowerDown(void)
  437. {
  438. return ((READ_BIT(PWR->CR1, PWR_CR1_FLPS) == (PWR_CR1_FLPS)) ? 1UL : 0UL);
  439. }
  440. #if defined (PWR_CR1_BOOSTE)
  441. /**
  442. * @brief Enable the Analog Voltage Booster (VDDA)
  443. * @rmtoll CR1 BOOSTE LL_PWR_EnableAnalogBooster
  444. * @retval None
  445. */
  446. __STATIC_INLINE void LL_PWR_EnableAnalogBooster(void)
  447. {
  448. SET_BIT(PWR->CR1, PWR_CR1_BOOSTE);
  449. }
  450. /**
  451. * @brief Disable the Analog Voltage Booster (VDDA)
  452. * @rmtoll CR1 BOOSTE LL_PWR_DisableAnalogBooster
  453. * @retval None
  454. */
  455. __STATIC_INLINE void LL_PWR_DisableAnalogBooster(void)
  456. {
  457. CLEAR_BIT(PWR->CR1, PWR_CR1_BOOSTE);
  458. }
  459. /**
  460. * @brief Check if the Analog Voltage Booster (VDDA) is enabled
  461. * @rmtoll CR1 BOOSTE LL_PWR_IsEnabledAnalogBooster
  462. * @retval State of bit (1 or 0).
  463. */
  464. __STATIC_INLINE uint32_t LL_PWR_IsEnabledAnalogBooster(void)
  465. {
  466. return ((READ_BIT(PWR->CR1, PWR_CR1_BOOSTE) == (PWR_CR1_BOOSTE)) ? 1UL : 0UL);
  467. }
  468. #endif /* PWR_CR1_BOOSTE */
  469. #if defined (PWR_CR1_AVD_READY)
  470. /**
  471. * @brief Enable the Analog Voltage Ready to isolate the BOOST IP untill VDDA will be ready
  472. * @rmtoll CR1 AVD_READY LL_PWR_EnableAnalogVoltageReady
  473. * @retval None
  474. */
  475. __STATIC_INLINE void LL_PWR_EnableAnalogVoltageReady(void)
  476. {
  477. SET_BIT(PWR->CR1, PWR_CR1_AVD_READY);
  478. }
  479. /**
  480. * @brief Disable the Analog Voltage Ready (VDDA)
  481. * @rmtoll CR1 AVD_READY LL_PWR_DisableAnalogVoltageReady
  482. * @retval None
  483. */
  484. __STATIC_INLINE void LL_PWR_DisableAnalogVoltageReady(void)
  485. {
  486. CLEAR_BIT(PWR->CR1, PWR_CR1_AVD_READY);
  487. }
  488. /**
  489. * @brief Check if the Analog Voltage Booster (VDDA) is enabled
  490. * @rmtoll CR1 AVD_READY LL_PWR_IsEnabledAnalogVoltageReady
  491. * @retval State of bit (1 or 0).
  492. */
  493. __STATIC_INLINE uint32_t LL_PWR_IsEnabledAnalogVoltageReady(void)
  494. {
  495. return ((READ_BIT(PWR->CR1, PWR_CR1_AVD_READY) == (PWR_CR1_AVD_READY)) ? 1UL : 0UL);
  496. }
  497. #endif /* PWR_CR1_AVD_READY */
  498. /**
  499. * @brief Set the internal Regulator output voltage in STOP mode
  500. * @rmtoll CR1 SVOS LL_PWR_SetStopModeRegulVoltageScaling
  501. * @param VoltageScaling This parameter can be one of the following values:
  502. * @arg @ref LL_PWR_REGU_VOLTAGE_SVOS_SCALE3
  503. * @arg @ref LL_PWR_REGU_VOLTAGE_SVOS_SCALE4
  504. * @arg @ref LL_PWR_REGU_VOLTAGE_SVOS_SCALE5
  505. * @retval None
  506. */
  507. __STATIC_INLINE void LL_PWR_SetStopModeRegulVoltageScaling(uint32_t VoltageScaling)
  508. {
  509. MODIFY_REG(PWR->CR1, PWR_CR1_SVOS, VoltageScaling);
  510. }
  511. /**
  512. * @brief Get the internal Regulator output voltage in STOP mode
  513. * @rmtoll CR1 SVOS LL_PWR_GetStopModeRegulVoltageScaling
  514. * @retval Returned value can be one of the following values:
  515. * @arg @ref LL_PWR_REGU_VOLTAGE_SVOS_SCALE3
  516. * @arg @ref LL_PWR_REGU_VOLTAGE_SVOS_SCALE4
  517. * @arg @ref LL_PWR_REGU_VOLTAGE_SVOS_SCALE5
  518. */
  519. __STATIC_INLINE uint32_t LL_PWR_GetStopModeRegulVoltageScaling(void)
  520. {
  521. return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_SVOS));
  522. }
  523. /**
  524. * @brief Enable Analog Power Voltage Detector
  525. * @rmtoll CR1 AVDEN LL_PWR_EnableAVD
  526. * @retval None
  527. */
  528. __STATIC_INLINE void LL_PWR_EnableAVD(void)
  529. {
  530. SET_BIT(PWR->CR1, PWR_CR1_AVDEN);
  531. }
  532. /**
  533. * @brief Disable Analog Power Voltage Detector
  534. * @rmtoll CR1 AVDEN LL_PWR_DisableAVD
  535. * @retval None
  536. */
  537. __STATIC_INLINE void LL_PWR_DisableAVD(void)
  538. {
  539. CLEAR_BIT(PWR->CR1, PWR_CR1_AVDEN);
  540. }
  541. /**
  542. * @brief Check if Analog Power Voltage Detector is enabled
  543. * @rmtoll CR1 AVDEN LL_PWR_IsEnabledAVD
  544. * @retval State of bit (1 or 0).
  545. */
  546. __STATIC_INLINE uint32_t LL_PWR_IsEnabledAVD(void)
  547. {
  548. return ((READ_BIT(PWR->CR1, PWR_CR1_AVDEN) == (PWR_CR1_AVDEN)) ? 1UL : 0UL);
  549. }
  550. /**
  551. * @brief Configure the voltage threshold to be detected by the Analog Power Voltage Detector
  552. * @rmtoll CR1 ALS LL_PWR_SetAVDLevel
  553. * @param AVDLevel This parameter can be one of the following values:
  554. * @arg @ref LL_PWR_AVDLEVEL_0
  555. * @arg @ref LL_PWR_AVDLEVEL_1
  556. * @arg @ref LL_PWR_AVDLEVEL_2
  557. * @arg @ref LL_PWR_AVDLEVEL_3
  558. * @retval None
  559. */
  560. __STATIC_INLINE void LL_PWR_SetAVDLevel(uint32_t AVDLevel)
  561. {
  562. MODIFY_REG(PWR->CR1, PWR_CR1_ALS, AVDLevel);
  563. }
  564. /**
  565. * @brief Get the Analog Voltage threshold to be detected by the Analog Power Voltage Detector
  566. * @rmtoll CR1 ALS LL_PWR_GetAVDLevel
  567. * @retval Returned value can be one of the following values:
  568. * @arg @ref LL_PWR_AVDLEVEL_0
  569. * @arg @ref LL_PWR_AVDLEVEL_1
  570. * @arg @ref LL_PWR_AVDLEVEL_2
  571. * @arg @ref LL_PWR_AVDLEVEL_3
  572. */
  573. __STATIC_INLINE uint32_t LL_PWR_GetAVDLevel(void)
  574. {
  575. return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_ALS));
  576. }
  577. #if defined (PWR_CR1_AXIRAM1SO)
  578. /**
  579. * @brief Enable the AXI RAM1 shut-off in DStop/DStop2 mode
  580. * @rmtoll CR1 AXIRAM1SO LL_PWR_EnableAXIRAM1ShutOff
  581. * @retval None
  582. */
  583. __STATIC_INLINE void LL_PWR_EnableAXIRAM1ShutOff(void)
  584. {
  585. SET_BIT(PWR->CR1, PWR_CR1_AXIRAM1SO);
  586. }
  587. /**
  588. * @brief Disable the AXI RAM1 shut-off in DStop/DStop2 mode
  589. * @rmtoll CR1 AXIRAM1SO LL_PWR_DisableAXIRAM1ShutOff
  590. * @retval None
  591. */
  592. __STATIC_INLINE void LL_PWR_DisableAXIRAM1ShutOff(void)
  593. {
  594. CLEAR_BIT(PWR->CR1, PWR_CR1_AXIRAM1SO);
  595. }
  596. /**
  597. * @brief Check if the AXI RAM1 shut-off in DStop/DStop2 mode is enabled
  598. * @rmtoll CR1 AXIRAM1SO LL_PWR_IsEnabledAXIRAM1ShutOff
  599. * @retval State of bit (1 or 0).
  600. */
  601. __STATIC_INLINE uint32_t LL_PWR_IsEnabledAXIRAM1ShutOff(void)
  602. {
  603. return ((READ_BIT(PWR->CR1, PWR_CR1_AXIRAM1SO) == (PWR_CR1_AXIRAM1SO)) ? 1UL : 0UL);
  604. }
  605. #endif /* PWR_CR1_AXIRAM1SO */
  606. #if defined (PWR_CR1_AXIRAM2SO)
  607. /**
  608. * @brief Enable the AXI RAM2 shut-off in DStop/DStop2 mode
  609. * @rmtoll CR1 AXIRAM2SO LL_PWR_EnableAXIRAM2ShutOff
  610. * @retval None
  611. */
  612. __STATIC_INLINE void LL_PWR_EnableAXIRAM2ShutOff(void)
  613. {
  614. SET_BIT(PWR->CR1, PWR_CR1_AXIRAM2SO);
  615. }
  616. /**
  617. * @brief Disable the AXI RAM2 shut-off in DStop/DStop2 mode
  618. * @rmtoll CR1 AXIRAM2SO LL_PWR_DisableAXIRAM2ShutOff
  619. * @retval None
  620. */
  621. __STATIC_INLINE void LL_PWR_DisableAXIRAM2ShutOff(void)
  622. {
  623. CLEAR_BIT(PWR->CR1, PWR_CR1_AXIRAM2SO);
  624. }
  625. /**
  626. * @brief Check if the AXI RAM2 shut-off in DStop/DStop2 mode is enabled
  627. * @rmtoll CR1 AXIRAM2SO LL_PWR_IsEnabledAXIRAM2ShutOff
  628. * @retval State of bit (1 or 0).
  629. */
  630. __STATIC_INLINE uint32_t LL_PWR_IsEnabledAXIRAM2ShutOff(void)
  631. {
  632. return ((READ_BIT(PWR->CR1, PWR_CR1_AXIRAM2SO) == (PWR_CR1_AXIRAM2SO)) ? 1UL : 0UL);
  633. }
  634. #endif /* PWR_CR1_AXIRAM2SO */
  635. #if defined (PWR_CR1_AXIRAM3SO)
  636. /**
  637. * @brief Enable the AXI RAM3 shut-off in DStop/DStop2 mode
  638. * @rmtoll CR1 AXIRAM3SO LL_PWR_EnableAXIRAM3ShutOff
  639. * @retval None
  640. */
  641. __STATIC_INLINE void LL_PWR_EnableAXIRAM3ShutOff(void)
  642. {
  643. SET_BIT(PWR->CR1, PWR_CR1_AXIRAM3SO);
  644. }
  645. /**
  646. * @brief Disable the AXI RAM3 shut-off in DStop/DStop2 mode
  647. * @rmtoll CR1 AXIRAM3SO LL_PWR_DisableAXIRAM3ShutOff
  648. * @retval None
  649. */
  650. __STATIC_INLINE void LL_PWR_DisableAXIRAM3ShutOff(void)
  651. {
  652. CLEAR_BIT(PWR->CR1, PWR_CR1_AXIRAM3SO);
  653. }
  654. /**
  655. * @brief Check if the AXI RAM3 shut-off in DStop/DStop2 mode is enabled
  656. * @rmtoll CR1 AXIRAM3SO LL_PWR_IsEnabledAXIRAM3ShutOff
  657. * @retval State of bit (1 or 0).
  658. */
  659. __STATIC_INLINE uint32_t LL_PWR_IsEnabledAXIRAM3ShutOff(void)
  660. {
  661. return ((READ_BIT(PWR->CR1, PWR_CR1_AXIRAM3SO) == (PWR_CR1_AXIRAM3SO)) ? 1UL : 0UL);
  662. }
  663. #endif /* PWR_CR1_AXIRAM3SO */
  664. #if defined (PWR_CR1_AHBRAM1SO)
  665. /**
  666. * @brief Enable the AHB RAM1 shut-off in DStop/DStop2 mode
  667. * @rmtoll CR1 AHBRAM1SO LL_PWR_EnableAHBRAM1ShutOff
  668. * @retval None
  669. */
  670. __STATIC_INLINE void LL_PWR_EnableAHBRAM1ShutOff(void)
  671. {
  672. SET_BIT(PWR->CR1, PWR_CR1_AHBRAM1SO);
  673. }
  674. /**
  675. * @brief Disable the AHB RAM1 shut-off in DStop/DStop2 mode
  676. * @rmtoll CR1 AHBRAM1SO LL_PWR_DisableAHBRAM1ShutOff
  677. * @retval None
  678. */
  679. __STATIC_INLINE void LL_PWR_DisableAHBRAM1ShutOff(void)
  680. {
  681. CLEAR_BIT(PWR->CR1, PWR_CR1_AHBRAM1SO);
  682. }
  683. /**
  684. * @brief Check if the AHB RAM1 shut-off in DStop/DStop2 mode is enabled
  685. * @rmtoll CR1 AHBRAM1SO LL_PWR_IsEnabledAHBRAM1ShutOff
  686. * @retval State of bit (1 or 0).
  687. */
  688. __STATIC_INLINE uint32_t LL_PWR_IsEnabledAHBRAM1ShutOff(void)
  689. {
  690. return ((READ_BIT(PWR->CR1, PWR_CR1_AHBRAM1SO) == (PWR_CR1_AHBRAM1SO)) ? 1UL : 0UL);
  691. }
  692. #endif /* PWR_CR1_AHBRAM1SO */
  693. #if defined (PWR_CR1_AHBRAM2SO)
  694. /**
  695. * @brief Enable the AHB RAM2 shut-off in DStop/DStop2 mode
  696. * @rmtoll CR1 AHBRAM2SO LL_PWR_EnableAHBRAM2ShutOff
  697. * @retval None
  698. */
  699. __STATIC_INLINE void LL_PWR_EnableAHBRAM2ShutOff(void)
  700. {
  701. SET_BIT(PWR->CR1, PWR_CR1_AHBRAM2SO);
  702. }
  703. /**
  704. * @brief Disable the AHB RAM2 shut-off in DStop/DStop2 mode
  705. * @rmtoll CR1 AHBRAM2SO LL_PWR_DisableAHBRAM2ShutOff
  706. * @retval None
  707. */
  708. __STATIC_INLINE void LL_PWR_DisableAHBRAM2ShutOff(void)
  709. {
  710. CLEAR_BIT(PWR->CR1, PWR_CR1_AHBRAM2SO);
  711. }
  712. /**
  713. * @brief Check if the AHB RAM2 shut-off in DStop/DStop2 mode is enabled
  714. * @rmtoll CR1 AHBRAM2SO LL_PWR_IsEnabledAHBRAM2ShutOff
  715. * @retval State of bit (1 or 0).
  716. */
  717. __STATIC_INLINE uint32_t LL_PWR_IsEnabledAHBRAM2ShutOff(void)
  718. {
  719. return ((READ_BIT(PWR->CR1, PWR_CR1_AHBRAM2SO) == (PWR_CR1_AHBRAM2SO)) ? 1UL : 0UL);
  720. }
  721. #endif /* PWR_CR1_AHBRAM2SO */
  722. #if defined (PWR_CR1_ITCMSO)
  723. /**
  724. * @brief Enable the ITCM shut-off in DStop/DStop2 mode
  725. * @rmtoll CR1 ITCMSO LL_PWR_EnableITCMSOShutOff
  726. * @retval None
  727. */
  728. __STATIC_INLINE void LL_PWR_EnableITCMSOShutOff(void)
  729. {
  730. SET_BIT(PWR->CR1, PWR_CR1_ITCMSO);
  731. }
  732. /**
  733. * @brief Disable the ITCM shut-off in DStop/DStop2 mode
  734. * @rmtoll CR1 ITCMSO LL_PWR_DisableITCMSOShutOff
  735. * @retval None
  736. */
  737. __STATIC_INLINE void LL_PWR_DisableITCMSOShutOff(void)
  738. {
  739. CLEAR_BIT(PWR->CR1, PWR_CR1_ITCMSO);
  740. }
  741. /**
  742. * @brief Check if the ITCM shut-off in DStop/DStop2 mode is enabled
  743. * @rmtoll CR1 ITCMSO LL_PWR_IsEnabledITCMShutOff
  744. * @retval State of bit (1 or 0).
  745. */
  746. __STATIC_INLINE uint32_t LL_PWR_IsEnabledITCMShutOff(void)
  747. {
  748. return ((READ_BIT(PWR->CR1, PWR_CR1_ITCMSO) == (PWR_CR1_ITCMSO)) ? 1UL : 0UL);
  749. }
  750. #endif /* PWR_CR1_ITCMSO */
  751. #if defined (PWR_CR1_HSITFSO)
  752. /**
  753. * @brief Enable the USB and FDCAN shut-off in DStop/DStop2 mode
  754. * @rmtoll CR1 HSITFSO LL_PWR_EnableHSITFShutOff
  755. * @retval None
  756. */
  757. __STATIC_INLINE void LL_PWR_EnableHSITFShutOff(void)
  758. {
  759. SET_BIT(PWR->CR1, PWR_CR1_HSITFSO);
  760. }
  761. /**
  762. * @brief Disable the USB and FDCAN shut-off in DStop/DStop2 mode
  763. * @rmtoll CR1 HSITFSO LL_PWR_DisableHSITFShutOff
  764. * @retval None
  765. */
  766. __STATIC_INLINE void LL_PWR_DisableHSITFShutOff(void)
  767. {
  768. CLEAR_BIT(PWR->CR1, PWR_CR1_HSITFSO);
  769. }
  770. /**
  771. * @brief Check if the USB and FDCAN shut-off in DStop/DStop2 mode is enabled
  772. * @rmtoll CR1 HSITFSO LL_PWR_IsEnabledHSITFShutOff
  773. * @retval State of bit (1 or 0).
  774. */
  775. __STATIC_INLINE uint32_t LL_PWR_IsEnabledHSITFShutOff(void)
  776. {
  777. return ((READ_BIT(PWR->CR1, PWR_CR1_HSITFSO) == (PWR_CR1_HSITFSO)) ? 1UL : 0UL);
  778. }
  779. #endif /* PWR_CR1_HSITFSO */
  780. #if defined (PWR_CR1_SRDRAMSO)
  781. /**
  782. * @brief Enable the SRD AHB RAM shut-off in DStop/DStop2 mode
  783. * @rmtoll CR1 SRDRAMSO LL_PWR_EnableSRDRAMShutOff
  784. * @retval None
  785. */
  786. __STATIC_INLINE void LL_PWR_EnableSRDRAMShutOff(void)
  787. {
  788. SET_BIT(PWR->CR1, PWR_CR1_SRDRAMSO);
  789. }
  790. /**
  791. * @brief Disable the SRD AHB RAM shut-off in DStop/DStop2 mode
  792. * @rmtoll CR1 SRDRAMSO LL_PWR_DisableSRDRAMShutOff
  793. * @retval None
  794. */
  795. __STATIC_INLINE void LL_PWR_DisableSRDRAMShutOff(void)
  796. {
  797. CLEAR_BIT(PWR->CR1, PWR_CR1_SRDRAMSO);
  798. }
  799. /**
  800. * @brief Check if the SRD AHB RAM shut-off in DStop/DStop2 mode is enabled
  801. * @rmtoll CR1 SRDRAMSO LL_PWR_IsEnabledSRDRAMShutOff
  802. * @retval State of bit (1 or 0).
  803. */
  804. __STATIC_INLINE uint32_t LL_PWR_IsEnabledSRDRAMShutOff(void)
  805. {
  806. return ((READ_BIT(PWR->CR1, PWR_CR1_SRDRAMSO) == (PWR_CR1_SRDRAMSO)) ? 1UL : 0UL);
  807. }
  808. #endif /* PWR_CR1_SRDRAMSO */
  809. /**
  810. * @brief Enable Backup Regulator
  811. * @rmtoll CR2 BREN LL_PWR_EnableBkUpRegulator
  812. * @note When set, the Backup Regulator (used to maintain backup SRAM content in Standby and
  813. * VBAT modes) is enabled. If BRE is reset, the backup Regulator is switched off. The backup
  814. * SRAM can still be used but its content will be lost in the Standby and VBAT modes. Once set,
  815. * the application must wait that the Backup Regulator Ready flag (BRR) is set to indicate that
  816. * the data written into the RAM will be maintained in the Standby and VBAT modes.
  817. * @retval None
  818. */
  819. __STATIC_INLINE void LL_PWR_EnableBkUpRegulator(void)
  820. {
  821. SET_BIT(PWR->CR2, PWR_CR2_BREN);
  822. }
  823. /**
  824. * @brief Disable Backup Regulator
  825. * @rmtoll CR2 BREN LL_PWR_DisableBkUpRegulator
  826. * @retval None
  827. */
  828. __STATIC_INLINE void LL_PWR_DisableBkUpRegulator(void)
  829. {
  830. CLEAR_BIT(PWR->CR2, PWR_CR2_BREN);
  831. }
  832. /**
  833. * @brief Check if the backup Regulator is enabled
  834. * @rmtoll CR2 BREN LL_PWR_IsEnabledBkUpRegulator
  835. * @retval State of bit (1 or 0).
  836. */
  837. __STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpRegulator(void)
  838. {
  839. return ((READ_BIT(PWR->CR2, PWR_CR2_BREN) == (PWR_CR2_BREN)) ? 1UL : 0UL);
  840. }
  841. /**
  842. * @brief Enable VBAT and Temperature monitoring
  843. * @rmtoll CR2 MONEN LL_PWR_EnableMonitoring
  844. * @retval None
  845. */
  846. __STATIC_INLINE void LL_PWR_EnableMonitoring(void)
  847. {
  848. SET_BIT(PWR->CR2, PWR_CR2_MONEN);
  849. }
  850. /**
  851. * @brief Disable VBAT and Temperature monitoring
  852. * @rmtoll CR2 MONEN LL_PWR_DisableMonitoring
  853. * @retval None
  854. */
  855. __STATIC_INLINE void LL_PWR_DisableMonitoring(void)
  856. {
  857. CLEAR_BIT(PWR->CR2, PWR_CR2_MONEN);
  858. }
  859. /**
  860. * @brief Check if the VBAT and Temperature monitoring is enabled
  861. * @rmtoll CR2 MONEN LL_PWR_IsEnabledMonitoring
  862. * @retval State of bit (1 or 0).
  863. */
  864. __STATIC_INLINE uint32_t LL_PWR_IsEnabledMonitoring(void)
  865. {
  866. return ((READ_BIT(PWR->CR2, PWR_CR2_MONEN) == (PWR_CR2_MONEN)) ? 1UL : 0UL);
  867. }
  868. #if defined (SMPS)
  869. /**
  870. * @brief Configure the PWR supply
  871. * @rmtoll CR3 BYPASS LL_PWR_ConfigSupply
  872. * @rmtoll CR3 LDOEN LL_PWR_ConfigSupply
  873. * @rmtoll CR3 SMPSEN LL_PWR_ConfigSupply
  874. * @rmtoll CR3 SMPSEXTHP LL_PWR_ConfigSupply
  875. * @rmtoll CR3 SMPSLEVEL LL_PWR_ConfigSupply
  876. * @param SupplySource This parameter can be one of the following values:
  877. * @arg @ref LL_PWR_LDO_SUPPLY
  878. * @arg @ref LL_PWR_DIRECT_SMPS_SUPPLY
  879. * @arg @ref LL_PWR_SMPS_1V8_SUPPLIES_LDO
  880. * @arg @ref LL_PWR_SMPS_2V5_SUPPLIES_LDO
  881. * @arg @ref LL_PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO
  882. * @arg @ref LL_PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO
  883. * @arg @ref LL_PWR_SMPS_1V8_SUPPLIES_EXT
  884. * @arg @ref LL_PWR_SMPS_2V5_SUPPLIES_EXT
  885. * @arg @ref LL_PWR_EXTERNAL_SOURCE_SUPPLY
  886. * @retval None
  887. */
  888. __STATIC_INLINE void LL_PWR_ConfigSupply(uint32_t SupplySource)
  889. {
  890. /* Set the power supply configuration */
  891. MODIFY_REG(PWR->CR3, (PWR_CR3_SMPSLEVEL | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS), SupplySource);
  892. }
  893. #else
  894. /**
  895. * @brief Configure the PWR supply
  896. * @rmtoll CR3 BYPASS LL_PWR_ConfigSupply
  897. * @rmtoll CR3 LDOEN LL_PWR_ConfigSupply
  898. * @rmtoll CR3 SCUEN LL_PWR_ConfigSupply
  899. * @param SupplySource This parameter can be one of the following values:
  900. * @arg @ref LL_PWR_LDO_SUPPLY
  901. * @arg @ref LL_PWR_EXTERNAL_SOURCE_SUPPLY
  902. * @retval None
  903. */
  904. __STATIC_INLINE void LL_PWR_ConfigSupply(uint32_t SupplySource)
  905. {
  906. /* Set the power supply configuration */
  907. MODIFY_REG(PWR->CR3, (PWR_CR3_SCUEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS), SupplySource);
  908. }
  909. #endif /* defined (SMPS) */
  910. #if defined (SMPS)
  911. /**
  912. * @brief Get the PWR supply
  913. * @rmtoll CR3 BYPASS LL_PWR_GetSupply
  914. * @rmtoll CR3 LDOEN LL_PWR_GetSupply
  915. * @rmtoll CR3 SMPSEN LL_PWR_GetSupply
  916. * @rmtoll CR3 SMPSEXTHP LL_PWR_GetSupply
  917. * @rmtoll CR3 SMPSLEVEL LL_PWR_GetSupply
  918. * @retval Returned value can be one of the following values:
  919. * @arg @ref LL_PWR_LDO_SUPPLY
  920. * @arg @ref LL_PWR_DIRECT_SMPS_SUPPLY
  921. * @arg @ref LL_PWR_SMPS_1V8_SUPPLIES_LDO
  922. * @arg @ref LL_PWR_SMPS_2V5_SUPPLIES_LDO
  923. * @arg @ref LL_PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO
  924. * @arg @ref LL_PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO
  925. * @arg @ref LL_PWR_SMPS_1V8_SUPPLIES_EXT
  926. * @arg @ref LL_PWR_SMPS_2V5_SUPPLIES_EXT
  927. * @arg @ref LL_PWR_EXTERNAL_SOURCE_SUPPLY
  928. */
  929. __STATIC_INLINE uint32_t LL_PWR_GetSupply(void)
  930. {
  931. /* Get the power supply configuration */
  932. return(uint32_t)(READ_BIT(PWR->CR3, (PWR_CR3_SMPSLEVEL | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS)));
  933. }
  934. #else
  935. /**
  936. * @brief Get the PWR supply
  937. * @rmtoll CR3 BYPASS LL_PWR_GetSupply
  938. * @rmtoll CR3 LDOEN LL_PWR_GetSupply
  939. * @rmtoll CR3 SCUEN LL_PWR_GetSupply
  940. * @retval Returned value can be one of the following values:
  941. * @arg @ref LL_PWR_LDO_SUPPLY
  942. * @arg @ref LL_PWR_EXTERNAL_SOURCE_SUPPLY
  943. */
  944. __STATIC_INLINE uint32_t LL_PWR_GetSupply(void)
  945. {
  946. /* Get the power supply configuration */
  947. return(uint32_t)(READ_BIT(PWR->CR3, (PWR_CR3_SCUEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS)));
  948. }
  949. #endif /* defined (SMPS) */
  950. /**
  951. * @brief Enable battery charging
  952. * @rmtoll CR3 VBE LL_PWR_EnableBatteryCharging
  953. * @retval None
  954. */
  955. __STATIC_INLINE void LL_PWR_EnableBatteryCharging(void)
  956. {
  957. SET_BIT(PWR->CR3, PWR_CR3_VBE);
  958. }
  959. /**
  960. * @brief Disable battery charging
  961. * @rmtoll CR3 VBE LL_PWR_DisableBatteryCharging
  962. * @retval None
  963. */
  964. __STATIC_INLINE void LL_PWR_DisableBatteryCharging(void)
  965. {
  966. CLEAR_BIT(PWR->CR3, PWR_CR3_VBE);
  967. }
  968. /**
  969. * @brief Check if battery charging is enabled
  970. * @rmtoll CR3 VBE LL_PWR_IsEnabledBatteryCharging
  971. * @retval State of bit (1 or 0).
  972. */
  973. __STATIC_INLINE uint32_t LL_PWR_IsEnabledBatteryCharging(void)
  974. {
  975. return ((READ_BIT(PWR->CR3, PWR_CR3_VBE) == (PWR_CR3_VBE)) ? 1UL : 0UL);
  976. }
  977. /**
  978. * @brief Set the Battery charge resistor impedance
  979. * @rmtoll CR3 VBRS LL_PWR_SetBattChargResistor
  980. * @param Resistor This parameter can be one of the following values:
  981. * @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K
  982. * @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K
  983. * @retval None
  984. */
  985. __STATIC_INLINE void LL_PWR_SetBattChargResistor(uint32_t Resistor)
  986. {
  987. MODIFY_REG(PWR->CR3, PWR_CR3_VBRS, Resistor);
  988. }
  989. /**
  990. * @brief Get the Battery charge resistor impedance
  991. * @rmtoll CR3 VBRS LL_PWR_GetBattChargResistor
  992. * @retval Returned value can be one of the following values:
  993. * @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K
  994. * @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K
  995. */
  996. __STATIC_INLINE uint32_t LL_PWR_GetBattChargResistor(void)
  997. {
  998. return (uint32_t)(READ_BIT(PWR->CR3, PWR_CR3_VBRS));
  999. }
  1000. /**
  1001. * @brief Enable the USB regulator
  1002. * @rmtoll CR3 USBREGEN LL_PWR_EnableUSBReg
  1003. * @retval None
  1004. */
  1005. __STATIC_INLINE void LL_PWR_EnableUSBReg(void)
  1006. {
  1007. SET_BIT(PWR->CR3, PWR_CR3_USBREGEN);
  1008. }
  1009. /**
  1010. * @brief Disable the USB regulator
  1011. * @rmtoll CR3 USBREGEN LL_PWR_DisableUSBReg
  1012. * @retval None
  1013. */
  1014. __STATIC_INLINE void LL_PWR_DisableUSBReg(void)
  1015. {
  1016. CLEAR_BIT(PWR->CR3, PWR_CR3_USBREGEN);
  1017. }
  1018. /**
  1019. * @brief Check if the USB regulator is enabled
  1020. * @rmtoll CR3 USBREGEN LL_PWR_IsEnabledUSBReg
  1021. * @retval State of bit (1 or 0).
  1022. */
  1023. __STATIC_INLINE uint32_t LL_PWR_IsEnabledUSBReg(void)
  1024. {
  1025. return ((READ_BIT(PWR->CR3, PWR_CR3_USBREGEN) == (PWR_CR3_USBREGEN)) ? 1UL : 0UL);
  1026. }
  1027. /**
  1028. * @brief Enable the USB voltage detector
  1029. * @rmtoll CR3 USB33DEN LL_PWR_EnableUSBVoltageDetector
  1030. * @retval None
  1031. */
  1032. __STATIC_INLINE void LL_PWR_EnableUSBVoltageDetector(void)
  1033. {
  1034. SET_BIT(PWR->CR3, PWR_CR3_USB33DEN);
  1035. }
  1036. /**
  1037. * @brief Disable the USB voltage detector
  1038. * @rmtoll CR3 USB33DEN LL_PWR_DisableUSBVoltageDetector
  1039. * @retval None
  1040. */
  1041. __STATIC_INLINE void LL_PWR_DisableUSBVoltageDetector(void)
  1042. {
  1043. CLEAR_BIT(PWR->CR3, PWR_CR3_USB33DEN);
  1044. }
  1045. /**
  1046. * @brief Check if the USB voltage detector is enabled
  1047. * @rmtoll CR3 USB33DEN LL_PWR_IsEnabledUSBVoltageDetector
  1048. * @retval State of bit (1 or 0).
  1049. */
  1050. __STATIC_INLINE uint32_t LL_PWR_IsEnabledUSBVoltageDetector(void)
  1051. {
  1052. return ((READ_BIT(PWR->CR3, PWR_CR3_USB33DEN) == (PWR_CR3_USB33DEN)) ? 1UL : 0UL);
  1053. }
  1054. #if defined (PWR_CPUCR_PDDS_D2)
  1055. /**
  1056. * @brief Set the D1 domain Power Down mode when the CPU enters deepsleep
  1057. * @rmtoll CPUCR PDDS_D1 LL_PWR_CPU_SetD1PowerMode
  1058. * @param PDMode This parameter can be one of the following values:
  1059. * @arg @ref LL_PWR_CPU_MODE_D1STOP
  1060. * @arg @ref LL_PWR_CPU_MODE_D1STANDBY
  1061. * @retval None
  1062. */
  1063. __STATIC_INLINE void LL_PWR_CPU_SetD1PowerMode(uint32_t PDMode)
  1064. {
  1065. MODIFY_REG(PWR->CPUCR, PWR_CPUCR_PDDS_D1, PDMode);
  1066. }
  1067. #else
  1068. /**
  1069. * @brief Set the CPU domain Power Down mode when the CPU enters deepsleep
  1070. * @rmtoll CPUCR RETDS_CD LL_PWR_CPU_SetCDPowerMode
  1071. * @param PDMode This parameter can be one of the following values:
  1072. * @arg @ref LL_PWR_CPU_MODE_CDSTOP
  1073. * @arg @ref LL_PWR_CPU_MODE_CDSTOP2
  1074. * @retval None
  1075. */
  1076. __STATIC_INLINE void LL_PWR_CPU_SetCDPowerMode(uint32_t PDMode)
  1077. {
  1078. MODIFY_REG(PWR->CPUCR, PWR_CPUCR_RETDS_CD, PDMode);
  1079. }
  1080. #endif /* PWR_CPUCR_PDDS_D2 */
  1081. #if defined (DUAL_CORE)
  1082. /**
  1083. * @brief Set the D1 domain Power Down mode when the CPU2 enters deepsleep
  1084. * @rmtoll CPU2CR PDDS_D1 LL_PWR_CPU2_SetD1PowerMode
  1085. * @param PDMode This parameter can be one of the following values:
  1086. * @arg @ref LL_PWR_CPU2_MODE_D1STOP
  1087. * @arg @ref LL_PWR_CPU2_MODE_D1STANDBY
  1088. * @retval None
  1089. */
  1090. __STATIC_INLINE void LL_PWR_CPU2_SetD1PowerMode(uint32_t PDMode)
  1091. {
  1092. MODIFY_REG(PWR->CPU2CR, PWR_CPU2CR_PDDS_D1, PDMode);
  1093. }
  1094. #endif /* DUAL_CORE */
  1095. #if defined (PWR_CPUCR_PDDS_D2)
  1096. /**
  1097. * @brief Get the D1 Domain Power Down mode when the CPU enters deepsleep
  1098. * @rmtoll CPUCR PDDS_D1 LL_PWR_CPU_GetD1PowerMode
  1099. * @retval Returned value can be one of the following values:
  1100. * @arg @ref LL_PWR_CPU_MODE_D1STOP
  1101. * @arg @ref LL_PWR_CPU_MODE_D1STANDBY
  1102. */
  1103. __STATIC_INLINE uint32_t LL_PWR_CPU_GetD1PowerMode(void)
  1104. {
  1105. return (uint32_t)(READ_BIT(PWR->CPUCR, PWR_CPUCR_PDDS_D1));
  1106. }
  1107. #else
  1108. /**
  1109. * @brief Get the CD Domain Power Down mode when the CPU enters deepsleep
  1110. * @rmtoll CPUCR RETDS_CD LL_PWR_CPU_GetCDPowerMode
  1111. * @retval Returned value can be one of the following values:
  1112. * @arg @ref LL_PWR_CPU_MODE_CDSTOP
  1113. * @arg @ref LL_PWR_CPU_MODE_CDSTOP2
  1114. */
  1115. __STATIC_INLINE uint32_t LL_PWR_CPU_GetCDPowerMode(void)
  1116. {
  1117. return (uint32_t)(READ_BIT(PWR->CPUCR, PWR_CPUCR_RETDS_CD));
  1118. }
  1119. #endif /* PWR_CPUCR_PDDS_D2 */
  1120. #if defined (DUAL_CORE)
  1121. /**
  1122. * @brief Get the D1 Domain Power Down mode when the CPU2 enters deepsleep
  1123. * @rmtoll CPU2CR PDDS_D1 LL_PWR_CPU2_GetD1PowerMode
  1124. * @retval Returned value can be one of the following values:
  1125. * @arg @ref LL_PWR_CPU2_MODE_D1STOP
  1126. * @arg @ref LL_PWR_CPU2_MODE_D1STANDBY
  1127. */
  1128. __STATIC_INLINE uint32_t LL_PWR_CPU2_GetD1PowerMode(void)
  1129. {
  1130. return (uint32_t)(READ_BIT(PWR->CPU2CR, PWR_CPU2CR_PDDS_D1));
  1131. }
  1132. #endif /* DUAL_CORE */
  1133. #if defined (PWR_CPUCR_PDDS_D2)
  1134. /**
  1135. * @brief Set the D2 domain Power Down mode when the CPU enters deepsleep
  1136. * @rmtoll CPUCR PDDS_D2 LL_PWR_CPU_SetD2PowerMode
  1137. * @param PDMode This parameter can be one of the following values:
  1138. * @arg @ref LL_PWR_CPU_MODE_D2STOP
  1139. * @arg @ref LL_PWR_CPU_MODE_D2STANDBY
  1140. * @retval None
  1141. */
  1142. __STATIC_INLINE void LL_PWR_CPU_SetD2PowerMode(uint32_t PDMode)
  1143. {
  1144. MODIFY_REG(PWR->CPUCR, PWR_CPUCR_PDDS_D2, PDMode);
  1145. }
  1146. #endif /* PWR_CPUCR_PDDS_D2 */
  1147. #if defined (DUAL_CORE)
  1148. /**
  1149. * @brief Set the D2 domain Power Down mode when the CPU2 enters deepsleep
  1150. * @rmtoll CPU2CR PDDS_D2 LL_PWR_CPU2_SetD2PowerMode
  1151. * @param PDMode This parameter can be one of the following values:
  1152. * @arg @ref LL_PWR_CPU2_MODE_D2STOP
  1153. * @arg @ref LL_PWR_CPU2_MODE_D2STANDBY
  1154. * @retval None
  1155. */
  1156. __STATIC_INLINE void LL_PWR_CPU2_SetD2PowerMode(uint32_t PDMode)
  1157. {
  1158. MODIFY_REG(PWR->CPU2CR, PWR_CPU2CR_PDDS_D2, PDMode);
  1159. }
  1160. #endif /* DUAL_CORE */
  1161. #if defined (PWR_CPUCR_PDDS_D2)
  1162. /**
  1163. * @brief Get the D2 Domain Power Down mode when the CPU enters deepsleep
  1164. * @rmtoll CPUCR PDDS_D2 LL_PWR_CPU_GetD2PowerMode
  1165. * @retval Returned value can be one of the following values:
  1166. * @arg @ref LL_PWR_CPU_MODE_D2STOP
  1167. * @arg @ref LL_PWR_CPU_MODE_D2STANDBY
  1168. */
  1169. __STATIC_INLINE uint32_t LL_PWR_CPU_GetD2PowerMode(void)
  1170. {
  1171. return (uint32_t)(READ_BIT(PWR->CPUCR, PWR_CPUCR_PDDS_D2));
  1172. }
  1173. #endif /* PWR_CPUCR_PDDS_D2 */
  1174. #if defined (DUAL_CORE)
  1175. /**
  1176. * @brief Get the D2 Domain Power Down mode when the CPU2 enters deepsleep
  1177. * @rmtoll CPU2CR PDDS_D2 LL_PWR_CPU2_GetD2PowerMode
  1178. * @retval Returned value can be one of the following values:
  1179. * @arg @ref LL_PWR_CPU2_MODE_D2STOP
  1180. * @arg @ref LL_PWR_CPU2_MODE_D2STANDBY
  1181. */
  1182. __STATIC_INLINE uint32_t LL_PWR_CPU2_GetD2PowerMode(void)
  1183. {
  1184. return (uint32_t)(READ_BIT(PWR->CPU2CR, PWR_CPU2CR_PDDS_D2));
  1185. }
  1186. #endif /* DUAL_CORE */
  1187. #if defined (PWR_CPUCR_PDDS_D2)
  1188. /**
  1189. * @brief Set the D3 domain Power Down mode when the CPU enters deepsleep
  1190. * @rmtoll CPUCR PDDS_D3 LL_PWR_CPU_SetD3PowerMode
  1191. * @param PDMode This parameter can be one of the following values:
  1192. * @arg @ref LL_PWR_CPU_MODE_D3STOP
  1193. * @arg @ref LL_PWR_CPU_MODE_D3STANDBY
  1194. * @retval None
  1195. */
  1196. __STATIC_INLINE void LL_PWR_CPU_SetD3PowerMode(uint32_t PDMode)
  1197. {
  1198. MODIFY_REG(PWR->CPUCR, PWR_CPUCR_PDDS_D3 , PDMode);
  1199. }
  1200. #else
  1201. /**
  1202. * @brief Set the SRD domain Power Down mode when the CPU enters deepsleep
  1203. * @rmtoll CPUCR PDDS_SRD LL_PWR_CPU_SetSRDPowerMode
  1204. * @param PDMode This parameter can be one of the following values:
  1205. * @arg @ref LL_PWR_CPU_MODE_SRDSTOP
  1206. * @arg @ref LL_PWR_CPU_MODE_SRDSTANDBY
  1207. * @retval None
  1208. */
  1209. __STATIC_INLINE void LL_PWR_CPU_SetSRDPowerMode(uint32_t PDMode)
  1210. {
  1211. MODIFY_REG(PWR->CPUCR, PWR_CPUCR_PDDS_SRD , PDMode);
  1212. }
  1213. #endif /* PWR_CPUCR_PDDS_D2 */
  1214. #if defined (DUAL_CORE)
  1215. /**
  1216. * @brief Set the D3 domain Power Down mode when the CPU2 enters deepsleep
  1217. * @rmtoll CPU2CR PDDS_D3 LL_PWR_CPU2_SetD3PowerMode
  1218. * @param PDMode This parameter can be one of the following values:
  1219. * @arg @ref LL_PWR_CPU2_MODE_D3STOP
  1220. * @arg @ref LL_PWR_CPU2_MODE_D3STANDBY
  1221. * @retval None
  1222. */
  1223. __STATIC_INLINE void LL_PWR_CPU2_SetD3PowerMode(uint32_t PDMode)
  1224. {
  1225. MODIFY_REG(PWR->CPU2CR, PWR_CPU2CR_PDDS_D3, PDMode);
  1226. }
  1227. #endif /* DUAL_CORE */
  1228. #if defined (PWR_CPUCR_PDDS_D3)
  1229. /**
  1230. * @brief Get the D3 Domain Power Down mode when the CPU enters deepsleep
  1231. * @rmtoll CPUCR PDDS_D3 LL_PWR_CPU_GetD3PowerMode
  1232. * @retval Returned value can be one of the following values:
  1233. * @arg @ref LL_PWR_CPU_MODE_D3STOP
  1234. * @arg @ref LL_PWR_CPU_MODE_D3STANDBY
  1235. */
  1236. __STATIC_INLINE uint32_t LL_PWR_CPU_GetD3PowerMode(void)
  1237. {
  1238. return (uint32_t)(READ_BIT(PWR->CPUCR, PWR_CPUCR_PDDS_D3));
  1239. }
  1240. #else
  1241. /**
  1242. * @brief Get the SRD Domain Power Down mode when the CPU enters deepsleep
  1243. * @rmtoll CPUCR PDDS_SRD LL_PWR_CPU_GetSRDPowerMode
  1244. * @retval Returned value can be one of the following values:
  1245. * @arg @ref LL_PWR_CPU_MODE_SRDSTOP
  1246. * @arg @ref LL_PWR_CPU_MODE_SRDSTANDBY
  1247. */
  1248. __STATIC_INLINE uint32_t LL_PWR_CPU_GetSRDPowerMode(void)
  1249. {
  1250. return (uint32_t)(READ_BIT(PWR->CPUCR, PWR_CPUCR_PDDS_SRD));
  1251. }
  1252. #endif /* PWR_CPUCR_PDDS_D3 */
  1253. #if defined (DUAL_CORE)
  1254. /**
  1255. * @brief Get the D3 Domain Power Down mode when the CPU2 enters deepsleep
  1256. * @rmtoll CPU2CR PDDS_D3 LL_PWR_CPU2_GetD3PowerMode
  1257. * @retval Returned value can be one of the following values:
  1258. * @arg @ref LL_PWR_CPU2_MODE_D3STOP
  1259. * @arg @ref LL_PWR_CPU2_MODE_D3STANDBY
  1260. */
  1261. __STATIC_INLINE uint32_t LL_PWR_CPU2_GetD3PowerMode(void)
  1262. {
  1263. return (uint32_t)(READ_BIT(PWR->CPU2CR, PWR_CPU2CR_PDDS_D3));
  1264. }
  1265. #endif /* DUAL_CORE */
  1266. #if defined (DUAL_CORE)
  1267. /**
  1268. * @brief Hold the CPU1 and allocated peripherals when exiting from STOP mode
  1269. * @rmtoll CPU2CR HOLD1 LL_PWR_HoldCPU1
  1270. * @retval None
  1271. */
  1272. __STATIC_INLINE void LL_PWR_HoldCPU1(void)
  1273. {
  1274. SET_BIT(PWR->CPU2CR, PWR_CPU2CR_HOLD1);
  1275. }
  1276. /**
  1277. * @brief Release the CPU1 and allocated peripherals
  1278. * @rmtoll CPU2CR HOLD1 LL_PWR_ReleaseCPU1
  1279. * @retval None
  1280. */
  1281. __STATIC_INLINE void LL_PWR_ReleaseCPU1(void)
  1282. {
  1283. CLEAR_BIT(PWR->CPU2CR, PWR_CPU2CR_HOLD1);
  1284. }
  1285. /**
  1286. * @brief Ckeck if the CPU1 and allocated peripherals are held
  1287. * @rmtoll CPU2CR HOLD1 LL_PWR_IsCPU1Held
  1288. * @retval State of bit (1 or 0).
  1289. */
  1290. __STATIC_INLINE uint32_t LL_PWR_IsCPU1Held(void)
  1291. {
  1292. return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_HOLD1) == (PWR_CPU2CR_HOLD1)) ? 1UL : 0UL);
  1293. }
  1294. /**
  1295. * @brief Hold the CPU2 and allocated peripherals when exiting from STOP mode
  1296. * @rmtoll CPUCR HOLD2 LL_PWR_HoldCPU2
  1297. * @retval None
  1298. */
  1299. __STATIC_INLINE void LL_PWR_HoldCPU2(void)
  1300. {
  1301. SET_BIT(PWR->CPUCR, PWR_CPUCR_HOLD2);
  1302. }
  1303. /**
  1304. * @brief Release the CPU2 and allocated peripherals
  1305. * @rmtoll CPUCR HOLD2 LL_PWR_ReleaseCPU2
  1306. * @retval None
  1307. */
  1308. __STATIC_INLINE void LL_PWR_ReleaseCPU2(void)
  1309. {
  1310. CLEAR_BIT(PWR->CPUCR, PWR_CPUCR_HOLD2);
  1311. }
  1312. /**
  1313. * @brief Ckeck if the CPU2 and allocated peripherals are held
  1314. * @rmtoll CPUCR HOLD2 LL_PWR_IsCPU2Held
  1315. * @retval State of bit (1 or 0).
  1316. */
  1317. __STATIC_INLINE uint32_t LL_PWR_IsCPU2Held(void)
  1318. {
  1319. return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_HOLD2) == (PWR_CPUCR_HOLD2)) ? 1UL : 0UL);
  1320. }
  1321. #endif /* DUAL_CORE */
  1322. #if defined (PWR_CPUCR_PDDS_D2)
  1323. /**
  1324. * @brief D3 domain remains in Run mode regardless of CPU subsystem modes
  1325. * @rmtoll CPUCR RUN_D3 LL_PWR_CPU_EnableD3RunInLowPowerMode
  1326. * @retval None
  1327. */
  1328. __STATIC_INLINE void LL_PWR_CPU_EnableD3RunInLowPowerMode(void)
  1329. {
  1330. SET_BIT(PWR->CPUCR, PWR_CPUCR_RUN_D3);
  1331. }
  1332. #else
  1333. /**
  1334. * @brief SRD domain remains in Run mode regardless of CPU subsystem modes
  1335. * @rmtoll CPUCR RUN_SRD LL_PWR_CPU_EnableSRDRunInLowPowerMode
  1336. * @retval None
  1337. */
  1338. __STATIC_INLINE void LL_PWR_CPU_EnableSRDRunInLowPowerMode(void)
  1339. {
  1340. SET_BIT(PWR->CPUCR, PWR_CPUCR_RUN_SRD);
  1341. }
  1342. #endif /* PWR_CPUCR_PDDS_D2 */
  1343. #if defined (DUAL_CORE)
  1344. /**
  1345. * @brief D3 domain remains in Run mode regardless of CPU2 subsystem modes
  1346. * @rmtoll CPU2CR RUN_D3 LL_PWR_CPU2_EnableD3RunInLowPowerMode
  1347. * @retval None
  1348. */
  1349. __STATIC_INLINE void LL_PWR_CPU2_EnableD3RunInLowPowerMode(void)
  1350. {
  1351. SET_BIT(PWR->CPU2CR, PWR_CPU2CR_RUN_D3);
  1352. }
  1353. #endif /* DUAL_CORE */
  1354. #if defined (PWR_CPUCR_PDDS_D2)
  1355. /**
  1356. * @brief D3 domain follows CPU subsystem modes
  1357. * @rmtoll CPUCR RUN_D3 LL_PWR_CPU_DisableD3RunInLowPowerMode
  1358. * @retval None
  1359. */
  1360. __STATIC_INLINE void LL_PWR_CPU_DisableD3RunInLowPowerMode(void)
  1361. {
  1362. CLEAR_BIT(PWR->CPUCR, PWR_CPUCR_RUN_D3);
  1363. }
  1364. #else
  1365. /**
  1366. * @brief SRD domain follows CPU subsystem modes
  1367. * @rmtoll CPUCR RUN_SRD LL_PWR_CPU_DisableSRDRunInLowPowerMode
  1368. * @retval None
  1369. */
  1370. __STATIC_INLINE void LL_PWR_CPU_DisableSRDRunInLowPowerMode(void)
  1371. {
  1372. CLEAR_BIT(PWR->CPUCR, PWR_CPUCR_RUN_SRD);
  1373. }
  1374. #endif /* PWR_CPUCR_PDDS_D2 */
  1375. #if defined (DUAL_CORE)
  1376. /**
  1377. * @brief D3 domain follows CPU2 subsystem modes
  1378. * @rmtoll CPU2CR RUN_D3 LL_PWR_CPU2_DisableD3RunInLowPowerMode
  1379. * @retval None
  1380. */
  1381. __STATIC_INLINE void LL_PWR_CPU2_DisableD3RunInLowPowerMode(void)
  1382. {
  1383. CLEAR_BIT(PWR->CPU2CR, PWR_CPU2CR_RUN_D3);
  1384. }
  1385. #endif /* DUAL_CORE */
  1386. #if defined (PWR_CPUCR_PDDS_D2)
  1387. /**
  1388. * @brief Check if D3 is kept in Run mode when CPU enters low power mode
  1389. * @rmtoll CPUCR RUN_D3 LL_PWR_CPU_IsEnabledD3RunInLowPowerMode
  1390. * @retval State of bit (1 or 0).
  1391. */
  1392. __STATIC_INLINE uint32_t LL_PWR_CPU_IsEnabledD3RunInLowPowerMode(void)
  1393. {
  1394. return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_RUN_D3) == (PWR_CPUCR_RUN_D3)) ? 1UL : 0UL);
  1395. }
  1396. #else
  1397. /**
  1398. * @brief Check if SRD is kept in Run mode when CPU enters low power mode
  1399. * @rmtoll CPUCR RUN_SRD LL_PWR_CPU_IsEnabledSRDRunInLowPowerMode
  1400. * @retval State of bit (1 or 0).
  1401. */
  1402. __STATIC_INLINE uint32_t LL_PWR_CPU_IsEnabledSRDRunInLowPowerMode(void)
  1403. {
  1404. return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_RUN_SRD) == (PWR_CPUCR_RUN_SRD)) ? 1UL : 0UL);
  1405. }
  1406. #endif /* PWR_CPUCR_PDDS_D2 */
  1407. #if defined (DUAL_CORE)
  1408. /**
  1409. * @brief Check if D3 is kept in Run mode when CPU2 enters low power mode
  1410. * @rmtoll CPU2CR RUN_D3 LL_PWR_CPU2_IsEnabledD3RunInLowPowerMode
  1411. * @retval State of bit (1 or 0).
  1412. */
  1413. __STATIC_INLINE uint32_t LL_PWR_CPU2_IsEnabledD3RunInLowPowerMode(void)
  1414. {
  1415. return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_RUN_D3) == (PWR_CPU2CR_RUN_D3)) ? 1UL : 0UL);
  1416. }
  1417. #endif /* DUAL_CORE */
  1418. /**
  1419. * @brief Set the main internal Regulator output voltage
  1420. * @rmtoll D3CR VOS LL_PWR_SetRegulVoltageScaling
  1421. * @param VoltageScaling This parameter can be one of the following values:
  1422. * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE0
  1423. * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1
  1424. * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2
  1425. * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE3
  1426. * @note For all H7 lines except STM32H7Axxx and STM32H7Bxxx lines, VOS0
  1427. * is applied when PWR_D3CR_VOS[1:0] = 0b11 and SYSCFG_PWRCR_ODEN = 0b1.
  1428. * @retval None
  1429. */
  1430. __STATIC_INLINE void LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling)
  1431. {
  1432. #if defined (PWR_CPUCR_PDDS_D2)
  1433. MODIFY_REG(PWR->D3CR, PWR_D3CR_VOS, VoltageScaling);
  1434. #else
  1435. MODIFY_REG(PWR->SRDCR, PWR_SRDCR_VOS, VoltageScaling);
  1436. #endif /* PWR_CPUCR_PDDS_D2 */
  1437. }
  1438. /**
  1439. * @brief Get the main internal Regulator output voltage
  1440. * @rmtoll D3CR VOS LL_PWR_GetRegulVoltageScaling
  1441. * @note For all H7 lines except STM32H7Axxx and STM32H7Bxxx lines, checking
  1442. * VOS0 need the check of PWR_D3CR_VOS[1:0] field and SYSCFG_PWRCR_ODEN bit.
  1443. * @retval Returned value can be one of the following values:
  1444. * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE0
  1445. * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1
  1446. * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2
  1447. * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE3
  1448. */
  1449. __STATIC_INLINE uint32_t LL_PWR_GetRegulVoltageScaling(void)
  1450. {
  1451. #if defined (PWR_CPUCR_PDDS_D2)
  1452. return (uint32_t)(READ_BIT(PWR->D3CR, PWR_D3CR_VOS));
  1453. #else
  1454. return (uint32_t)(READ_BIT(PWR->SRDCR, PWR_SRDCR_VOS));
  1455. #endif /* PWR_CPUCR_PDDS_D2 */
  1456. }
  1457. /**
  1458. * @brief Enable the WakeUp PINx functionality
  1459. * @rmtoll WKUPEPR WKUPEN1 LL_PWR_EnableWakeUpPin\n
  1460. * WKUPEPR WKUPEN2 LL_PWR_EnableWakeUpPin\n
  1461. * WKUPEPR WKUPEN3 LL_PWR_EnableWakeUpPin\n
  1462. * WKUPEPR WKUPEN4 LL_PWR_EnableWakeUpPin\n
  1463. * WKUPEPR WKUPEN5 LL_PWR_EnableWakeUpPin\n
  1464. * WKUPEPR WKUPEN6 LL_PWR_EnableWakeUpPin
  1465. * @param WakeUpPin This parameter can be one of the following values:
  1466. * @arg @ref LL_PWR_WAKEUP_PIN1
  1467. * @arg @ref LL_PWR_WAKEUP_PIN2
  1468. * @arg @ref LL_PWR_WAKEUP_PIN3
  1469. * @arg @ref LL_PWR_WAKEUP_PIN4
  1470. * @arg @ref LL_PWR_WAKEUP_PIN5
  1471. * @arg @ref LL_PWR_WAKEUP_PIN6
  1472. * @retval None
  1473. */
  1474. __STATIC_INLINE void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin)
  1475. {
  1476. SET_BIT(PWR->WKUPEPR, WakeUpPin);
  1477. }
  1478. /**
  1479. * @brief Disable the WakeUp PINx functionality
  1480. * @rmtoll WKUPEPR WKUPEN1 LL_PWR_DisableWakeUpPin\n
  1481. * WKUPEPR WKUPEN2 LL_PWR_DisableWakeUpPin\n
  1482. * WKUPEPR WKUPEN3 LL_PWR_DisableWakeUpPin\n
  1483. * WKUPEPR WKUPEN4 LL_PWR_DisableWakeUpPin\n
  1484. * WKUPEPR WKUPEN5 LL_PWR_DisableWakeUpPin\n
  1485. * WKUPEPR WKUPEN6 LL_PWR_DisableWakeUpPin
  1486. * @param WakeUpPin This parameter can be one of the following values:
  1487. * @arg @ref LL_PWR_WAKEUP_PIN1
  1488. * @arg @ref LL_PWR_WAKEUP_PIN2
  1489. * @arg @ref LL_PWR_WAKEUP_PIN3
  1490. * @arg @ref LL_PWR_WAKEUP_PIN4
  1491. * @arg @ref LL_PWR_WAKEUP_PIN5
  1492. * @arg @ref LL_PWR_WAKEUP_PIN6
  1493. * @retval None
  1494. */
  1495. __STATIC_INLINE void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin)
  1496. {
  1497. CLEAR_BIT(PWR->WKUPEPR, WakeUpPin);
  1498. }
  1499. /**
  1500. * @brief Check if the WakeUp PINx functionality is enabled
  1501. * @rmtoll WKUPEPR WKUPEN1 LL_PWR_IsEnabledWakeUpPin\n
  1502. * WKUPEPR WKUPEN2 LL_PWR_IsEnabledWakeUpPin\n
  1503. * WKUPEPR WKUPEN3 LL_PWR_IsEnabledWakeUpPin\n
  1504. * WKUPEPR WKUPEN4 LL_PWR_IsEnabledWakeUpPin\n
  1505. * WKUPEPR WKUPEN5 LL_PWR_IsEnabledWakeUpPin\n
  1506. * WKUPEPR WKUPEN6 LL_PWR_IsEnabledWakeUpPin
  1507. * @param WakeUpPin This parameter can be one of the following values:
  1508. * @arg @ref LL_PWR_WAKEUP_PIN1
  1509. * @arg @ref LL_PWR_WAKEUP_PIN2
  1510. * @arg @ref LL_PWR_WAKEUP_PIN3
  1511. * @arg @ref LL_PWR_WAKEUP_PIN4
  1512. * @arg @ref LL_PWR_WAKEUP_PIN5
  1513. * @arg @ref LL_PWR_WAKEUP_PIN6
  1514. * @retval State of bit (1 or 0).
  1515. */
  1516. __STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin)
  1517. {
  1518. return ((READ_BIT(PWR->WKUPEPR, WakeUpPin) == (WakeUpPin)) ? 1UL : 0UL);
  1519. }
  1520. /**
  1521. * @brief Set the Wake-Up pin polarity low for the event detection
  1522. * @rmtoll WKUPEPR WKUPP1 LL_PWR_SetWakeUpPinPolarityLow\n
  1523. * WKUPEPR WKUPP2 LL_PWR_SetWakeUpPinPolarityLow\n
  1524. * WKUPEPR WKUPP3 LL_PWR_SetWakeUpPinPolarityLow\n
  1525. * WKUPEPR WKUPP4 LL_PWR_SetWakeUpPinPolarityLow\n
  1526. * WKUPEPR WKUPP5 LL_PWR_SetWakeUpPinPolarityLow\n
  1527. * WKUPEPR WKUPP6 LL_PWR_SetWakeUpPinPolarityLow
  1528. * @param WakeUpPin This parameter can be one of the following values:
  1529. * @arg @ref LL_PWR_WAKEUP_PIN1
  1530. * @arg @ref LL_PWR_WAKEUP_PIN2
  1531. * @arg @ref LL_PWR_WAKEUP_PIN3
  1532. * @arg @ref LL_PWR_WAKEUP_PIN4
  1533. * @arg @ref LL_PWR_WAKEUP_PIN5
  1534. * @arg @ref LL_PWR_WAKEUP_PIN6
  1535. * @retval None
  1536. */
  1537. __STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityLow(uint32_t WakeUpPin)
  1538. {
  1539. SET_BIT(PWR->WKUPEPR, (WakeUpPin << PWR_WKUPEPR_WKUPP1_Pos));
  1540. }
  1541. /**
  1542. * @brief Set the Wake-Up pin polarity high for the event detection
  1543. * @rmtoll WKUPEPR WKUPP1 LL_PWR_SetWakeUpPinPolarityHigh\n
  1544. * WKUPEPR WKUPP2 LL_PWR_SetWakeUpPinPolarityHigh\n
  1545. * WKUPEPR WKUPP3 LL_PWR_SetWakeUpPinPolarityHigh\n
  1546. * WKUPEPR WKUPP4 LL_PWR_SetWakeUpPinPolarityHigh\n
  1547. * WKUPEPR WKUPP5 LL_PWR_SetWakeUpPinPolarityHigh\n
  1548. * WKUPEPR WKUPP6 LL_PWR_SetWakeUpPinPolarityHigh
  1549. * @param WakeUpPin This parameter can be one of the following values:
  1550. * @arg @ref LL_PWR_WAKEUP_PIN1
  1551. * @arg @ref LL_PWR_WAKEUP_PIN2
  1552. * @arg @ref LL_PWR_WAKEUP_PIN3
  1553. * @arg @ref LL_PWR_WAKEUP_PIN4
  1554. * @arg @ref LL_PWR_WAKEUP_PIN5
  1555. * @arg @ref LL_PWR_WAKEUP_PIN6
  1556. * @retval None
  1557. */
  1558. __STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityHigh(uint32_t WakeUpPin)
  1559. {
  1560. CLEAR_BIT(PWR->WKUPEPR, (WakeUpPin << PWR_WKUPEPR_WKUPP1_Pos));
  1561. }
  1562. /**
  1563. * @brief Get the Wake-Up pin polarity for the event detection
  1564. * @rmtoll WKUPEPR WKUPP1 LL_PWR_IsWakeUpPinPolarityLow\n
  1565. * WKUPEPR WKUPP2 LL_PWR_IsWakeUpPinPolarityLow\n
  1566. * WKUPEPR WKUPP3 LL_PWR_IsWakeUpPinPolarityLow\n
  1567. * WKUPEPR WKUPP4 LL_PWR_IsWakeUpPinPolarityLow\n
  1568. * WKUPEPR WKUPP5 LL_PWR_IsWakeUpPinPolarityLow\n
  1569. * WKUPEPR WKUPP6 LL_PWR_IsWakeUpPinPolarityLow
  1570. * @param WakeUpPin This parameter can be one of the following values:
  1571. * @arg @ref LL_PWR_WAKEUP_PIN1
  1572. * @arg @ref LL_PWR_WAKEUP_PIN2
  1573. * @arg @ref LL_PWR_WAKEUP_PIN3
  1574. * @arg @ref LL_PWR_WAKEUP_PIN4
  1575. * @arg @ref LL_PWR_WAKEUP_PIN5
  1576. * @arg @ref LL_PWR_WAKEUP_PIN6
  1577. * @retval State of bit (1 or 0).
  1578. */
  1579. __STATIC_INLINE uint32_t LL_PWR_IsWakeUpPinPolarityLow(uint32_t WakeUpPin)
  1580. {
  1581. return ((READ_BIT(PWR->WKUPEPR, (WakeUpPin << PWR_WKUPEPR_WKUPP1_Pos)) == (WakeUpPin << PWR_WKUPEPR_WKUPP1_Pos)) ? 1UL : 0UL);
  1582. }
  1583. /**
  1584. * @brief Set the Wake-Up pin Pull None
  1585. * @rmtoll WKUPEPR WKUPPUPD1 LL_PWR_SetWakeUpPinPullNone\n
  1586. * WKUPEPR WKUPPUPD2 LL_PWR_SetWakeUpPinPullNone\n
  1587. * WKUPEPR WKUPPUPD3 LL_PWR_SetWakeUpPinPullNone\n
  1588. * WKUPEPR WKUPPUPD4 LL_PWR_SetWakeUpPinPullNone\n
  1589. * WKUPEPR WKUPPUPD5 LL_PWR_SetWakeUpPinPullNone\n
  1590. * WKUPEPR WKUPPUPD6 LL_PWR_SetWakeUpPinPullNone
  1591. * @param WakeUpPin This parameter can be one of the following values:
  1592. * @arg @ref LL_PWR_WAKEUP_PIN1
  1593. * @arg @ref LL_PWR_WAKEUP_PIN2
  1594. * @arg @ref LL_PWR_WAKEUP_PIN3
  1595. * @arg @ref LL_PWR_WAKEUP_PIN4
  1596. * @arg @ref LL_PWR_WAKEUP_PIN5
  1597. * @arg @ref LL_PWR_WAKEUP_PIN6
  1598. * @retval None
  1599. */
  1600. __STATIC_INLINE void LL_PWR_SetWakeUpPinPullNone(uint32_t WakeUpPin)
  1601. {
  1602. MODIFY_REG(PWR->WKUPEPR, \
  1603. (PWR_WKUPEPR_WKUPPUPD1 << ((LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin)) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)), \
  1604. (LL_PWR_WAKEUP_PIN_NOPULL << ((PWR_WKUPEPR_WKUPPUPD1_Pos + (LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin))) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)));
  1605. }
  1606. /**
  1607. * @brief Set the Wake-Up pin Pull Up
  1608. * @rmtoll WKUPEPR WKUPPUPD1 LL_PWR_SetWakeUpPinPullUp\n
  1609. * WKUPEPR WKUPPUPD2 LL_PWR_SetWakeUpPinPullUp\n
  1610. * WKUPEPR WKUPPUPD3 LL_PWR_SetWakeUpPinPullUp\n
  1611. * WKUPEPR WKUPPUPD4 LL_PWR_SetWakeUpPinPullUp\n
  1612. * WKUPEPR WKUPPUPD5 LL_PWR_SetWakeUpPinPullUp\n
  1613. * WKUPEPR WKUPPUPD6 LL_PWR_SetWakeUpPinPullUp
  1614. * @param WakeUpPin This parameter can be one of the following values:
  1615. * @arg @ref LL_PWR_WAKEUP_PIN1
  1616. * @arg @ref LL_PWR_WAKEUP_PIN2
  1617. * @arg @ref LL_PWR_WAKEUP_PIN3
  1618. * @arg @ref LL_PWR_WAKEUP_PIN4
  1619. * @arg @ref LL_PWR_WAKEUP_PIN5
  1620. * @arg @ref LL_PWR_WAKEUP_PIN6
  1621. * @retval None
  1622. */
  1623. __STATIC_INLINE void LL_PWR_SetWakeUpPinPullUp(uint32_t WakeUpPin)
  1624. {
  1625. MODIFY_REG(PWR->WKUPEPR, \
  1626. (PWR_WKUPEPR_WKUPPUPD1 << ((LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin)) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)), \
  1627. (LL_PWR_WAKEUP_PIN_PULLUP << ((PWR_WKUPEPR_WKUPPUPD1_Pos + (LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin))) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)));
  1628. }
  1629. /**
  1630. * @brief Set the Wake-Up pin Pull Down
  1631. * @rmtoll WKUPEPR WKUPPUPD1 LL_PWR_SetWakeUpPinPullDown\n
  1632. * WKUPEPR WKUPPUPD2 LL_PWR_SetWakeUpPinPullDown\n
  1633. * WKUPEPR WKUPPUPD3 LL_PWR_SetWakeUpPinPullDown\n
  1634. * WKUPEPR WKUPPUPD4 LL_PWR_SetWakeUpPinPullDown\n
  1635. * WKUPEPR WKUPPUPD5 LL_PWR_SetWakeUpPinPullDown\n
  1636. * WKUPEPR WKUPPUPD6 LL_PWR_SetWakeUpPinPullDown
  1637. * @param WakeUpPin This parameter can be one of the following values:
  1638. * @arg @ref LL_PWR_WAKEUP_PIN1
  1639. * @arg @ref LL_PWR_WAKEUP_PIN2
  1640. * @arg @ref LL_PWR_WAKEUP_PIN3
  1641. * @arg @ref LL_PWR_WAKEUP_PIN4
  1642. * @arg @ref LL_PWR_WAKEUP_PIN5
  1643. * @arg @ref LL_PWR_WAKEUP_PIN6
  1644. * @retval None
  1645. */
  1646. __STATIC_INLINE void LL_PWR_SetWakeUpPinPullDown(uint32_t WakeUpPin)
  1647. {
  1648. MODIFY_REG(PWR->WKUPEPR, \
  1649. (PWR_WKUPEPR_WKUPPUPD1 << ((LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin)) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)), \
  1650. (LL_PWR_WAKEUP_PIN_PULLDOWN << ((PWR_WKUPEPR_WKUPPUPD1_Pos + (LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin))) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)));
  1651. }
  1652. /**
  1653. * @brief Get the Wake-Up pin pull
  1654. * @rmtoll WKUPEPR WKUPPUPD1 LL_PWR_GetWakeUpPinPull\n
  1655. * WKUPEPR WKUPPUPD2 LL_PWR_GetWakeUpPinPull\n
  1656. * WKUPEPR WKUPPUPD3 LL_PWR_GetWakeUpPinPull\n
  1657. * WKUPEPR WKUPPUPD4 LL_PWR_GetWakeUpPinPull\n
  1658. * WKUPEPR WKUPPUPD5 LL_PWR_GetWakeUpPinPull\n
  1659. * WKUPEPR WKUPPUPD6 LL_PWR_GetWakeUpPinPull
  1660. * @param WakeUpPin This parameter can be one of the following values:
  1661. * @arg @ref LL_PWR_WAKEUP_PIN1
  1662. * @arg @ref LL_PWR_WAKEUP_PIN2
  1663. * @arg @ref LL_PWR_WAKEUP_PIN3
  1664. * @arg @ref LL_PWR_WAKEUP_PIN4
  1665. * @arg @ref LL_PWR_WAKEUP_PIN5
  1666. * @arg @ref LL_PWR_WAKEUP_PIN6
  1667. * @retval Returned value can be one of the following values:
  1668. * @arg @ref LL_PWR_WAKEUP_PIN_NOPULL
  1669. * @arg @ref LL_PWR_WAKEUP_PIN_PULLUP
  1670. * @arg @ref LL_PWR_WAKEUP_PIN_PULLDOWN
  1671. */
  1672. __STATIC_INLINE uint32_t LL_PWR_GetWakeUpPinPull(uint32_t WakeUpPin)
  1673. {
  1674. register uint32_t regValue = READ_BIT(PWR->WKUPEPR, (PWR_WKUPEPR_WKUPPUPD1 << ((LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin)) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)));
  1675. return (uint32_t)(regValue >> ((PWR_WKUPEPR_WKUPPUPD1_Pos + (LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin))) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK));
  1676. }
  1677. /**
  1678. * @}
  1679. */
  1680. /** @defgroup PWR_LL_EF_FLAG_Management FLAG_Management
  1681. * @{
  1682. */
  1683. /**
  1684. * @brief Indicate whether VDD voltage is below the selected PVD threshold
  1685. * @rmtoll CSR1 PVDO LL_PWR_IsActiveFlag_PVDO
  1686. * @retval State of bit (1 or 0).
  1687. */
  1688. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(void)
  1689. {
  1690. return ((READ_BIT(PWR->CSR1, PWR_CSR1_PVDO) == (PWR_CSR1_PVDO)) ? 1UL : 0UL);
  1691. }
  1692. /**
  1693. * @brief Indicate whether the voltage level is ready for current actual used VOS
  1694. * @rmtoll CSR1 ACTVOSRDY LL_PWR_IsActiveFlag_ACTVOS
  1695. * @retval State of bit (1 or 0).
  1696. */
  1697. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_ACTVOS(void)
  1698. {
  1699. return ((READ_BIT(PWR->CSR1, PWR_CSR1_ACTVOSRDY) == (PWR_CSR1_ACTVOSRDY)) ? 1UL : 0UL);
  1700. }
  1701. /**
  1702. * @brief Indicate whether VDDA voltage is below the selected AVD threshold
  1703. * @rmtoll CSR1 AVDO LL_PWR_IsActiveFlag_AVDO
  1704. * @retval State of bit (1 or 0).
  1705. */
  1706. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_AVDO(void)
  1707. {
  1708. return ((READ_BIT(PWR->CSR1, PWR_CSR1_AVDO) == (PWR_CSR1_AVDO)) ? 1UL : 0UL);
  1709. }
  1710. #if defined (PWR_CSR1_MMCVDO)
  1711. /**
  1712. * @brief Indicate whether VDDMMC voltage is below 1V2
  1713. * @rmtoll CSR1 MMCVDO LL_PWR_IsActiveFlag_MMCVDO
  1714. * @retval State of bit (1 or 0).
  1715. */
  1716. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_MMCVDO(void)
  1717. {
  1718. return ((READ_BIT(PWR->CSR1, PWR_CSR1_MMCVDO) == (PWR_CSR1_MMCVDO)) ? 1UL : 0UL);
  1719. }
  1720. #endif /* PWR_CSR1_MMCVDO */
  1721. /**
  1722. * @brief Get Backup Regulator ready Flag
  1723. * @rmtoll CR2 BRRDY LL_PWR_IsActiveFlag_BRR
  1724. * @retval State of bit (1 or 0).
  1725. */
  1726. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_BRR(void)
  1727. {
  1728. return ((READ_BIT(PWR->CR2, PWR_CR2_BRRDY) == (PWR_CR2_BRRDY)) ? 1UL : 0UL);
  1729. }
  1730. /**
  1731. * @brief Indicate whether the VBAT level is above or below low threshold
  1732. * @rmtoll CR2 VBATL LL_PWR_IsActiveFlag_VBATL
  1733. * @retval State of bit (1 or 0).
  1734. */
  1735. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VBATL(void)
  1736. {
  1737. return ((READ_BIT(PWR->CR2, PWR_CR2_VBATL) == (PWR_CR2_VBATL)) ? 1UL : 0UL);
  1738. }
  1739. /**
  1740. * @brief Indicate whether the VBAT level is above or below high threshold
  1741. * @rmtoll CR2 VBATH LL_PWR_IsActiveFlag_VBATH
  1742. * @retval State of bit (1 or 0).
  1743. */
  1744. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VBATH(void)
  1745. {
  1746. return ((READ_BIT(PWR->CR2, PWR_CR2_VBATH) == (PWR_CR2_VBATH)) ? 1UL : 0UL);
  1747. }
  1748. /**
  1749. * @brief Indicate whether the CPU temperature level is above or below low threshold
  1750. * @rmtoll CR2 TEMPL LL_PWR_IsActiveFlag_TEMPL
  1751. * @retval State of bit (1 or 0).
  1752. */
  1753. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_TEMPL(void)
  1754. {
  1755. return ((READ_BIT(PWR->CR2, PWR_CR2_TEMPL) == (PWR_CR2_TEMPL)) ? 1UL : 0UL);
  1756. }
  1757. /**
  1758. * @brief Indicate whether the CPU temperature level is above or below high threshold
  1759. * @rmtoll CR2 TEMPH LL_PWR_IsActiveFlag_TEMPH
  1760. * @retval State of bit (1 or 0).
  1761. */
  1762. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_TEMPH(void)
  1763. {
  1764. return ((READ_BIT(PWR->CR2, PWR_CR2_TEMPH) == (PWR_CR2_TEMPH)) ? 1UL : 0UL);
  1765. }
  1766. #if defined (SMPS)
  1767. /**
  1768. * @brief Indicate whether the SMPS external supply is ready or not
  1769. * @rmtoll CR3 SMPSEXTRDY LL_PWR_IsActiveFlag_SMPSEXT
  1770. * @retval State of bit (1 or 0).
  1771. */
  1772. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SMPSEXT(void)
  1773. {
  1774. return ((READ_BIT(PWR->CR3, PWR_CR3_SMPSEXTRDY) == (PWR_CR3_SMPSEXTRDY)) ? 1UL : 0UL);
  1775. }
  1776. #endif /* SMPS */
  1777. /**
  1778. * @brief Indicate whether the USB supply is ready or not
  1779. * @rmtoll CR3 USBRDY LL_PWR_IsActiveFlag_USB
  1780. * @retval State of bit (1 or 0).
  1781. */
  1782. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_USB(void)
  1783. {
  1784. return ((READ_BIT(PWR->CR3, PWR_CR3_USB33RDY) == (PWR_CR3_USB33RDY)) ? 1UL : 0UL);
  1785. }
  1786. #if defined (DUAL_CORE)
  1787. /**
  1788. * @brief Get HOLD2 Flag
  1789. * @rmtoll CPUCR HOLD2F LL_PWR_IsActiveFlag_HOLD2
  1790. * @retval State of bit (1 or 0).
  1791. */
  1792. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_HOLD2(void)
  1793. {
  1794. return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_HOLD2F) == (PWR_CPUCR_HOLD2F)) ? 1UL : 0UL);
  1795. }
  1796. /**
  1797. * @brief Get HOLD1 Flag
  1798. * @rmtoll CPU2CR HOLD1F LL_PWR_IsActiveFlag_HOLD1
  1799. * @retval State of bit (1 or 0).
  1800. */
  1801. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_HOLD1(void)
  1802. {
  1803. return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_HOLD1F) == (PWR_CPU2CR_HOLD1F)) ? 1UL : 0UL);
  1804. }
  1805. #endif /* DUAL_CORE */
  1806. /**
  1807. * @brief Get CPU System Stop Flag
  1808. * @rmtoll CPUCR STOPF LL_PWR_CPU_IsActiveFlag_STOP
  1809. * @retval State of bit (1 or 0).
  1810. */
  1811. __STATIC_INLINE uint32_t LL_PWR_CPU_IsActiveFlag_STOP(void)
  1812. {
  1813. return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_STOPF) == (PWR_CPUCR_STOPF)) ? 1UL : 0UL);
  1814. }
  1815. #if defined (DUAL_CORE)
  1816. /**
  1817. * @brief Get CPU2 System Stop Flag
  1818. * @rmtoll CPU2CR STOPF LL_PWR_CPU2_IsActiveFlag_STOP
  1819. * @retval State of bit (1 or 0).
  1820. */
  1821. __STATIC_INLINE uint32_t LL_PWR_CPU2_IsActiveFlag_STOP(void)
  1822. {
  1823. return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_STOPF) == (PWR_CPU2CR_STOPF)) ? 1UL : 0UL);
  1824. }
  1825. #endif /* DUAL_CORE */
  1826. /**
  1827. * @brief Get CPU System Standby Flag
  1828. * @rmtoll CPUCR SBF LL_PWR_CPU_IsActiveFlag_SB
  1829. * @retval State of bit (1 or 0).
  1830. */
  1831. __STATIC_INLINE uint32_t LL_PWR_CPU_IsActiveFlag_SB(void)
  1832. {
  1833. return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_SBF) == (PWR_CPUCR_SBF)) ? 1UL : 0UL);
  1834. }
  1835. #if defined (DUAL_CORE)
  1836. /**
  1837. * @brief Get CPU2 System Standby Flag
  1838. * @rmtoll CPU2CR SBF LL_PWR_CPU2_IsActiveFlag_SB
  1839. * @retval State of bit (1 or 0).
  1840. */
  1841. __STATIC_INLINE uint32_t LL_PWR_CPU2_IsActiveFlag_SB(void)
  1842. {
  1843. return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_SBF) == (PWR_CPU2CR_SBF)) ? 1UL : 0UL);
  1844. }
  1845. #endif /* DUAL_CORE */
  1846. #if defined (PWR_CPUCR_SBF_D1)
  1847. /**
  1848. * @brief Get CPU D1 Domain Standby Flag
  1849. * @rmtoll CPUCR SBF_D1 LL_PWR_CPU_IsActiveFlag_SB_D1
  1850. * @retval State of bit (1 or 0).
  1851. */
  1852. __STATIC_INLINE uint32_t LL_PWR_CPU_IsActiveFlag_SB_D1(void)
  1853. {
  1854. return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_SBF_D1) == (PWR_CPUCR_SBF_D1)) ? 1UL : 0UL);
  1855. }
  1856. #endif /* PWR_CPUCR_SBF_D1 */
  1857. #if defined (DUAL_CORE)
  1858. /**
  1859. * @brief Get CPU2 D1 Domain Standby Flag
  1860. * @rmtoll CPU2CR SBF_D1 LL_PWR_CPU2_IsActiveFlag_SB_D1
  1861. * @retval State of bit (1 or 0).
  1862. */
  1863. __STATIC_INLINE uint32_t LL_PWR_CPU2_IsActiveFlag_SB_D1(void)
  1864. {
  1865. return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_SBF_D1) == (PWR_CPU2CR_SBF_D1)) ? 1UL : 0UL);
  1866. }
  1867. #endif /* DUAL_CORE */
  1868. #if defined (PWR_CPUCR_SBF_D2)
  1869. /**
  1870. * @brief Get CPU D2 Domain Standby Flag
  1871. * @rmtoll CPUCR SBF_D2 LL_PWR_CPU_IsActiveFlag_SB_D2
  1872. * @retval State of bit (1 or 0).
  1873. */
  1874. __STATIC_INLINE uint32_t LL_PWR_CPU_IsActiveFlag_SB_D2(void)
  1875. {
  1876. return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_SBF_D2) == (PWR_CPUCR_SBF_D2)) ? 1UL : 0UL);
  1877. }
  1878. #endif /* PWR_CPUCR_SBF_D2 */
  1879. #if defined (DUAL_CORE)
  1880. /**
  1881. * @brief Get CPU2 D2 Domain Standby Flag
  1882. * @rmtoll CPU2CR SBF_D2 LL_PWR_CPU2_IsActiveFlag_SB_D2
  1883. * @retval State of bit (1 or 0).
  1884. */
  1885. __STATIC_INLINE uint32_t LL_PWR_CPU2_IsActiveFlag_SB_D2(void)
  1886. {
  1887. return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_SBF_D2) == (PWR_CPU2CR_SBF_D2)) ? 1UL : 0UL);
  1888. }
  1889. #endif /* DUAL_CORE */
  1890. /**
  1891. * @brief Indicate whether the Regulator is ready in the selected voltage range
  1892. * or if its output voltage is still changing to the required voltage level
  1893. * @rmtoll D3CR VOSRDY LL_PWR_IsActiveFlag_VOS
  1894. * @retval State of bit (1 or 0).
  1895. */
  1896. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VOS(void)
  1897. {
  1898. #if defined (PWR_CPUCR_PDDS_D2)
  1899. return ((READ_BIT(PWR->D3CR, PWR_D3CR_VOSRDY) == (PWR_D3CR_VOSRDY)) ? 1UL : 0UL);
  1900. #else
  1901. return ((READ_BIT(PWR->SRDCR, PWR_SRDCR_VOSRDY) == (PWR_SRDCR_VOSRDY)) ? 1UL : 0UL);
  1902. #endif /* PWR_CPUCR_PDDS_D2 */
  1903. }
  1904. /**
  1905. * @brief Get Wake-up Flag 6
  1906. * @rmtoll WKUPFR WKUPF6 LL_PWR_IsActiveFlag_WU6
  1907. * @retval State of bit (1 or 0).
  1908. */
  1909. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU6(void)
  1910. {
  1911. return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF6) == (PWR_WKUPFR_WKUPF6)) ? 1UL : 0UL);
  1912. }
  1913. /**
  1914. * @brief Get Wake-up Flag 5
  1915. * @rmtoll WKUPFR WKUPF5 LL_PWR_IsActiveFlag_WU5
  1916. * @retval State of bit (1 or 0).
  1917. */
  1918. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU5(void)
  1919. {
  1920. return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF5) == (PWR_WKUPFR_WKUPF5)) ? 1UL : 0UL);
  1921. }
  1922. /**
  1923. * @brief Get Wake-up Flag 4
  1924. * @rmtoll WKUPFR WKUPF4 LL_PWR_IsActiveFlag_WU4
  1925. * @retval State of bit (1 or 0).
  1926. */
  1927. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU4(void)
  1928. {
  1929. return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF4) == (PWR_WKUPFR_WKUPF4)) ? 1UL : 0UL);
  1930. }
  1931. /**
  1932. * @brief Get Wake-up Flag 3
  1933. * @rmtoll WKUPFR WKUPF3 LL_PWR_IsActiveFlag_WU3
  1934. * @retval State of bit (1 or 0).
  1935. */
  1936. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU3(void)
  1937. {
  1938. return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF3) == (PWR_WKUPFR_WKUPF3)) ? 1UL : 0UL);
  1939. }
  1940. /**
  1941. * @brief Get Wake-up Flag 2
  1942. * @rmtoll WKUPFR WKUPF2 LL_PWR_IsActiveFlag_WU2
  1943. * @retval State of bit (1 or 0).
  1944. */
  1945. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU2(void)
  1946. {
  1947. return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF2) == (PWR_WKUPFR_WKUPF2)) ? 1UL : 0UL);
  1948. }
  1949. /**
  1950. * @brief Get Wake-up Flag 1
  1951. * @rmtoll WKUPFR WKUPF1 LL_PWR_IsActiveFlag_WU1
  1952. * @retval State of bit (1 or 0).
  1953. */
  1954. __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU1(void)
  1955. {
  1956. return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF1) == (PWR_WKUPFR_WKUPF1)) ? 1UL : 0UL);
  1957. }
  1958. /**
  1959. * @brief Clear CPU STANDBY, STOP and HOLD flags
  1960. * @rmtoll CPUCR CSSF LL_PWR_ClearFlag_CPU
  1961. * @retval None
  1962. */
  1963. __STATIC_INLINE void LL_PWR_ClearFlag_CPU(void)
  1964. {
  1965. SET_BIT(PWR->CPUCR, PWR_CPUCR_CSSF);
  1966. }
  1967. #if defined (DUAL_CORE)
  1968. /**
  1969. * @brief Clear CPU2 STANDBY, STOP and HOLD flags
  1970. * @rmtoll CPU2CR CSSF LL_PWR_ClearFlag_CPU2
  1971. * @retval None
  1972. */
  1973. __STATIC_INLINE void LL_PWR_ClearFlag_CPU2(void)
  1974. {
  1975. SET_BIT(PWR->CPU2CR, PWR_CPU2CR_CSSF);
  1976. }
  1977. #endif /* DUAL_CORE */
  1978. /**
  1979. * @brief Clear Wake-up Flag 6
  1980. * @rmtoll WKUPCR WKUPC6 LL_PWR_ClearFlag_WU6
  1981. * @retval None
  1982. */
  1983. __STATIC_INLINE void LL_PWR_ClearFlag_WU6(void)
  1984. {
  1985. WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC6);
  1986. }
  1987. /**
  1988. * @brief Clear Wake-up Flag 5
  1989. * @rmtoll WKUPCR WKUPC5 LL_PWR_ClearFlag_WU5
  1990. * @retval None
  1991. */
  1992. __STATIC_INLINE void LL_PWR_ClearFlag_WU5(void)
  1993. {
  1994. WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC5);
  1995. }
  1996. /**
  1997. * @brief Clear Wake-up Flag 4
  1998. * @rmtoll WKUPCR WKUPC4 LL_PWR_ClearFlag_WU4
  1999. * @retval None
  2000. */
  2001. __STATIC_INLINE void LL_PWR_ClearFlag_WU4(void)
  2002. {
  2003. WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC4);
  2004. }
  2005. /**
  2006. * @brief Clear Wake-up Flag 3
  2007. * @rmtoll WKUPCR WKUPC3 LL_PWR_ClearFlag_WU3
  2008. * @retval None
  2009. */
  2010. __STATIC_INLINE void LL_PWR_ClearFlag_WU3(void)
  2011. {
  2012. WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC3);
  2013. }
  2014. /**
  2015. * @brief Clear Wake-up Flag 2
  2016. * @rmtoll WKUPCR WKUPC2 LL_PWR_ClearFlag_WU2
  2017. * @retval None
  2018. */
  2019. __STATIC_INLINE void LL_PWR_ClearFlag_WU2(void)
  2020. {
  2021. WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC2);
  2022. }
  2023. /**
  2024. * @brief Clear Wake-up Flag 1
  2025. * @rmtoll WKUPCR WKUPC1 LL_PWR_ClearFlag_WU1
  2026. * @retval None
  2027. */
  2028. __STATIC_INLINE void LL_PWR_ClearFlag_WU1(void)
  2029. {
  2030. WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC1);
  2031. }
  2032. #if defined (USE_FULL_LL_DRIVER)
  2033. /** @defgroup PWR_LL_EF_Init De-initialization function
  2034. * @{
  2035. */
  2036. ErrorStatus LL_PWR_DeInit(void);
  2037. /**
  2038. * @}
  2039. */
  2040. #endif /* defined (USE_FULL_LL_DRIVER) */
  2041. /**
  2042. * @}
  2043. */
  2044. /**
  2045. * @}
  2046. */
  2047. /**
  2048. * @}
  2049. */
  2050. #endif /* defined (PWR) */
  2051. /**
  2052. * @}
  2053. */
  2054. #ifdef __cplusplus
  2055. }
  2056. #endif
  2057. #endif /* STM32H7xx_LL_PWR_H */
  2058. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/