Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:37

0001 /**
0002   ******************************************************************************
0003   * @file    stm32h7xx_ll_pwr.h
0004   * @author  MCD Application Team
0005   * @brief   Header file of PWR LL module.
0006   ******************************************************************************
0007   * @attention
0008   *
0009   * Copyright (c) 2017 STMicroelectronics.
0010   * All rights reserved.
0011   *
0012   * This software is licensed under terms that can be found in the LICENSE file
0013   * in the root directory of this software component.
0014   * If no LICENSE file comes with this software, it is provided AS-IS.
0015   *
0016   ******************************************************************************
0017   */
0018 
0019 /* Define to prevent recursive inclusion -------------------------------------*/
0020 #ifndef STM32H7xx_LL_PWR_H
0021 #define STM32H7xx_LL_PWR_H
0022 
0023 #ifdef __cplusplus
0024 extern "C" {
0025 #endif
0026 
0027 /* Includes ------------------------------------------------------------------*/
0028 #include "stm32h7xx.h"
0029 
0030 /** @addtogroup STM32H7xx_LL_Driver
0031   * @{
0032   */
0033 
0034 #if defined (PWR)
0035 
0036 /** @defgroup PWR_LL PWR
0037   * @ingroup RTEMSBSPsARMSTM32H7
0038   * @{
0039   */
0040 
0041 /* Private types -------------------------------------------------------------*/
0042 /* Private variables ---------------------------------------------------------*/
0043 /* Private constants ---------------------------------------------------------*/
0044 /** @defgroup PWR_LL_Private_Constants PWR Private Constants
0045   * @ingroup RTEMSBSPsARMSTM32H7
0046   * @{
0047   */
0048 
0049 /** @defgroup PWR_LL_WAKEUP_PIN_OFFSET Wake-Up Pins register offsets Defines
0050   * @ingroup RTEMSBSPsARMSTM32H7
0051   * @brief    Flags defines which can be used with LL_PWR_WriteReg function
0052   * @{
0053   */
0054 /* Wake-Up Pins PWR register offsets */
0055 #define LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET    2UL
0056 #define LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK       0x1FU
0057 /**
0058   * @}
0059   */
0060 /**
0061   * @}
0062   */
0063 /* Private macros ------------------------------------------------------------*/
0064 /* Exported types ------------------------------------------------------------*/
0065 /* Exported constants --------------------------------------------------------*/
0066 /** @defgroup PWR_LL_Exported_Constants PWR Exported Constants
0067   * @ingroup RTEMSBSPsARMSTM32H7
0068   * @{
0069   */
0070 
0071 /** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines
0072   * @ingroup RTEMSBSPsARMSTM32H7
0073   * @brief    Flags defines which can be used with LL_PWR_WriteReg function
0074   * @{
0075   */
0076 #define LL_PWR_FLAG_CPU_CSSF          PWR_CPUCR_CSSF      /*!< Clear flags for CPU  */
0077 #if defined (DUAL_CORE)
0078 #define LL_PWR_FLAG_CPU2_CSSF         PWR_CPU2CR_CSSF     /*!< Clear flags for CPU2 */
0079 #endif /* DUAL_CORE */
0080 #define LL_PWR_FLAG_WKUPCR_WKUPC6     PWR_WKUPCR_WKUPC6   /*!< Clear PC1 WKUP flag  */
0081 #if defined (PWR_WKUPCR_WKUPC5)
0082 #define LL_PWR_FLAG_WKUPCR_WKUPC5     PWR_WKUPCR_WKUPC5   /*!< Clear PI11 WKUP flag */
0083 #endif /* defined (PWR_WKUPCR_WKUPC5) */
0084 #define LL_PWR_FLAG_WKUPCR_WKUPC4     PWR_WKUPCR_WKUPC4   /*!< Clear PC13 WKUP flag */
0085 #if defined (PWR_WKUPCR_WKUPC3)
0086 #define LL_PWR_FLAG_WKUPCR_WKUPC3     PWR_WKUPCR_WKUPC3   /*!< Clear PI8 WKUP flag  */
0087 #endif /* defined (PWR_WKUPCR_WKUPC3) */
0088 #define LL_PWR_FLAG_WKUPCR_WKUPC2     PWR_WKUPCR_WKUPC2   /*!< Clear PA2 WKUP flag  */
0089 #define LL_PWR_FLAG_WKUPCR_WKUPC1     PWR_WKUPCR_WKUPC1   /*!< Clear PA0 WKUP flag  */
0090 /**
0091   * @}
0092   */
0093 
0094 /** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines
0095   * @ingroup RTEMSBSPsARMSTM32H7
0096   * @brief    Flags defines which can be used with LL_PWR_ReadReg function
0097   * @{
0098   */
0099 #define LL_PWR_FLAG_AVDO              PWR_CSR1_AVDO       /*!< Analog voltage detector output on VDDA flag                          */
0100 #define LL_PWR_FLAG_PVDO              PWR_CSR1_PVDO       /*!< Programmable voltage detect output flag                              */
0101 #define LL_PWR_FLAG_ACTVOS            PWR_CSR1_ACTVOS     /*!< Current VOS applied for VCORE voltage scaling flag                   */
0102 #define LL_PWR_FLAG_ACTVOSRDY         PWR_CSR1_ACTVOSRDY  /*!< Ready bit for current actual used VOS for VCORE voltage scaling flag */
0103 #if defined (PWR_CSR1_MMCVDO)
0104 #define LL_PWR_FLAG_MMCVDO            PWR_CSR1_MMCVDO     /*!< Voltage detector output on VDDMMC flag                               */
0105 #endif /* PWR_CSR1_MMCVDO */
0106 
0107 #define LL_PWR_FLAG_TEMPH             PWR_CR2_TEMPH       /*!< Temperature high threshold flag */
0108 #define LL_PWR_FLAG_TEMPL             PWR_CR2_TEMPL       /*!< Temperature low threshold flag  */
0109 #define LL_PWR_FLAG_VBATH             PWR_CR2_VBATH       /*!< VBAT high threshold flag        */
0110 #define LL_PWR_FLAG_VBATL             PWR_CR2_VBATL       /*!< VBAT low threshold flag         */
0111 #define LL_PWR_FLAG_BRRDY             PWR_CR2_BRRDY       /*!< Backup Regulator ready flag     */
0112 
0113 #define LL_PWR_FLAG_USBRDY            PWR_CR3_USB33RDY    /*!< USB supply ready flag           */
0114 #define LL_PWR_FLAG_SMPSEXTRDY        PWR_CR3_SMPSEXTRDY  /*!< SMPS External supply ready flag */
0115 
0116 #if defined (PWR_CPUCR_SBF_D2)
0117 #define LL_PWR_FLAG_CPU_SBF_D2        PWR_CPUCR_SBF_D2    /*!< D2 domain DSTANDBY Flag  */
0118 #endif /* PWR_CPUCR_SBF_D2 */
0119 #if defined (PWR_CPUCR_SBF_D1)
0120 #define LL_PWR_FLAG_CPU_SBF_D1        PWR_CPUCR_SBF_D1    /*!< D1 domain DSTANDBY Flag  */
0121 #endif /* PWR_CPUCR_SBF_D1 */
0122 #define LL_PWR_FLAG_CPU_SBF           PWR_CPUCR_SBF       /*!< System STANDBY Flag      */
0123 #define LL_PWR_FLAG_CPU_STOPF         PWR_CPUCR_STOPF     /*!< STOP Flag                */
0124 #if defined (DUAL_CORE)
0125 #define LL_PWR_FLAG_CPU_HOLD2F        PWR_CPUCR_HOLD2F    /*!< CPU2 in hold wakeup flag */
0126 #endif /* DUAL_CORE */
0127 
0128 #if defined (DUAL_CORE)
0129 #define LL_PWR_FLAG_CPU2_SBF_D2       PWR_CPU2CR_SBF_D2   /*!< D2 domain DSTANDBY Flag  */
0130 #define LL_PWR_FLAG_CPU2_SBF_D1       PWR_CPU2CR_SBF_D1   /*!< D1 domain DSTANDBY Flag  */
0131 #define LL_PWR_FLAG_CPU2_SBF          PWR_CPU2CR_SBF      /*!< System STANDBY Flag      */
0132 #define LL_PWR_FLAG_CPU2_STOPF        PWR_CPU2CR_STOPF    /*!< STOP Flag                */
0133 #define LL_PWR_FLAG_CPU2_HOLD1F       PWR_CPU2CR_HOLD1F   /*!< CPU1 in hold wakeup flag */
0134 #endif /* DUAL_CORE */
0135 
0136 #if defined (PWR_CPUCR_PDDS_D2)
0137 #define LL_PWR_D3CR_VOSRDY            PWR_D3CR_VOSRDY     /*!< Voltage scaling ready flag */
0138 #else
0139 #define LL_PWR_SRDCR_VOSRDY           PWR_SRDCR_VOSRDY    /*!< Voltage scaling ready flag */
0140 #endif /* PWR_CPUCR_PDDS_D2 */
0141 
0142 #define LL_PWR_WKUPFR_WKUPF6          PWR_WKUPFR_WKUPF6   /*!< Wakeup flag on PC1  */
0143 #if defined (PWR_WKUPFR_WKUPF5)
0144 #define LL_PWR_WKUPFR_WKUPF5          PWR_WKUPFR_WKUPF5   /*!< Wakeup flag on PI11 */
0145 #endif /* defined (PWR_WKUPFR_WKUPF5) */
0146 #define LL_PWR_WKUPFR_WKUPF4          PWR_WKUPFR_WKUPF4   /*!< Wakeup flag on PC13 */
0147 #if defined (PWR_WKUPFR_WKUPF3)
0148 #define LL_PWR_WKUPFR_WKUPF3          PWR_WKUPFR_WKUPF3   /*!< Wakeup flag on PI8  */
0149 #endif /* defined (PWR_WKUPFR_WKUPF3) */
0150 #define LL_PWR_WKUPFR_WKUPF2          PWR_WKUPFR_WKUPF2   /*!< Wakeup flag on PA2  */
0151 #define LL_PWR_WKUPFR_WKUPF1          PWR_WKUPFR_WKUPF1   /*!< Wakeup flag on PA0  */
0152 /**
0153   * @}
0154   */
0155 
0156 /** @defgroup PWR_LL_EC_MODE_PWR Power mode
0157   * @ingroup RTEMSBSPsARMSTM32H7
0158   * @{
0159   */
0160 #if defined (PWR_CPUCR_PDDS_D2)
0161 #define LL_PWR_CPU_MODE_D1STOP        0x00000000U           /*!< Enter D1 domain to Stop mode when the CPU enters deepsleep       */
0162 #define LL_PWR_CPU_MODE_D1STANDBY     PWR_CPUCR_PDDS_D1     /*!< Enter D1 domain to Standby mode when the CPU enters deepsleep    */
0163 #else
0164 #define LL_PWR_CPU_MODE_CDSTOP        0x00000000U           /*!< Enter CD domain to Stop mode when the CPU enters deepsleep       */
0165 #define LL_PWR_CPU_MODE_CDSTOP2       PWR_CPUCR_RETDS_CD    /*!< Enter CD domain to Stop2 mode when the CPU enters deepsleep      */
0166 #endif /* PWR_CPUCR_PDDS_D2 */
0167 
0168 #if defined (PWR_CPUCR_PDDS_D2)
0169 #define LL_PWR_CPU_MODE_D2STOP        0x00000000U           /*!< Enter D2 domain to Stop mode when the CPU enters deepsleep       */
0170 #define LL_PWR_CPU_MODE_D2STANDBY     PWR_CPUCR_PDDS_D2     /*!< Enter D2 domain to Standby mode when the CPU enters deepsleep    */
0171 #endif /* PWR_CPUCR_PDDS_D2 */
0172 
0173 #if defined (PWR_CPUCR_PDDS_D2)
0174 #define LL_PWR_CPU_MODE_D3RUN         PWR_CPUCR_RUN_D3      /*!< Keep system D3 domain in Run mode when the CPU enter deepsleep   */
0175 #define LL_PWR_CPU_MODE_D3STOP        0x00000000U           /*!< Enter D3 domain to Stop mode when the CPU enters deepsleep       */
0176 #define LL_PWR_CPU_MODE_D3STANDBY     PWR_CPUCR_PDDS_D3     /*!< Enter D3 domain to Standby mode when the CPU enters deepsleep    */
0177 #else
0178 #define LL_PWR_CPU_MODE_SRDRUN        PWR_CPUCR_RUN_SRD     /*!< Keep system SRD domain in Run mode when the CPU enter deepsleep  */
0179 #define LL_PWR_CPU_MODE_SRDSTOP       0x00000000U           /*!< Enter SRD domain to Stop mode when the CPU enters deepsleep      */
0180 #define LL_PWR_CPU_MODE_SRDSTANDBY    PWR_CPUCR_PDDS_SRD    /*!< Enter SRD domain to Standby mode when the CPU enters deepsleep   */
0181 #endif /* PWR_CPUCR_PDDS_D2 */
0182 
0183 #if defined (DUAL_CORE)
0184 #define LL_PWR_CPU2_MODE_D1STOP       0x00000000U           /*!< Enter D1 domain to Stop mode when the CPU2 enters deepsleep      */
0185 #define LL_PWR_CPU2_MODE_D1STANDBY    PWR_CPU2CR_PDDS_D1    /*!< Enter D1 domain to Standby mode when the CPU2 enters deepsleep   */
0186 #define LL_PWR_CPU2_MODE_D2STOP       0x00000000U           /*!< Enter D2 domain to Stop mode when the CPU2 enters deepsleep      */
0187 #define LL_PWR_CPU2_MODE_D2STANDBY    PWR_CPU2CR_PDDS_D2    /*!< Enter D2 domain to Standby mode when the CPU2 enters deepsleep   */
0188 #define LL_PWR_CPU2_MODE_D3RUN        PWR_CPU2CR_RUN_D3     /*!< Keep system D3 domain in RUN mode when the CPU2 enter deepsleep  */
0189 #define LL_PWR_CPU2_MODE_D3STOP       0x00000000U           /*!< Enter D3 domain to Stop mode when the CPU2 enters deepsleep      */
0190 #define LL_PWR_CPU2_MODE_D3STANDBY    PWR_CPU2CR_PDDS_D3    /*!< Enter D3 domain to Standby mode when the CPU2 enter deepsleep    */
0191 #endif /* DUAL_CORE */
0192 /**
0193   * @}
0194   */
0195 
0196 /** @defgroup PWR_LL_EC_REGU_VOLTAGE Run mode Regulator Voltage Scaling
0197   * @ingroup RTEMSBSPsARMSTM32H7
0198   * @{
0199   */
0200 #if defined (PWR_CPUCR_PDDS_D2)
0201 #define LL_PWR_REGU_VOLTAGE_SCALE3      PWR_D3CR_VOS_0                    /*!< Select voltage scale 3 */
0202 #define LL_PWR_REGU_VOLTAGE_SCALE2      PWR_D3CR_VOS_1                    /*!< Select voltage scale 2 */
0203 #define LL_PWR_REGU_VOLTAGE_SCALE1      (PWR_D3CR_VOS_0 | PWR_D3CR_VOS_1) /*!< Select voltage scale 1 */
0204 #if defined (SYSCFG_PWRCR_ODEN) /* STM32H74xxx and STM32H75xxx lines */
0205 #define LL_PWR_REGU_VOLTAGE_SCALE0      (PWR_D3CR_VOS_0 | PWR_D3CR_VOS_1) /*!< Select voltage scale 0 */
0206 #else
0207 #define LL_PWR_REGU_VOLTAGE_SCALE0      0x00000000U                       /*!< Select voltage scale 0 */
0208 #endif /* defined (SYSCFG_PWRCR_ODEN) */
0209 #else
0210 #define LL_PWR_REGU_VOLTAGE_SCALE3      0x00000000U                       /*!< Select voltage scale 3 */
0211 #define LL_PWR_REGU_VOLTAGE_SCALE2      PWR_D3CR_VOS_0                    /*!< Select voltage scale 2 */
0212 #define LL_PWR_REGU_VOLTAGE_SCALE1      PWR_D3CR_VOS_1                    /*!< Select voltage scale 1 */
0213 #define LL_PWR_REGU_VOLTAGE_SCALE0      (PWR_D3CR_VOS_0 | PWR_D3CR_VOS_1) /*!< Select voltage scale 0 */
0214 #endif /* PWR_CPUCR_PDDS_D2 */
0215 /**
0216   * @}
0217   */
0218 
0219 /** @defgroup PWR_LL_EC_STOP_MODE_REGU_VOLTAGE Stop mode Regulator Voltage Scaling
0220   * @ingroup RTEMSBSPsARMSTM32H7
0221   * @{
0222   */
0223 #define LL_PWR_REGU_VOLTAGE_SVOS_SCALE5   PWR_CR1_SVOS_0                    /*!< Select voltage scale 5 when system enters STOP mode */
0224 #define LL_PWR_REGU_VOLTAGE_SVOS_SCALE4   PWR_CR1_SVOS_1                    /*!< Select voltage scale 4 when system enters STOP mode */
0225 #define LL_PWR_REGU_VOLTAGE_SVOS_SCALE3   (PWR_CR1_SVOS_0 | PWR_CR1_SVOS_1) /*!< Select voltage scale 3 when system enters STOP mode */
0226 /**
0227   * @}
0228   */
0229 
0230 /** @defgroup PWR_LL_EC_REGU_MODE_DS_MODE  Regulator Mode In Deep Sleep Mode
0231   * @ingroup RTEMSBSPsARMSTM32H7
0232   * @{
0233   */
0234 #define LL_PWR_REGU_DSMODE_MAIN           0x00000000U   /*!< Voltage Regulator in main mode during deepsleep mode      */
0235 #define LL_PWR_REGU_DSMODE_LOW_POWER      PWR_CR1_LPDS  /*!< Voltage Regulator in low-power mode during deepsleep mode */
0236 /**
0237   * @}
0238   */
0239 
0240 /** @defgroup PWR_LL_EC_PVDLEVEL Power Digital Voltage Level Detector
0241   * @ingroup RTEMSBSPsARMSTM32H7
0242   * @{
0243   */
0244 #define LL_PWR_PVDLEVEL_0   PWR_CR1_PLS_LEV0  /*!< Voltage threshold detected by PVD 1.95 V */
0245 #define LL_PWR_PVDLEVEL_1   PWR_CR1_PLS_LEV1  /*!< Voltage threshold detected by PVD 2.1 V  */
0246 #define LL_PWR_PVDLEVEL_2   PWR_CR1_PLS_LEV2  /*!< Voltage threshold detected by PVD 2.25 V */
0247 #define LL_PWR_PVDLEVEL_3   PWR_CR1_PLS_LEV3  /*!< Voltage threshold detected by PVD 2.4 V  */
0248 #define LL_PWR_PVDLEVEL_4   PWR_CR1_PLS_LEV4  /*!< Voltage threshold detected by PVD 2.55 V */
0249 #define LL_PWR_PVDLEVEL_5   PWR_CR1_PLS_LEV5  /*!< Voltage threshold detected by PVD 2.7 V  */
0250 #define LL_PWR_PVDLEVEL_6   PWR_CR1_PLS_LEV6  /*!< Voltage threshold detected by PVD 2.85 V */
0251 #define LL_PWR_PVDLEVEL_7   PWR_CR1_PLS_LEV7  /*!< External voltage level on PVD_IN pin, compared to internal VREFINT level. */
0252 /**
0253   * @}
0254   */
0255 
0256 /** @defgroup PWR_LL_EC_AVDLEVEL Power Analog Voltage Level Detector
0257   * @ingroup RTEMSBSPsARMSTM32H7
0258   * @{
0259   */
0260 #define LL_PWR_AVDLEVEL_0   PWR_CR1_ALS_LEV0  /*!< Analog Voltage threshold detected by AVD 1.7 V */
0261 #define LL_PWR_AVDLEVEL_1   PWR_CR1_ALS_LEV1  /*!< Analog Voltage threshold detected by AVD 2.1 V */
0262 #define LL_PWR_AVDLEVEL_2   PWR_CR1_ALS_LEV2  /*!< Analog Voltage threshold detected by AVD 2.5 V */
0263 #define LL_PWR_AVDLEVEL_3   PWR_CR1_ALS_LEV3  /*!< Analog Voltage threshold detected by AVD 2.8 V */
0264 
0265 /**
0266   * @}
0267   */
0268 
0269 /** @defgroup PWR_LL_EC_BATT_CHARG_RESISTOR Battery Charge Resistor
0270   * @ingroup RTEMSBSPsARMSTM32H7
0271   * @{
0272   */
0273 #define LL_PWR_BATT_CHARG_RESISTOR_5K     0x00000000U   /*!< Charge the Battery through a 5 kO resistor    */
0274 #define LL_PWR_BATT_CHARGRESISTOR_1_5K    PWR_CR3_VBRS  /*!< Charge the Battery through a 1.5 kO resistor  */
0275 /**
0276   * @}
0277   */
0278 
0279 /** @defgroup PWR_LL_EC_WAKEUP_PIN  Wakeup Pins
0280   * @ingroup RTEMSBSPsARMSTM32H7
0281   * @{
0282   */
0283 #define LL_PWR_WAKEUP_PIN1    PWR_WKUPEPR_WKUPEN1  /*!< Wake-Up pin 1 : PA0  */
0284 #define LL_PWR_WAKEUP_PIN2    PWR_WKUPEPR_WKUPEN2  /*!< Wake-Up pin 2 : PA2  */
0285 #if defined (PWR_WKUPEPR_WKUPEN3)
0286 #define LL_PWR_WAKEUP_PIN3    PWR_WKUPEPR_WKUPEN3  /*!< Wake-Up pin 3 : PI8  */
0287 #endif /* defined (PWR_WKUPEPR_WKUPEN3) */
0288 #define LL_PWR_WAKEUP_PIN4    PWR_WKUPEPR_WKUPEN4  /*!< Wake-Up pin 4 : PC13 */
0289 #if defined (PWR_WKUPEPR_WKUPEN5)
0290 #define LL_PWR_WAKEUP_PIN5    PWR_WKUPEPR_WKUPEN5  /*!< Wake-Up pin 5 : PI11 */
0291 #endif /* defined (PWR_WKUPEPR_WKUPEN5) */
0292 #define LL_PWR_WAKEUP_PIN6    PWR_WKUPEPR_WKUPEN6  /*!< Wake-Up pin 6 : PC1  */
0293 /**
0294   * @}
0295   */
0296 
0297 /** @defgroup PWR_LL_EC_WAKEUP_PIN_PULL  Wakeup Pins pull configuration
0298   * @ingroup RTEMSBSPsARMSTM32H7
0299   * @{
0300   */
0301 #define LL_PWR_WAKEUP_PIN_NOPULL      0x00000000UL   /*!< Configure Wake-Up pin in no pull   */
0302 #define LL_PWR_WAKEUP_PIN_PULLUP      0x00000001UL   /*!< Configure Wake-Up pin in pull Up   */
0303 #define LL_PWR_WAKEUP_PIN_PULLDOWN    0x00000002UL   /*!< Configure Wake-Up pin in pull Down */
0304 /**
0305   * @}
0306   */
0307 
0308 /** @defgroup PWR_LL_EC_SUPPLY_PWR Power supply source configuration
0309   * @ingroup RTEMSBSPsARMSTM32H7
0310   * @{
0311   */
0312 #define LL_PWR_LDO_SUPPLY                     PWR_CR3_LDOEN                                                               /*!< Core domains are supplied from the LDO                                                                     */
0313 #if defined (SMPS)
0314 #define LL_PWR_DIRECT_SMPS_SUPPLY             PWR_CR3_SMPSEN                                                              /*!< Core domains are supplied from the SMPS                                                                    */
0315 #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                                       */
0316 #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                                       */
0317 #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 supplied from the LDO */
0318 #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 supplied from the LDO */
0319 #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                            */
0320 #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                            */
0321 #endif /* SMPS */
0322 #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                    */
0323 /**
0324   * @}
0325   */
0326 
0327 /**
0328   * @}
0329   */
0330 /* Exported macro ------------------------------------------------------------*/
0331 /** @defgroup PWR_LL_Exported_Macros PWR Exported Macros
0332   * @ingroup RTEMSBSPsARMSTM32H7
0333   * @{
0334   */
0335 
0336 /** @defgroup PWR_LL_EM_WRITE_READ Common write and read registers Macros
0337   * @ingroup RTEMSBSPsARMSTM32H7
0338   * @{
0339   */
0340 
0341 /**
0342   * @brief  Write a value in PWR register
0343   * @param  __REG__ Register to be written
0344   * @param  __VALUE__ Value to be written in the register
0345   * @retval None
0346   */
0347 #define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__))
0348 
0349 /**
0350   * @brief  Read a value in PWR register
0351   * @param  __REG__ Register to be read
0352   * @retval Register value
0353   */
0354 #define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__)
0355 /**
0356   * @}
0357   */
0358 
0359 /**
0360   * @}
0361   */
0362 /* Exported functions --------------------------------------------------------*/
0363 /** @defgroup PWR_LL_Exported_Functions PWR Exported Functions
0364   * @ingroup RTEMSBSPsARMSTM32H7
0365   * @{
0366   */
0367 
0368 /** @defgroup PWR_LL_EF_Configuration Configuration
0369   * @ingroup RTEMSBSPsARMSTM32H7
0370   * @{
0371   */
0372 
0373   /**
0374   * @brief  Set the voltage Regulator mode during deep sleep mode
0375   * @rmtoll CR1    LPDS         LL_PWR_SetRegulModeDS
0376   * @param  RegulMode This parameter can be one of the following values:
0377   *         @arg @ref LL_PWR_REGU_DSMODE_MAIN
0378   *         @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER
0379   * @retval None
0380   */
0381 __STATIC_INLINE void LL_PWR_SetRegulModeDS(uint32_t RegulMode)
0382 {
0383   MODIFY_REG(PWR->CR1, PWR_CR1_LPDS, RegulMode);
0384 }
0385 
0386 /**
0387   * @brief  Get the voltage Regulator mode during deep sleep mode
0388   * @rmtoll CR1    LPDS         LL_PWR_GetRegulModeDS
0389   * @retval Returned value can be one of the following values:
0390   *         @arg @ref LL_PWR_REGU_DSMODE_MAIN
0391   *         @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER
0392   */
0393 __STATIC_INLINE uint32_t LL_PWR_GetRegulModeDS(void)
0394 {
0395   return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_LPDS));
0396 }
0397 
0398 /**
0399   * @brief  Enable Power Voltage Detector
0400   * @rmtoll CR1    PVDEN       LL_PWR_EnablePVD
0401   * @retval None
0402   */
0403 __STATIC_INLINE void LL_PWR_EnablePVD(void)
0404 {
0405   SET_BIT(PWR->CR1, PWR_CR1_PVDEN);
0406 }
0407 
0408 /**
0409   * @brief  Disable Power Voltage Detector
0410   * @rmtoll CR1    PVDEN       LL_PWR_DisablePVD
0411   * @retval None
0412   */
0413 __STATIC_INLINE void LL_PWR_DisablePVD(void)
0414 {
0415   CLEAR_BIT(PWR->CR1, PWR_CR1_PVDEN);
0416 }
0417 
0418 /**
0419   * @brief  Check if Power Voltage Detector is enabled
0420   * @rmtoll CR1    PVDEN       LL_PWR_IsEnabledPVD
0421   * @retval State of bit (1 or 0).
0422   */
0423 __STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(void)
0424 {
0425   return ((READ_BIT(PWR->CR1, PWR_CR1_PVDEN) == (PWR_CR1_PVDEN)) ? 1UL : 0UL);
0426 }
0427 
0428 /**
0429   * @brief  Configure the voltage threshold detected by the Power Voltage Detector
0430   * @rmtoll CR1    PLS       LL_PWR_SetPVDLevel
0431   * @param  PVDLevel This parameter can be one of the following values:
0432   *         @arg @ref LL_PWR_PVDLEVEL_0
0433   *         @arg @ref LL_PWR_PVDLEVEL_1
0434   *         @arg @ref LL_PWR_PVDLEVEL_2
0435   *         @arg @ref LL_PWR_PVDLEVEL_3
0436   *         @arg @ref LL_PWR_PVDLEVEL_4
0437   *         @arg @ref LL_PWR_PVDLEVEL_5
0438   *         @arg @ref LL_PWR_PVDLEVEL_6
0439   *         @arg @ref LL_PWR_PVDLEVEL_7
0440   * @retval None
0441   */
0442 __STATIC_INLINE void LL_PWR_SetPVDLevel(uint32_t PVDLevel)
0443 {
0444   MODIFY_REG(PWR->CR1, PWR_CR1_PLS, PVDLevel);
0445 }
0446 
0447 /**
0448   * @brief  Get the voltage threshold detection
0449   * @rmtoll CR1    PLS       LL_PWR_GetPVDLevel
0450   * @retval Returned value can be one of the following values:
0451   *         @arg @ref LL_PWR_PVDLEVEL_0
0452   *         @arg @ref LL_PWR_PVDLEVEL_1
0453   *         @arg @ref LL_PWR_PVDLEVEL_2
0454   *         @arg @ref LL_PWR_PVDLEVEL_3
0455   *         @arg @ref LL_PWR_PVDLEVEL_4
0456   *         @arg @ref LL_PWR_PVDLEVEL_5
0457   *         @arg @ref LL_PWR_PVDLEVEL_6
0458   *         @arg @ref LL_PWR_PVDLEVEL_7
0459   */
0460 __STATIC_INLINE uint32_t LL_PWR_GetPVDLevel(void)
0461 {
0462   return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_PLS));
0463 }
0464 
0465 /**
0466   * @brief  Enable access to the backup domain
0467   * @rmtoll CR1    DBP       LL_PWR_EnableBkUpAccess
0468   * @retval None
0469   */
0470 __STATIC_INLINE void LL_PWR_EnableBkUpAccess(void)
0471 {
0472   SET_BIT(PWR->CR1, PWR_CR1_DBP);
0473 }
0474 
0475 /**
0476   * @brief  Disable access to the backup domain
0477   * @rmtoll CR1    DBP       LL_PWR_DisableBkUpAccess
0478   * @retval None
0479   */
0480 __STATIC_INLINE void LL_PWR_DisableBkUpAccess(void)
0481 {
0482   CLEAR_BIT(PWR->CR1, PWR_CR1_DBP);
0483 }
0484 
0485 /**
0486   * @brief  Check if the backup domain is enabled
0487   * @rmtoll CR1    DBP       LL_PWR_IsEnabledBkUpAccess
0488   * @retval State of bit (1 or 0).
0489   */
0490 __STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void)
0491 {
0492   return ((READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP)) ? 1UL : 0UL);
0493 }
0494 
0495 /**
0496   * @brief  Enable the Flash Power Down in Stop Mode
0497   * @rmtoll CR1    FLPS       LL_PWR_EnableFlashPowerDown
0498   * @retval None
0499   */
0500 __STATIC_INLINE void LL_PWR_EnableFlashPowerDown(void)
0501 {
0502   SET_BIT(PWR->CR1, PWR_CR1_FLPS);
0503 }
0504 
0505 /**
0506   * @brief  Disable the Flash Power Down in Stop Mode
0507   * @rmtoll CR1    FLPS       LL_PWR_DisableFlashPowerDown
0508   * @retval None
0509   */
0510 __STATIC_INLINE void LL_PWR_DisableFlashPowerDown(void)
0511 {
0512   CLEAR_BIT(PWR->CR1, PWR_CR1_FLPS);
0513 }
0514 
0515 /**
0516   * @brief  Check if the Flash Power Down in Stop Mode is enabled
0517   * @rmtoll CR1    FLPS       LL_PWR_IsEnabledFlashPowerDown
0518   * @retval State of bit (1 or 0).
0519   */
0520 __STATIC_INLINE uint32_t LL_PWR_IsEnabledFlashPowerDown(void)
0521 {
0522   return ((READ_BIT(PWR->CR1, PWR_CR1_FLPS) == (PWR_CR1_FLPS)) ? 1UL : 0UL);
0523 }
0524 
0525 #if defined (PWR_CR1_BOOSTE)
0526 /**
0527   * @brief  Enable the Analog Voltage Booster (VDDA)
0528   * @rmtoll CR1    BOOSTE     LL_PWR_EnableAnalogBooster
0529   * @retval None
0530   */
0531 __STATIC_INLINE void LL_PWR_EnableAnalogBooster(void)
0532 {
0533   SET_BIT(PWR->CR1, PWR_CR1_BOOSTE);
0534 }
0535 
0536 /**
0537   * @brief  Disable the Analog Voltage Booster (VDDA)
0538   * @rmtoll CR1    BOOSTE     LL_PWR_DisableAnalogBooster
0539   * @retval None
0540   */
0541 __STATIC_INLINE void LL_PWR_DisableAnalogBooster(void)
0542 {
0543   CLEAR_BIT(PWR->CR1, PWR_CR1_BOOSTE);
0544 }
0545 
0546 /**
0547   * @brief  Check if the Analog Voltage Booster (VDDA) is enabled
0548   * @rmtoll CR1    BOOSTE     LL_PWR_IsEnabledAnalogBooster
0549   * @retval State of bit (1 or 0).
0550   */
0551 __STATIC_INLINE uint32_t LL_PWR_IsEnabledAnalogBooster(void)
0552 {
0553   return ((READ_BIT(PWR->CR1, PWR_CR1_BOOSTE) == (PWR_CR1_BOOSTE)) ? 1UL : 0UL);
0554 }
0555 #endif /* PWR_CR1_BOOSTE */
0556 
0557 #if defined (PWR_CR1_AVD_READY)
0558 /**
0559   * @brief  Enable the Analog Voltage Ready to isolate the BOOST IP until VDDA will be ready
0560   * @rmtoll CR1    AVD_READY  LL_PWR_EnableAnalogVoltageReady
0561   * @retval None
0562   */
0563 __STATIC_INLINE void LL_PWR_EnableAnalogVoltageReady(void)
0564 {
0565   SET_BIT(PWR->CR1, PWR_CR1_AVD_READY);
0566 }
0567 
0568 /**
0569   * @brief  Disable the Analog Voltage Ready (VDDA)
0570   * @rmtoll CR1    AVD_READY  LL_PWR_DisableAnalogVoltageReady
0571   * @retval None
0572   */
0573 __STATIC_INLINE void LL_PWR_DisableAnalogVoltageReady(void)
0574 {
0575   CLEAR_BIT(PWR->CR1, PWR_CR1_AVD_READY);
0576 }
0577 
0578 /**
0579   * @brief  Check if the Analog Voltage Booster (VDDA) is enabled
0580   * @rmtoll CR1    AVD_READY  LL_PWR_IsEnabledAnalogVoltageReady
0581   * @retval State of bit (1 or 0).
0582   */
0583 __STATIC_INLINE uint32_t LL_PWR_IsEnabledAnalogVoltageReady(void)
0584 {
0585   return ((READ_BIT(PWR->CR1, PWR_CR1_AVD_READY) == (PWR_CR1_AVD_READY)) ? 1UL : 0UL);
0586 }
0587 #endif /* PWR_CR1_AVD_READY */
0588 
0589 /**
0590   * @brief  Set the internal Regulator output voltage in STOP mode
0591   * @rmtoll CR1    SVOS       LL_PWR_SetStopModeRegulVoltageScaling
0592   * @param  VoltageScaling This parameter can be one of the following values:
0593   *         @arg @ref LL_PWR_REGU_VOLTAGE_SVOS_SCALE3
0594   *         @arg @ref LL_PWR_REGU_VOLTAGE_SVOS_SCALE4
0595   *         @arg @ref LL_PWR_REGU_VOLTAGE_SVOS_SCALE5
0596   * @retval None
0597   */
0598 __STATIC_INLINE void LL_PWR_SetStopModeRegulVoltageScaling(uint32_t VoltageScaling)
0599 {
0600   MODIFY_REG(PWR->CR1, PWR_CR1_SVOS, VoltageScaling);
0601 }
0602 
0603 /**
0604   * @brief  Get the internal Regulator output voltage in STOP mode
0605   * @rmtoll CR1    SVOS       LL_PWR_GetStopModeRegulVoltageScaling
0606   * @retval Returned value can be one of the following values:
0607   *         @arg @ref LL_PWR_REGU_VOLTAGE_SVOS_SCALE3
0608   *         @arg @ref LL_PWR_REGU_VOLTAGE_SVOS_SCALE4
0609   *         @arg @ref LL_PWR_REGU_VOLTAGE_SVOS_SCALE5
0610   */
0611 __STATIC_INLINE uint32_t LL_PWR_GetStopModeRegulVoltageScaling(void)
0612 {
0613   return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_SVOS));
0614 }
0615 
0616 /**
0617   * @brief  Enable Analog Power Voltage Detector
0618   * @rmtoll CR1    AVDEN       LL_PWR_EnableAVD
0619   * @retval None
0620   */
0621 __STATIC_INLINE void LL_PWR_EnableAVD(void)
0622 {
0623   SET_BIT(PWR->CR1, PWR_CR1_AVDEN);
0624 }
0625 
0626 /**
0627   * @brief  Disable Analog Power Voltage Detector
0628   * @rmtoll CR1    AVDEN       LL_PWR_DisableAVD
0629   * @retval None
0630   */
0631 __STATIC_INLINE void LL_PWR_DisableAVD(void)
0632 {
0633   CLEAR_BIT(PWR->CR1, PWR_CR1_AVDEN);
0634 }
0635 
0636 /**
0637   * @brief  Check if Analog Power Voltage Detector is enabled
0638   * @rmtoll CR1    AVDEN       LL_PWR_IsEnabledAVD
0639   * @retval State of bit (1 or 0).
0640   */
0641 __STATIC_INLINE uint32_t LL_PWR_IsEnabledAVD(void)
0642 {
0643   return ((READ_BIT(PWR->CR1, PWR_CR1_AVDEN) == (PWR_CR1_AVDEN)) ? 1UL : 0UL);
0644 }
0645 
0646 /**
0647   * @brief  Configure the voltage threshold to be detected by the Analog Power Voltage Detector
0648   * @rmtoll CR1    ALS       LL_PWR_SetAVDLevel
0649   * @param  AVDLevel This parameter can be one of the following values:
0650   *         @arg @ref LL_PWR_AVDLEVEL_0
0651   *         @arg @ref LL_PWR_AVDLEVEL_1
0652   *         @arg @ref LL_PWR_AVDLEVEL_2
0653   *         @arg @ref LL_PWR_AVDLEVEL_3
0654   * @retval None
0655   */
0656 __STATIC_INLINE void LL_PWR_SetAVDLevel(uint32_t AVDLevel)
0657 {
0658   MODIFY_REG(PWR->CR1, PWR_CR1_ALS, AVDLevel);
0659 }
0660 
0661 /**
0662   * @brief  Get the Analog Voltage threshold to be detected by the Analog Power Voltage Detector
0663   * @rmtoll CR1    ALS       LL_PWR_GetAVDLevel
0664   * @retval Returned value can be one of the following values:
0665   *         @arg @ref LL_PWR_AVDLEVEL_0
0666   *         @arg @ref LL_PWR_AVDLEVEL_1
0667   *         @arg @ref LL_PWR_AVDLEVEL_2
0668   *         @arg @ref LL_PWR_AVDLEVEL_3
0669   */
0670 __STATIC_INLINE uint32_t LL_PWR_GetAVDLevel(void)
0671 {
0672   return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_ALS));
0673 }
0674 
0675 #if defined (PWR_CR1_AXIRAM1SO)
0676 /**
0677   * @brief  Enable the AXI RAM1 shut-off in DStop/DStop2 mode
0678   * @rmtoll CR1    AXIRAM1SO     LL_PWR_EnableAXIRAM1ShutOff
0679   * @retval None
0680   */
0681 __STATIC_INLINE void LL_PWR_EnableAXIRAM1ShutOff(void)
0682 {
0683   SET_BIT(PWR->CR1, PWR_CR1_AXIRAM1SO);
0684 }
0685 
0686 /**
0687   * @brief  Disable the AXI RAM1 shut-off in DStop/DStop2 mode
0688   * @rmtoll CR1    AXIRAM1SO     LL_PWR_DisableAXIRAM1ShutOff
0689   * @retval None
0690   */
0691 __STATIC_INLINE void LL_PWR_DisableAXIRAM1ShutOff(void)
0692 {
0693   CLEAR_BIT(PWR->CR1, PWR_CR1_AXIRAM1SO);
0694 }
0695 
0696 /**
0697   * @brief  Check if the AXI RAM1 shut-off in DStop/DStop2 mode is enabled
0698   * @rmtoll CR1    AXIRAM1SO     LL_PWR_IsEnabledAXIRAM1ShutOff
0699   * @retval State of bit (1 or 0).
0700   */
0701 __STATIC_INLINE uint32_t LL_PWR_IsEnabledAXIRAM1ShutOff(void)
0702 {
0703   return ((READ_BIT(PWR->CR1, PWR_CR1_AXIRAM1SO) == (PWR_CR1_AXIRAM1SO)) ? 1UL : 0UL);
0704 }
0705 #endif /* PWR_CR1_AXIRAM1SO */
0706 
0707 #if defined (PWR_CR1_AXIRAM2SO)
0708 /**
0709   * @brief  Enable the AXI RAM2 shut-off in DStop/DStop2 mode
0710   * @rmtoll CR1    AXIRAM2SO     LL_PWR_EnableAXIRAM2ShutOff
0711   * @retval None
0712   */
0713 __STATIC_INLINE void LL_PWR_EnableAXIRAM2ShutOff(void)
0714 {
0715   SET_BIT(PWR->CR1, PWR_CR1_AXIRAM2SO);
0716 }
0717 
0718 /**
0719   * @brief  Disable the AXI RAM2 shut-off in DStop/DStop2 mode
0720   * @rmtoll CR1    AXIRAM2SO     LL_PWR_DisableAXIRAM2ShutOff
0721   * @retval None
0722   */
0723 __STATIC_INLINE void LL_PWR_DisableAXIRAM2ShutOff(void)
0724 {
0725   CLEAR_BIT(PWR->CR1, PWR_CR1_AXIRAM2SO);
0726 }
0727 
0728 /**
0729   * @brief  Check if the AXI RAM2 shut-off in DStop/DStop2 mode is enabled
0730   * @rmtoll CR1    AXIRAM2SO     LL_PWR_IsEnabledAXIRAM2ShutOff
0731   * @retval State of bit (1 or 0).
0732   */
0733 __STATIC_INLINE uint32_t LL_PWR_IsEnabledAXIRAM2ShutOff(void)
0734 {
0735   return ((READ_BIT(PWR->CR1, PWR_CR1_AXIRAM2SO) == (PWR_CR1_AXIRAM2SO)) ? 1UL : 0UL);
0736 }
0737 #endif /* PWR_CR1_AXIRAM2SO */
0738 
0739 #if defined (PWR_CR1_AXIRAM3SO)
0740 /**
0741   * @brief  Enable the AXI RAM3 shut-off in DStop/DStop2 mode
0742   * @rmtoll CR1    AXIRAM3SO     LL_PWR_EnableAXIRAM3ShutOff
0743   * @retval None
0744   */
0745 __STATIC_INLINE void LL_PWR_EnableAXIRAM3ShutOff(void)
0746 {
0747   SET_BIT(PWR->CR1, PWR_CR1_AXIRAM3SO);
0748 }
0749 
0750 /**
0751   * @brief  Disable the AXI RAM3 shut-off in DStop/DStop2 mode
0752   * @rmtoll CR1    AXIRAM3SO     LL_PWR_DisableAXIRAM3ShutOff
0753   * @retval None
0754   */
0755 __STATIC_INLINE void LL_PWR_DisableAXIRAM3ShutOff(void)
0756 {
0757   CLEAR_BIT(PWR->CR1, PWR_CR1_AXIRAM3SO);
0758 }
0759 
0760 /**
0761   * @brief  Check if the AXI RAM3 shut-off in DStop/DStop2 mode is enabled
0762   * @rmtoll CR1    AXIRAM3SO     LL_PWR_IsEnabledAXIRAM3ShutOff
0763   * @retval State of bit (1 or 0).
0764   */
0765 __STATIC_INLINE uint32_t LL_PWR_IsEnabledAXIRAM3ShutOff(void)
0766 {
0767   return ((READ_BIT(PWR->CR1, PWR_CR1_AXIRAM3SO) == (PWR_CR1_AXIRAM3SO)) ? 1UL : 0UL);
0768 }
0769 #endif /* PWR_CR1_AXIRAM3SO */
0770 
0771 #if defined (PWR_CR1_AHBRAM1SO)
0772 /**
0773   * @brief  Enable the AHB RAM1 shut-off in DStop/DStop2 mode
0774   * @rmtoll CR1    AHBRAM1SO     LL_PWR_EnableAHBRAM1ShutOff
0775   * @retval None
0776   */
0777 __STATIC_INLINE void LL_PWR_EnableAHBRAM1ShutOff(void)
0778 {
0779   SET_BIT(PWR->CR1, PWR_CR1_AHBRAM1SO);
0780 }
0781 
0782 /**
0783   * @brief  Disable the AHB RAM1 shut-off in DStop/DStop2 mode
0784   * @rmtoll CR1    AHBRAM1SO     LL_PWR_DisableAHBRAM1ShutOff
0785   * @retval None
0786   */
0787 __STATIC_INLINE void LL_PWR_DisableAHBRAM1ShutOff(void)
0788 {
0789   CLEAR_BIT(PWR->CR1, PWR_CR1_AHBRAM1SO);
0790 }
0791 
0792 /**
0793   * @brief  Check if the AHB RAM1 shut-off in DStop/DStop2 mode is enabled
0794   * @rmtoll CR1    AHBRAM1SO     LL_PWR_IsEnabledAHBRAM1ShutOff
0795   * @retval State of bit (1 or 0).
0796   */
0797 __STATIC_INLINE uint32_t LL_PWR_IsEnabledAHBRAM1ShutOff(void)
0798 {
0799   return ((READ_BIT(PWR->CR1, PWR_CR1_AHBRAM1SO) == (PWR_CR1_AHBRAM1SO)) ? 1UL : 0UL);
0800 }
0801 #endif /* PWR_CR1_AHBRAM1SO */
0802 
0803 #if defined (PWR_CR1_AHBRAM2SO)
0804 /**
0805   * @brief  Enable the AHB RAM2 shut-off in DStop/DStop2 mode
0806   * @rmtoll CR1    AHBRAM2SO     LL_PWR_EnableAHBRAM2ShutOff
0807   * @retval None
0808   */
0809 __STATIC_INLINE void LL_PWR_EnableAHBRAM2ShutOff(void)
0810 {
0811   SET_BIT(PWR->CR1, PWR_CR1_AHBRAM2SO);
0812 }
0813 
0814 /**
0815   * @brief  Disable the AHB RAM2 shut-off in DStop/DStop2 mode
0816   * @rmtoll CR1    AHBRAM2SO     LL_PWR_DisableAHBRAM2ShutOff
0817   * @retval None
0818   */
0819 __STATIC_INLINE void LL_PWR_DisableAHBRAM2ShutOff(void)
0820 {
0821   CLEAR_BIT(PWR->CR1, PWR_CR1_AHBRAM2SO);
0822 }
0823 
0824 /**
0825   * @brief  Check if the AHB RAM2 shut-off in DStop/DStop2 mode is enabled
0826   * @rmtoll CR1    AHBRAM2SO     LL_PWR_IsEnabledAHBRAM2ShutOff
0827   * @retval State of bit (1 or 0).
0828   */
0829 __STATIC_INLINE uint32_t LL_PWR_IsEnabledAHBRAM2ShutOff(void)
0830 {
0831   return ((READ_BIT(PWR->CR1, PWR_CR1_AHBRAM2SO) == (PWR_CR1_AHBRAM2SO)) ? 1UL : 0UL);
0832 }
0833 #endif /* PWR_CR1_AHBRAM2SO */
0834 
0835 #if defined (PWR_CR1_ITCMSO)
0836 /**
0837   * @brief  Enable the ITCM shut-off in DStop/DStop2 mode
0838   * @rmtoll CR1    ITCMSO     LL_PWR_EnableITCMSOShutOff
0839   * @retval None
0840   */
0841 __STATIC_INLINE void LL_PWR_EnableITCMSOShutOff(void)
0842 {
0843   SET_BIT(PWR->CR1, PWR_CR1_ITCMSO);
0844 }
0845 
0846 /**
0847   * @brief  Disable the ITCM shut-off in DStop/DStop2 mode
0848   * @rmtoll CR1    ITCMSO     LL_PWR_DisableITCMSOShutOff
0849   * @retval None
0850   */
0851 __STATIC_INLINE void LL_PWR_DisableITCMSOShutOff(void)
0852 {
0853   CLEAR_BIT(PWR->CR1, PWR_CR1_ITCMSO);
0854 }
0855 
0856 /**
0857   * @brief  Check if the ITCM shut-off in DStop/DStop2 mode is enabled
0858   * @rmtoll CR1    ITCMSO     LL_PWR_IsEnabledITCMShutOff
0859   * @retval State of bit (1 or 0).
0860   */
0861 __STATIC_INLINE uint32_t LL_PWR_IsEnabledITCMShutOff(void)
0862 {
0863   return ((READ_BIT(PWR->CR1, PWR_CR1_ITCMSO) == (PWR_CR1_ITCMSO)) ? 1UL : 0UL);
0864 }
0865 #endif /* PWR_CR1_ITCMSO */
0866 
0867 #if defined (PWR_CR1_HSITFSO)
0868 /**
0869   * @brief  Enable the USB and FDCAN shut-off in DStop/DStop2 mode
0870   * @rmtoll CR1    HSITFSO     LL_PWR_EnableHSITFShutOff
0871   * @retval None
0872   */
0873 __STATIC_INLINE void LL_PWR_EnableHSITFShutOff(void)
0874 {
0875   SET_BIT(PWR->CR1, PWR_CR1_HSITFSO);
0876 }
0877 
0878 /**
0879   * @brief  Disable the USB and FDCAN shut-off in DStop/DStop2 mode
0880   * @rmtoll CR1    HSITFSO     LL_PWR_DisableHSITFShutOff
0881   * @retval None
0882   */
0883 __STATIC_INLINE void LL_PWR_DisableHSITFShutOff(void)
0884 {
0885   CLEAR_BIT(PWR->CR1, PWR_CR1_HSITFSO);
0886 }
0887 
0888 /**
0889   * @brief  Check if the USB and FDCAN shut-off in DStop/DStop2 mode is enabled
0890   * @rmtoll CR1    HSITFSO     LL_PWR_IsEnabledHSITFShutOff
0891   * @retval State of bit (1 or 0).
0892   */
0893 __STATIC_INLINE uint32_t LL_PWR_IsEnabledHSITFShutOff(void)
0894 {
0895   return ((READ_BIT(PWR->CR1, PWR_CR1_HSITFSO) == (PWR_CR1_HSITFSO)) ? 1UL : 0UL);
0896 }
0897 #endif /* PWR_CR1_HSITFSO */
0898 
0899 #if defined (PWR_CR1_SRDRAMSO)
0900 /**
0901   * @brief  Enable the SRD AHB RAM shut-off in DStop/DStop2 mode
0902   * @rmtoll CR1    SRDRAMSO     LL_PWR_EnableSRDRAMShutOff
0903   * @retval None
0904   */
0905 __STATIC_INLINE void LL_PWR_EnableSRDRAMShutOff(void)
0906 {
0907   SET_BIT(PWR->CR1, PWR_CR1_SRDRAMSO);
0908 }
0909 
0910 /**
0911   * @brief  Disable the SRD AHB RAM shut-off in DStop/DStop2 mode
0912   * @rmtoll CR1    SRDRAMSO     LL_PWR_DisableSRDRAMShutOff
0913   * @retval None
0914   */
0915 __STATIC_INLINE void LL_PWR_DisableSRDRAMShutOff(void)
0916 {
0917   CLEAR_BIT(PWR->CR1, PWR_CR1_SRDRAMSO);
0918 }
0919 
0920 /**
0921   * @brief  Check if the SRD AHB RAM shut-off in DStop/DStop2 mode is enabled
0922   * @rmtoll CR1    SRDRAMSO     LL_PWR_IsEnabledSRDRAMShutOff
0923   * @retval State of bit (1 or 0).
0924   */
0925 __STATIC_INLINE uint32_t LL_PWR_IsEnabledSRDRAMShutOff(void)
0926 {
0927   return ((READ_BIT(PWR->CR1, PWR_CR1_SRDRAMSO) == (PWR_CR1_SRDRAMSO)) ? 1UL : 0UL);
0928 }
0929 #endif /* PWR_CR1_SRDRAMSO */
0930 
0931 /**
0932   * @brief  Enable Backup Regulator
0933   * @rmtoll CR2    BREN       LL_PWR_EnableBkUpRegulator
0934   * @note When set, the Backup Regulator (used to maintain backup SRAM content in Standby and
0935   *       VBAT modes) is enabled. If BRE is reset, the backup Regulator is switched off. The backup
0936   *       SRAM can still be used but its content will be lost in the Standby and VBAT modes. Once set,
0937   *       the application must wait that the Backup Regulator Ready flag (BRR) is set to indicate that
0938   *       the data written into the RAM will be maintained in the Standby and VBAT modes.
0939   * @retval None
0940   */
0941 __STATIC_INLINE void LL_PWR_EnableBkUpRegulator(void)
0942 {
0943   SET_BIT(PWR->CR2, PWR_CR2_BREN);
0944 }
0945 
0946 /**
0947   * @brief  Disable Backup Regulator
0948   * @rmtoll CR2    BREN       LL_PWR_DisableBkUpRegulator
0949   * @retval None
0950   */
0951 __STATIC_INLINE void LL_PWR_DisableBkUpRegulator(void)
0952 {
0953   CLEAR_BIT(PWR->CR2, PWR_CR2_BREN);
0954 }
0955 
0956 /**
0957   * @brief  Check if the backup Regulator is enabled
0958   * @rmtoll CR2    BREN      LL_PWR_IsEnabledBkUpRegulator
0959   * @retval State of bit (1 or 0).
0960   */
0961 __STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpRegulator(void)
0962 {
0963   return ((READ_BIT(PWR->CR2, PWR_CR2_BREN) == (PWR_CR2_BREN)) ? 1UL : 0UL);
0964 }
0965 
0966 /**
0967   * @brief  Enable VBAT and Temperature monitoring
0968   * @rmtoll CR2    MONEN       LL_PWR_EnableMonitoring
0969   * @retval None
0970   */
0971 __STATIC_INLINE void LL_PWR_EnableMonitoring(void)
0972 {
0973   SET_BIT(PWR->CR2, PWR_CR2_MONEN);
0974 }
0975 
0976 /**
0977   * @brief  Disable VBAT and Temperature monitoring
0978   * @rmtoll CR2    MONEN       LL_PWR_DisableMonitoring
0979   * @retval None
0980   */
0981 __STATIC_INLINE void LL_PWR_DisableMonitoring(void)
0982 {
0983   CLEAR_BIT(PWR->CR2, PWR_CR2_MONEN);
0984 }
0985 
0986 /**
0987   * @brief  Check if the VBAT and Temperature monitoring is enabled
0988   * @rmtoll CR2    MONEN      LL_PWR_IsEnabledMonitoring
0989   * @retval State of bit (1 or 0).
0990   */
0991 __STATIC_INLINE uint32_t LL_PWR_IsEnabledMonitoring(void)
0992 {
0993   return ((READ_BIT(PWR->CR2, PWR_CR2_MONEN) == (PWR_CR2_MONEN)) ? 1UL : 0UL);
0994 }
0995 
0996 #if defined (SMPS)
0997 /**
0998   * @brief  Configure the PWR supply
0999   * @rmtoll CR3          BYPASS          LL_PWR_ConfigSupply
1000   * @rmtoll CR3          LDOEN           LL_PWR_ConfigSupply
1001   * @rmtoll CR3          SMPSEN          LL_PWR_ConfigSupply
1002   * @rmtoll CR3          SMPSEXTHP       LL_PWR_ConfigSupply
1003   * @rmtoll CR3          SMPSLEVEL       LL_PWR_ConfigSupply
1004   * @param  SupplySource This parameter can be one of the following values:
1005   *         @arg @ref LL_PWR_LDO_SUPPLY
1006   *         @arg @ref LL_PWR_DIRECT_SMPS_SUPPLY
1007   *         @arg @ref LL_PWR_SMPS_1V8_SUPPLIES_LDO
1008   *         @arg @ref LL_PWR_SMPS_2V5_SUPPLIES_LDO
1009   *         @arg @ref LL_PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO
1010   *         @arg @ref LL_PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO
1011   *         @arg @ref LL_PWR_SMPS_1V8_SUPPLIES_EXT
1012   *         @arg @ref LL_PWR_SMPS_2V5_SUPPLIES_EXT
1013   *         @arg @ref LL_PWR_EXTERNAL_SOURCE_SUPPLY
1014   * @retval None
1015   */
1016 __STATIC_INLINE void LL_PWR_ConfigSupply(uint32_t SupplySource)
1017 {
1018   /* Set the power supply configuration */
1019   MODIFY_REG(PWR->CR3, (PWR_CR3_SMPSLEVEL | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS), SupplySource);
1020 }
1021 #else
1022 /**
1023   * @brief  Configure the PWR supply
1024   * @rmtoll CR3          BYPASS          LL_PWR_ConfigSupply
1025   * @rmtoll CR3          LDOEN           LL_PWR_ConfigSupply
1026   * @rmtoll CR3          SCUEN           LL_PWR_ConfigSupply
1027   * @param  SupplySource This parameter can be one of the following values:
1028   *         @arg @ref LL_PWR_LDO_SUPPLY
1029   *         @arg @ref LL_PWR_EXTERNAL_SOURCE_SUPPLY
1030   * @retval None
1031   */
1032 __STATIC_INLINE void LL_PWR_ConfigSupply(uint32_t SupplySource)
1033 {
1034   /* Set the power supply configuration */
1035   MODIFY_REG(PWR->CR3, (PWR_CR3_SCUEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS), SupplySource);
1036 }
1037 #endif /* defined (SMPS) */
1038 
1039 #if defined (SMPS)
1040 /**
1041   * @brief  Get the PWR supply
1042   * @rmtoll CR3          BYPASS          LL_PWR_GetSupply
1043   * @rmtoll CR3          LDOEN           LL_PWR_GetSupply
1044   * @rmtoll CR3          SMPSEN          LL_PWR_GetSupply
1045   * @rmtoll CR3          SMPSEXTHP       LL_PWR_GetSupply
1046   * @rmtoll CR3          SMPSLEVEL       LL_PWR_GetSupply
1047   * @retval Returned value can be one of the following values:
1048   *         @arg @ref LL_PWR_LDO_SUPPLY
1049   *         @arg @ref LL_PWR_DIRECT_SMPS_SUPPLY
1050   *         @arg @ref LL_PWR_SMPS_1V8_SUPPLIES_LDO
1051   *         @arg @ref LL_PWR_SMPS_2V5_SUPPLIES_LDO
1052   *         @arg @ref LL_PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO
1053   *         @arg @ref LL_PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO
1054   *         @arg @ref LL_PWR_SMPS_1V8_SUPPLIES_EXT
1055   *         @arg @ref LL_PWR_SMPS_2V5_SUPPLIES_EXT
1056   *         @arg @ref LL_PWR_EXTERNAL_SOURCE_SUPPLY
1057   */
1058 __STATIC_INLINE uint32_t LL_PWR_GetSupply(void)
1059 {
1060   /* Get the power supply configuration */
1061   return(uint32_t)(READ_BIT(PWR->CR3, (PWR_CR3_SMPSLEVEL | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS)));
1062 }
1063 #else
1064 /**
1065   * @brief  Get the PWR supply
1066   * @rmtoll CR3          BYPASS          LL_PWR_GetSupply
1067   * @rmtoll CR3          LDOEN           LL_PWR_GetSupply
1068   * @rmtoll CR3          SCUEN           LL_PWR_GetSupply
1069   * @retval Returned value can be one of the following values:
1070   *         @arg @ref LL_PWR_LDO_SUPPLY
1071   *         @arg @ref LL_PWR_EXTERNAL_SOURCE_SUPPLY
1072   */
1073 __STATIC_INLINE uint32_t LL_PWR_GetSupply(void)
1074 {
1075   /* Get the power supply configuration */
1076   return(uint32_t)(READ_BIT(PWR->CR3, (PWR_CR3_SCUEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS)));
1077 }
1078 #endif /* defined (SMPS) */
1079 
1080 /**
1081   * @brief  Enable battery charging
1082   * @rmtoll CR3          VBE           LL_PWR_EnableBatteryCharging
1083   * @retval None
1084   */
1085 __STATIC_INLINE void LL_PWR_EnableBatteryCharging(void)
1086 {
1087   SET_BIT(PWR->CR3, PWR_CR3_VBE);
1088 }
1089 
1090 /**
1091   * @brief  Disable battery charging
1092   * @rmtoll CR3          VBE           LL_PWR_DisableBatteryCharging
1093   * @retval None
1094   */
1095 __STATIC_INLINE void LL_PWR_DisableBatteryCharging(void)
1096 {
1097   CLEAR_BIT(PWR->CR3, PWR_CR3_VBE);
1098 }
1099 
1100 /**
1101   * @brief  Check if battery charging is enabled
1102   * @rmtoll CR3          VBE           LL_PWR_IsEnabledBatteryCharging
1103   * @retval State of bit (1 or 0).
1104   */
1105 __STATIC_INLINE uint32_t LL_PWR_IsEnabledBatteryCharging(void)
1106 {
1107   return ((READ_BIT(PWR->CR3, PWR_CR3_VBE) == (PWR_CR3_VBE)) ? 1UL : 0UL);
1108 }
1109 
1110 /**
1111   * @brief  Set the Battery charge resistor impedance
1112   * @rmtoll CR3          VBRS          LL_PWR_SetBattChargResistor
1113   * @param  Resistor This parameter can be one of the following values:
1114   *         @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K
1115   *         @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K
1116   * @retval None
1117   */
1118 __STATIC_INLINE void LL_PWR_SetBattChargResistor(uint32_t Resistor)
1119 {
1120   MODIFY_REG(PWR->CR3, PWR_CR3_VBRS, Resistor);
1121 }
1122 
1123 /**
1124   * @brief  Get the Battery charge resistor impedance
1125   * @rmtoll CR3          VBRS          LL_PWR_GetBattChargResistor
1126   * @retval Returned value can be one of the following values:
1127   *         @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K
1128   *         @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K
1129   */
1130 __STATIC_INLINE uint32_t LL_PWR_GetBattChargResistor(void)
1131 {
1132   return (uint32_t)(READ_BIT(PWR->CR3, PWR_CR3_VBRS));
1133 }
1134 
1135 /**
1136   * @brief  Enable the USB regulator
1137   * @rmtoll CR3          USBREGEN           LL_PWR_EnableUSBReg
1138   * @retval None
1139   */
1140 __STATIC_INLINE void LL_PWR_EnableUSBReg(void)
1141 {
1142   SET_BIT(PWR->CR3, PWR_CR3_USBREGEN);
1143 }
1144 
1145 /**
1146   * @brief  Disable the USB regulator
1147   * @rmtoll CR3          USBREGEN           LL_PWR_DisableUSBReg
1148   * @retval None
1149   */
1150 __STATIC_INLINE void LL_PWR_DisableUSBReg(void)
1151 {
1152   CLEAR_BIT(PWR->CR3, PWR_CR3_USBREGEN);
1153 }
1154 
1155 /**
1156   * @brief  Check if the USB regulator is enabled
1157   * @rmtoll CR3          USBREGEN           LL_PWR_IsEnabledUSBReg
1158   * @retval State of bit (1 or 0).
1159   */
1160 __STATIC_INLINE uint32_t LL_PWR_IsEnabledUSBReg(void)
1161 {
1162   return ((READ_BIT(PWR->CR3, PWR_CR3_USBREGEN) == (PWR_CR3_USBREGEN)) ? 1UL : 0UL);
1163 }
1164 
1165 /**
1166   * @brief  Enable the USB voltage detector
1167   * @rmtoll CR3          USB33DEN           LL_PWR_EnableUSBVoltageDetector
1168   * @retval None
1169   */
1170 __STATIC_INLINE void LL_PWR_EnableUSBVoltageDetector(void)
1171 {
1172   SET_BIT(PWR->CR3, PWR_CR3_USB33DEN);
1173 }
1174 
1175 /**
1176   * @brief  Disable the USB voltage detector
1177   * @rmtoll CR3          USB33DEN           LL_PWR_DisableUSBVoltageDetector
1178   * @retval None
1179   */
1180 __STATIC_INLINE void LL_PWR_DisableUSBVoltageDetector(void)
1181 {
1182   CLEAR_BIT(PWR->CR3, PWR_CR3_USB33DEN);
1183 }
1184 
1185 /**
1186   * @brief  Check if the USB voltage detector is enabled
1187   * @rmtoll CR3          USB33DEN           LL_PWR_IsEnabledUSBVoltageDetector
1188   * @retval State of bit (1 or 0).
1189   */
1190 __STATIC_INLINE uint32_t LL_PWR_IsEnabledUSBVoltageDetector(void)
1191 {
1192   return ((READ_BIT(PWR->CR3, PWR_CR3_USB33DEN) == (PWR_CR3_USB33DEN)) ? 1UL : 0UL);
1193 }
1194 
1195 #if defined (PWR_CPUCR_PDDS_D2)
1196 /**
1197   * @brief  Set the D1 domain Power Down mode when the CPU enters deepsleep
1198   * @rmtoll CPUCR     PDDS_D1       LL_PWR_CPU_SetD1PowerMode
1199   * @param  PDMode This parameter can be one of the following values:
1200   *         @arg @ref LL_PWR_CPU_MODE_D1STOP
1201   *         @arg @ref LL_PWR_CPU_MODE_D1STANDBY
1202   * @retval None
1203   */
1204 __STATIC_INLINE void LL_PWR_CPU_SetD1PowerMode(uint32_t PDMode)
1205 {
1206   MODIFY_REG(PWR->CPUCR, PWR_CPUCR_PDDS_D1, PDMode);
1207 }
1208 #else
1209 /**
1210   * @brief  Set the CPU domain Power Down mode when the CPU enters deepsleep
1211   * @rmtoll CPUCR     RETDS_CD       LL_PWR_CPU_SetCDPowerMode
1212   * @param  PDMode This parameter can be one of the following values:
1213   *         @arg @ref LL_PWR_CPU_MODE_CDSTOP
1214   *         @arg @ref LL_PWR_CPU_MODE_CDSTOP2
1215   * @retval None
1216   */
1217 __STATIC_INLINE void LL_PWR_CPU_SetCDPowerMode(uint32_t PDMode)
1218 {
1219   MODIFY_REG(PWR->CPUCR, PWR_CPUCR_RETDS_CD, PDMode);
1220 }
1221 #endif /* PWR_CPUCR_PDDS_D2 */
1222 
1223 #if defined (DUAL_CORE)
1224 /**
1225   * @brief  Set the D1 domain Power Down mode when the CPU2 enters deepsleep
1226   * @rmtoll CPU2CR     PDDS_D1       LL_PWR_CPU2_SetD1PowerMode
1227   * @param  PDMode This parameter can be one of the following values:
1228   *         @arg @ref LL_PWR_CPU2_MODE_D1STOP
1229   *         @arg @ref LL_PWR_CPU2_MODE_D1STANDBY
1230   * @retval None
1231   */
1232 __STATIC_INLINE void LL_PWR_CPU2_SetD1PowerMode(uint32_t PDMode)
1233 {
1234   MODIFY_REG(PWR->CPU2CR, PWR_CPU2CR_PDDS_D1, PDMode);
1235 }
1236 #endif /* DUAL_CORE */
1237 
1238 #if defined (PWR_CPUCR_PDDS_D2)
1239 /**
1240   * @brief  Get the D1 Domain Power Down mode when the CPU enters deepsleep
1241   * @rmtoll CPUCR     PDDS_D1       LL_PWR_CPU_GetD1PowerMode
1242   * @retval Returned value can be one of the following values:
1243   *         @arg @ref LL_PWR_CPU_MODE_D1STOP
1244   *         @arg @ref LL_PWR_CPU_MODE_D1STANDBY
1245   */
1246 __STATIC_INLINE uint32_t LL_PWR_CPU_GetD1PowerMode(void)
1247 {
1248   return (uint32_t)(READ_BIT(PWR->CPUCR, PWR_CPUCR_PDDS_D1));
1249 }
1250 #else
1251 /**
1252   * @brief  Get the CD Domain Power Down mode when the CPU enters deepsleep
1253   * @rmtoll CPUCR     RETDS_CD       LL_PWR_CPU_GetCDPowerMode
1254   * @retval Returned value can be one of the following values:
1255   *         @arg @ref LL_PWR_CPU_MODE_CDSTOP
1256   *         @arg @ref LL_PWR_CPU_MODE_CDSTOP2
1257   */
1258 __STATIC_INLINE uint32_t LL_PWR_CPU_GetCDPowerMode(void)
1259 {
1260   return (uint32_t)(READ_BIT(PWR->CPUCR, PWR_CPUCR_RETDS_CD));
1261 }
1262 #endif /* PWR_CPUCR_PDDS_D2 */
1263 
1264 #if defined (DUAL_CORE)
1265 /**
1266   * @brief  Get the D1 Domain Power Down mode when the CPU2 enters deepsleep
1267   * @rmtoll CPU2CR     PDDS_D1       LL_PWR_CPU2_GetD1PowerMode
1268   * @retval Returned value can be one of the following values:
1269   *         @arg @ref LL_PWR_CPU2_MODE_D1STOP
1270   *         @arg @ref LL_PWR_CPU2_MODE_D1STANDBY
1271   */
1272 __STATIC_INLINE uint32_t LL_PWR_CPU2_GetD1PowerMode(void)
1273 {
1274   return (uint32_t)(READ_BIT(PWR->CPU2CR, PWR_CPU2CR_PDDS_D1));
1275 }
1276 #endif /* DUAL_CORE */
1277 
1278 #if defined (PWR_CPUCR_PDDS_D2)
1279 /**
1280   * @brief  Set the D2 domain Power Down mode when the CPU enters deepsleep
1281   * @rmtoll CPUCR     PDDS_D2       LL_PWR_CPU_SetD2PowerMode
1282   * @param  PDMode This parameter can be one of the following values:
1283   *         @arg @ref LL_PWR_CPU_MODE_D2STOP
1284   *         @arg @ref LL_PWR_CPU_MODE_D2STANDBY
1285   * @retval None
1286   */
1287 __STATIC_INLINE void LL_PWR_CPU_SetD2PowerMode(uint32_t PDMode)
1288 {
1289   MODIFY_REG(PWR->CPUCR, PWR_CPUCR_PDDS_D2, PDMode);
1290 }
1291 #endif /* PWR_CPUCR_PDDS_D2 */
1292 
1293 #if defined (DUAL_CORE)
1294 /**
1295   * @brief  Set the D2 domain Power Down mode when the CPU2 enters deepsleep
1296   * @rmtoll CPU2CR     PDDS_D2       LL_PWR_CPU2_SetD2PowerMode
1297   * @param  PDMode This parameter can be one of the following values:
1298   *         @arg @ref LL_PWR_CPU2_MODE_D2STOP
1299   *         @arg @ref LL_PWR_CPU2_MODE_D2STANDBY
1300   * @retval None
1301   */
1302 __STATIC_INLINE void LL_PWR_CPU2_SetD2PowerMode(uint32_t PDMode)
1303 {
1304   MODIFY_REG(PWR->CPU2CR, PWR_CPU2CR_PDDS_D2, PDMode);
1305 }
1306 #endif /* DUAL_CORE */
1307 
1308 #if defined (PWR_CPUCR_PDDS_D2)
1309 /**
1310   * @brief  Get the D2 Domain Power Down mode when the CPU enters deepsleep
1311   * @rmtoll CPUCR     PDDS_D2       LL_PWR_CPU_GetD2PowerMode
1312   * @retval Returned value can be one of the following values:
1313   *         @arg @ref LL_PWR_CPU_MODE_D2STOP
1314   *         @arg @ref LL_PWR_CPU_MODE_D2STANDBY
1315   */
1316 __STATIC_INLINE uint32_t LL_PWR_CPU_GetD2PowerMode(void)
1317 {
1318   return (uint32_t)(READ_BIT(PWR->CPUCR, PWR_CPUCR_PDDS_D2));
1319 }
1320 #endif /* PWR_CPUCR_PDDS_D2 */
1321 
1322 #if defined (DUAL_CORE)
1323 /**
1324   * @brief  Get the D2 Domain Power Down mode when the CPU2 enters deepsleep
1325   * @rmtoll CPU2CR     PDDS_D2       LL_PWR_CPU2_GetD2PowerMode
1326   * @retval Returned value can be one of the following values:
1327   *         @arg @ref LL_PWR_CPU2_MODE_D2STOP
1328   *         @arg @ref LL_PWR_CPU2_MODE_D2STANDBY
1329   */
1330 __STATIC_INLINE uint32_t LL_PWR_CPU2_GetD2PowerMode(void)
1331 {
1332   return (uint32_t)(READ_BIT(PWR->CPU2CR, PWR_CPU2CR_PDDS_D2));
1333 }
1334 #endif /* DUAL_CORE */
1335 
1336 #if defined (PWR_CPUCR_PDDS_D2)
1337 /**
1338   * @brief  Set the D3 domain Power Down mode when the CPU enters deepsleep
1339   * @rmtoll CPUCR     PDDS_D3       LL_PWR_CPU_SetD3PowerMode
1340   * @param  PDMode This parameter can be one of the following values:
1341   *         @arg @ref LL_PWR_CPU_MODE_D3STOP
1342   *         @arg @ref LL_PWR_CPU_MODE_D3STANDBY
1343   * @retval None
1344   */
1345 __STATIC_INLINE void LL_PWR_CPU_SetD3PowerMode(uint32_t PDMode)
1346 {
1347   MODIFY_REG(PWR->CPUCR, PWR_CPUCR_PDDS_D3 , PDMode);
1348 }
1349 #else
1350 /**
1351   * @brief  Set the SRD domain Power Down mode when the CPU enters deepsleep
1352   * @rmtoll CPUCR     PDDS_SRD       LL_PWR_CPU_SetSRDPowerMode
1353   * @param  PDMode This parameter can be one of the following values:
1354   *         @arg @ref LL_PWR_CPU_MODE_SRDSTOP
1355   *         @arg @ref LL_PWR_CPU_MODE_SRDSTANDBY
1356   * @retval None
1357   */
1358 __STATIC_INLINE void LL_PWR_CPU_SetSRDPowerMode(uint32_t PDMode)
1359 {
1360   MODIFY_REG(PWR->CPUCR, PWR_CPUCR_PDDS_SRD , PDMode);
1361 }
1362 #endif /* PWR_CPUCR_PDDS_D2 */
1363 
1364 #if defined (DUAL_CORE)
1365 /**
1366   * @brief  Set the D3 domain Power Down mode when the CPU2 enters deepsleep
1367   * @rmtoll CPU2CR     PDDS_D3       LL_PWR_CPU2_SetD3PowerMode
1368   * @param  PDMode This parameter can be one of the following values:
1369   *         @arg @ref LL_PWR_CPU2_MODE_D3STOP
1370   *         @arg @ref LL_PWR_CPU2_MODE_D3STANDBY
1371   * @retval None
1372   */
1373 __STATIC_INLINE void LL_PWR_CPU2_SetD3PowerMode(uint32_t PDMode)
1374 {
1375   MODIFY_REG(PWR->CPU2CR, PWR_CPU2CR_PDDS_D3, PDMode);
1376 }
1377 #endif /* DUAL_CORE */
1378 
1379 #if defined (PWR_CPUCR_PDDS_D2)
1380 /**
1381   * @brief  Get the D3 Domain Power Down mode when the CPU enters deepsleep
1382   * @rmtoll CPUCR     PDDS_D3       LL_PWR_CPU_GetD3PowerMode
1383   * @retval Returned value can be one of the following values:
1384   *         @arg @ref LL_PWR_CPU_MODE_D3STOP
1385   *         @arg @ref LL_PWR_CPU_MODE_D3STANDBY
1386   */
1387 __STATIC_INLINE uint32_t LL_PWR_CPU_GetD3PowerMode(void)
1388 {
1389   return (uint32_t)(READ_BIT(PWR->CPUCR, PWR_CPUCR_PDDS_D3));
1390 }
1391 #else
1392 /**
1393   * @brief  Get the SRD Domain Power Down mode when the CPU enters deepsleep
1394   * @rmtoll CPUCR     PDDS_SRD       LL_PWR_CPU_GetSRDPowerMode
1395   * @retval Returned value can be one of the following values:
1396   *         @arg @ref LL_PWR_CPU_MODE_SRDSTOP
1397   *         @arg @ref LL_PWR_CPU_MODE_SRDSTANDBY
1398   */
1399 __STATIC_INLINE uint32_t LL_PWR_CPU_GetSRDPowerMode(void)
1400 {
1401   return (uint32_t)(READ_BIT(PWR->CPUCR, PWR_CPUCR_PDDS_SRD));
1402 }
1403 #endif /* PWR_CPUCR_PDDS_D2 */
1404 
1405 #if defined (DUAL_CORE)
1406 /**
1407   * @brief  Get the D3 Domain Power Down mode when the CPU2 enters deepsleep
1408   * @rmtoll CPU2CR     PDDS_D3       LL_PWR_CPU2_GetD3PowerMode
1409   * @retval Returned value can be one of the following values:
1410   *         @arg @ref LL_PWR_CPU2_MODE_D3STOP
1411   *         @arg @ref LL_PWR_CPU2_MODE_D3STANDBY
1412   */
1413 __STATIC_INLINE uint32_t LL_PWR_CPU2_GetD3PowerMode(void)
1414 {
1415   return (uint32_t)(READ_BIT(PWR->CPU2CR, PWR_CPU2CR_PDDS_D3));
1416 }
1417 #endif /* DUAL_CORE */
1418 
1419 #if defined (DUAL_CORE)
1420 /**
1421   * @brief  Hold the CPU1 and allocated peripherals when exiting from STOP mode
1422   * @rmtoll CPU2CR     HOLD1       LL_PWR_HoldCPU1
1423   * @retval None
1424   */
1425 __STATIC_INLINE void LL_PWR_HoldCPU1(void)
1426 {
1427   SET_BIT(PWR->CPU2CR, PWR_CPU2CR_HOLD1);
1428 }
1429 
1430 /**
1431   * @brief  Release the CPU1 and allocated peripherals
1432   * @rmtoll CPU2CR     HOLD1       LL_PWR_ReleaseCPU1
1433   * @retval None
1434   */
1435 __STATIC_INLINE void LL_PWR_ReleaseCPU1(void)
1436 {
1437   CLEAR_BIT(PWR->CPU2CR, PWR_CPU2CR_HOLD1);
1438 }
1439 
1440 /**
1441   * @brief  Ckeck if the CPU1 and allocated peripherals are held
1442   * @rmtoll CPU2CR     HOLD1       LL_PWR_IsCPU1Held
1443   * @retval State of bit (1 or 0).
1444   */
1445 __STATIC_INLINE uint32_t LL_PWR_IsCPU1Held(void)
1446 {
1447   return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_HOLD1) == (PWR_CPU2CR_HOLD1))  ? 1UL : 0UL);
1448 }
1449 
1450 /**
1451   * @brief  Hold the CPU2 and allocated peripherals when exiting from STOP mode
1452   * @rmtoll CPUCR     HOLD2       LL_PWR_HoldCPU2
1453   * @retval None
1454   */
1455 __STATIC_INLINE void LL_PWR_HoldCPU2(void)
1456 {
1457   SET_BIT(PWR->CPUCR, PWR_CPUCR_HOLD2);
1458 }
1459 
1460 /**
1461   * @brief  Release the CPU2 and allocated peripherals
1462   * @rmtoll CPUCR     HOLD2       LL_PWR_ReleaseCPU2
1463   * @retval None
1464   */
1465 __STATIC_INLINE void LL_PWR_ReleaseCPU2(void)
1466 {
1467   CLEAR_BIT(PWR->CPUCR, PWR_CPUCR_HOLD2);
1468 }
1469 
1470 /**
1471   * @brief  Ckeck if the CPU2 and allocated peripherals are held
1472   * @rmtoll CPUCR     HOLD2       LL_PWR_IsCPU2Held
1473   * @retval State of bit (1 or 0).
1474   */
1475 __STATIC_INLINE uint32_t LL_PWR_IsCPU2Held(void)
1476 {
1477   return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_HOLD2) == (PWR_CPUCR_HOLD2)) ? 1UL : 0UL);
1478 }
1479 #endif /* DUAL_CORE */
1480 
1481 #if defined (PWR_CPUCR_PDDS_D2)
1482 /**
1483   * @brief  D3 domain remains in Run mode regardless of CPU subsystem modes
1484   * @rmtoll CPUCR     RUN_D3       LL_PWR_CPU_EnableD3RunInLowPowerMode
1485   * @retval None
1486   */
1487 __STATIC_INLINE void LL_PWR_CPU_EnableD3RunInLowPowerMode(void)
1488 {
1489   SET_BIT(PWR->CPUCR, PWR_CPUCR_RUN_D3);
1490 }
1491 #else
1492 /**
1493   * @brief  SRD domain remains in Run mode regardless of CPU subsystem modes
1494   * @rmtoll CPUCR     RUN_SRD      LL_PWR_CPU_EnableSRDRunInLowPowerMode
1495   * @retval None
1496   */
1497 __STATIC_INLINE void LL_PWR_CPU_EnableSRDRunInLowPowerMode(void)
1498 {
1499   SET_BIT(PWR->CPUCR, PWR_CPUCR_RUN_SRD);
1500 }
1501 #endif /* PWR_CPUCR_PDDS_D2 */
1502 
1503 #if defined (DUAL_CORE)
1504 /**
1505   * @brief  D3 domain remains in Run mode regardless of CPU2 subsystem modes
1506   * @rmtoll CPU2CR     RUN_D3       LL_PWR_CPU2_EnableD3RunInLowPowerMode
1507   * @retval None
1508   */
1509 __STATIC_INLINE void LL_PWR_CPU2_EnableD3RunInLowPowerMode(void)
1510 {
1511   SET_BIT(PWR->CPU2CR, PWR_CPU2CR_RUN_D3);
1512 }
1513 #endif /* DUAL_CORE */
1514 
1515 #if defined (PWR_CPUCR_PDDS_D2)
1516 /**
1517   * @brief  D3 domain follows CPU subsystem modes
1518   * @rmtoll CPUCR     RUN_D3       LL_PWR_CPU_DisableD3RunInLowPowerMode
1519   * @retval None
1520   */
1521 __STATIC_INLINE void LL_PWR_CPU_DisableD3RunInLowPowerMode(void)
1522 {
1523   CLEAR_BIT(PWR->CPUCR, PWR_CPUCR_RUN_D3);
1524 }
1525 #else
1526 /**
1527   * @brief  SRD domain follows CPU subsystem modes
1528   * @rmtoll CPUCR     RUN_SRD      LL_PWR_CPU_DisableSRDRunInLowPowerMode
1529   * @retval None
1530   */
1531 __STATIC_INLINE void LL_PWR_CPU_DisableSRDRunInLowPowerMode(void)
1532 {
1533   CLEAR_BIT(PWR->CPUCR, PWR_CPUCR_RUN_SRD);
1534 }
1535 #endif /* PWR_CPUCR_PDDS_D2 */
1536 
1537 #if defined (DUAL_CORE)
1538 /**
1539   * @brief  D3 domain follows CPU2 subsystem modes
1540   * @rmtoll CPU2CR     RUN_D3       LL_PWR_CPU2_DisableD3RunInLowPowerMode
1541   * @retval None
1542   */
1543 __STATIC_INLINE void LL_PWR_CPU2_DisableD3RunInLowPowerMode(void)
1544 {
1545   CLEAR_BIT(PWR->CPU2CR, PWR_CPU2CR_RUN_D3);
1546 }
1547 #endif /* DUAL_CORE */
1548 
1549 #if defined (PWR_CPUCR_PDDS_D2)
1550 /**
1551   * @brief  Check if D3 is kept in Run mode when CPU enters low power mode
1552   * @rmtoll CPUCR     RUN_D3    LL_PWR_CPU_IsEnabledD3RunInLowPowerMode
1553   * @retval State of bit (1 or 0).
1554   */
1555 __STATIC_INLINE uint32_t LL_PWR_CPU_IsEnabledD3RunInLowPowerMode(void)
1556 {
1557   return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_RUN_D3) == (PWR_CPUCR_RUN_D3)) ? 1UL : 0UL);
1558 }
1559 #else
1560 /**
1561   * @brief  Check if SRD is kept in Run mode when CPU enters low power mode
1562   * @rmtoll CPUCR     RUN_SRD    LL_PWR_CPU_IsEnabledSRDRunInLowPowerMode
1563   * @retval State of bit (1 or 0).
1564   */
1565 __STATIC_INLINE uint32_t LL_PWR_CPU_IsEnabledSRDRunInLowPowerMode(void)
1566 {
1567   return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_RUN_SRD) == (PWR_CPUCR_RUN_SRD)) ? 1UL : 0UL);
1568 }
1569 #endif /* PWR_CPUCR_PDDS_D2 */
1570 
1571 #if defined (DUAL_CORE)
1572 /**
1573   * @brief  Check if D3 is kept in Run mode when CPU2 enters low power mode
1574   * @rmtoll CPU2CR     RUN_D3    LL_PWR_CPU2_IsEnabledD3RunInLowPowerMode
1575   * @retval State of bit (1 or 0).
1576   */
1577 __STATIC_INLINE uint32_t LL_PWR_CPU2_IsEnabledD3RunInLowPowerMode(void)
1578 {
1579   return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_RUN_D3) == (PWR_CPU2CR_RUN_D3)) ? 1UL : 0UL);
1580 }
1581 #endif /* DUAL_CORE */
1582 
1583 /**
1584   * @brief  Set the main internal Regulator output voltage
1585   * @rmtoll D3CR    VOS       LL_PWR_SetRegulVoltageScaling
1586   * @param  VoltageScaling This parameter can be one of the following values:
1587   *         @arg @ref LL_PWR_REGU_VOLTAGE_SCALE0
1588   *         @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1
1589   *         @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2
1590   *         @arg @ref LL_PWR_REGU_VOLTAGE_SCALE3
1591   * @note   For all H7 lines except STM32H7Axxx and STM32H7Bxxx lines, VOS0
1592   *         is applied when PWR_D3CR_VOS[1:0] = 0b11 and  SYSCFG_PWRCR_ODEN = 0b1.
1593   * @retval None
1594   */
1595 __STATIC_INLINE void LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling)
1596 {
1597 #if defined (PWR_CPUCR_PDDS_D2)
1598   MODIFY_REG(PWR->D3CR, PWR_D3CR_VOS, VoltageScaling);
1599 #else
1600   MODIFY_REG(PWR->SRDCR, PWR_SRDCR_VOS, VoltageScaling);
1601 #endif /* PWR_CPUCR_PDDS_D2 */
1602 }
1603 
1604 /**
1605   * @brief  Get the main internal Regulator output voltage
1606   * @rmtoll D3CR    VOS       LL_PWR_GetRegulVoltageScaling
1607   * @note   For all H7 lines except STM32H7Axxx and STM32H7Bxxx lines, checking
1608   *         VOS0 need the check of PWR_D3CR_VOS[1:0] field and SYSCFG_PWRCR_ODEN bit.
1609   * @retval Returned value can be one of the following values:
1610   *         @arg @ref LL_PWR_REGU_VOLTAGE_SCALE0
1611   *         @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1
1612   *         @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2
1613   *         @arg @ref LL_PWR_REGU_VOLTAGE_SCALE3
1614   */
1615 __STATIC_INLINE uint32_t LL_PWR_GetRegulVoltageScaling(void)
1616 {
1617 #if defined (PWR_CPUCR_PDDS_D2)
1618   return (uint32_t)(READ_BIT(PWR->D3CR, PWR_D3CR_VOS));
1619 #else
1620   return (uint32_t)(READ_BIT(PWR->SRDCR, PWR_SRDCR_VOS));
1621 #endif /* PWR_CPUCR_PDDS_D2 */
1622 }
1623 
1624 /**
1625   * @brief  Enable the WakeUp PINx functionality
1626   * @rmtoll WKUPEPR   WKUPEN1       LL_PWR_EnableWakeUpPin\n
1627   *         WKUPEPR   WKUPEN2       LL_PWR_EnableWakeUpPin\n
1628   *         WKUPEPR   WKUPEN3       LL_PWR_EnableWakeUpPin\n
1629   *         WKUPEPR   WKUPEN4       LL_PWR_EnableWakeUpPin\n
1630   *         WKUPEPR   WKUPEN5       LL_PWR_EnableWakeUpPin\n
1631   *         WKUPEPR   WKUPEN6       LL_PWR_EnableWakeUpPin
1632   * @param  WakeUpPin This parameter can be one of the following values:
1633   *         @arg @ref LL_PWR_WAKEUP_PIN1
1634   *         @arg @ref LL_PWR_WAKEUP_PIN2
1635   *         @arg @ref LL_PWR_WAKEUP_PIN3 (*)
1636   *         @arg @ref LL_PWR_WAKEUP_PIN4
1637   *         @arg @ref LL_PWR_WAKEUP_PIN5 (*)
1638   *         @arg @ref LL_PWR_WAKEUP_PIN6
1639   *
1640   *         (*) value not defined in all devices.
1641   *
1642   * @retval None
1643   */
1644 __STATIC_INLINE void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin)
1645 {
1646   SET_BIT(PWR->WKUPEPR, WakeUpPin);
1647 }
1648 
1649 /**
1650   * @brief  Disable the WakeUp PINx functionality
1651   * @rmtoll WKUPEPR   WKUPEN1       LL_PWR_DisableWakeUpPin\n
1652   *         WKUPEPR   WKUPEN2       LL_PWR_DisableWakeUpPin\n
1653   *         WKUPEPR   WKUPEN3       LL_PWR_DisableWakeUpPin\n
1654   *         WKUPEPR   WKUPEN4       LL_PWR_DisableWakeUpPin\n
1655   *         WKUPEPR   WKUPEN5       LL_PWR_DisableWakeUpPin\n
1656   *         WKUPEPR   WKUPEN6       LL_PWR_DisableWakeUpPin
1657   * @param  WakeUpPin This parameter can be one of the following values:
1658   *         @arg @ref LL_PWR_WAKEUP_PIN1
1659   *         @arg @ref LL_PWR_WAKEUP_PIN2
1660   *         @arg @ref LL_PWR_WAKEUP_PIN3 (*)
1661   *         @arg @ref LL_PWR_WAKEUP_PIN4
1662   *         @arg @ref LL_PWR_WAKEUP_PIN5 (*)
1663   *         @arg @ref LL_PWR_WAKEUP_PIN6
1664   *
1665   *         (*) value not defined in all devices.
1666   *
1667   * @retval None
1668   */
1669 __STATIC_INLINE void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin)
1670 {
1671   CLEAR_BIT(PWR->WKUPEPR, WakeUpPin);
1672 }
1673 
1674 /**
1675   * @brief  Check if the WakeUp PINx functionality is enabled
1676   * @rmtoll WKUPEPR   WKUPEN1       LL_PWR_IsEnabledWakeUpPin\n
1677   *         WKUPEPR   WKUPEN2       LL_PWR_IsEnabledWakeUpPin\n
1678   *         WKUPEPR   WKUPEN3       LL_PWR_IsEnabledWakeUpPin\n
1679   *         WKUPEPR   WKUPEN4       LL_PWR_IsEnabledWakeUpPin\n
1680   *         WKUPEPR   WKUPEN5       LL_PWR_IsEnabledWakeUpPin\n
1681   *         WKUPEPR   WKUPEN6       LL_PWR_IsEnabledWakeUpPin
1682   * @param  WakeUpPin This parameter can be one of the following values:
1683   *         @arg @ref LL_PWR_WAKEUP_PIN1
1684   *         @arg @ref LL_PWR_WAKEUP_PIN2
1685   *         @arg @ref LL_PWR_WAKEUP_PIN3 (*)
1686   *         @arg @ref LL_PWR_WAKEUP_PIN4
1687   *         @arg @ref LL_PWR_WAKEUP_PIN5 (*)
1688   *         @arg @ref LL_PWR_WAKEUP_PIN6
1689   *
1690   *         (*) value not defined in all devices.
1691   *
1692   * @retval State of bit (1 or 0).
1693   */
1694 __STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin)
1695 {
1696   return ((READ_BIT(PWR->WKUPEPR, WakeUpPin) == (WakeUpPin)) ? 1UL : 0UL);
1697 }
1698 
1699 /**
1700   * @brief  Set the Wake-Up pin polarity low for the event detection
1701   * @rmtoll WKUPEPR   WKUPP1       LL_PWR_SetWakeUpPinPolarityLow\n
1702   *         WKUPEPR   WKUPP2       LL_PWR_SetWakeUpPinPolarityLow\n
1703   *         WKUPEPR   WKUPP3       LL_PWR_SetWakeUpPinPolarityLow\n
1704   *         WKUPEPR   WKUPP4       LL_PWR_SetWakeUpPinPolarityLow\n
1705   *         WKUPEPR   WKUPP5       LL_PWR_SetWakeUpPinPolarityLow\n
1706   *         WKUPEPR   WKUPP6       LL_PWR_SetWakeUpPinPolarityLow
1707   * @param  WakeUpPin This parameter can be one of the following values:
1708   *         @arg @ref LL_PWR_WAKEUP_PIN1
1709   *         @arg @ref LL_PWR_WAKEUP_PIN2
1710   *         @arg @ref LL_PWR_WAKEUP_PIN3 (*)
1711   *         @arg @ref LL_PWR_WAKEUP_PIN4
1712   *         @arg @ref LL_PWR_WAKEUP_PIN5 (*)
1713   *         @arg @ref LL_PWR_WAKEUP_PIN6
1714   *
1715   *         (*) value not defined in all devices.
1716   *
1717   * @retval None
1718   */
1719 __STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityLow(uint32_t WakeUpPin)
1720 {
1721   SET_BIT(PWR->WKUPEPR, (WakeUpPin << PWR_WKUPEPR_WKUPP1_Pos));
1722 }
1723 
1724 /**
1725   * @brief  Set the Wake-Up pin polarity high for the event detection
1726   * @rmtoll WKUPEPR   WKUPP1       LL_PWR_SetWakeUpPinPolarityHigh\n
1727   *         WKUPEPR   WKUPP2       LL_PWR_SetWakeUpPinPolarityHigh\n
1728   *         WKUPEPR   WKUPP3       LL_PWR_SetWakeUpPinPolarityHigh\n
1729   *         WKUPEPR   WKUPP4       LL_PWR_SetWakeUpPinPolarityHigh\n
1730   *         WKUPEPR   WKUPP5       LL_PWR_SetWakeUpPinPolarityHigh\n
1731   *         WKUPEPR   WKUPP6       LL_PWR_SetWakeUpPinPolarityHigh
1732   * @param  WakeUpPin This parameter can be one of the following values:
1733   *         @arg @ref LL_PWR_WAKEUP_PIN1
1734   *         @arg @ref LL_PWR_WAKEUP_PIN2
1735   *         @arg @ref LL_PWR_WAKEUP_PIN3 (*)
1736   *         @arg @ref LL_PWR_WAKEUP_PIN4
1737   *         @arg @ref LL_PWR_WAKEUP_PIN5 (*)
1738   *         @arg @ref LL_PWR_WAKEUP_PIN6
1739   *
1740   *         (*) value not defined in all devices.
1741   *
1742   * @retval None
1743   */
1744 __STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityHigh(uint32_t WakeUpPin)
1745 {
1746   CLEAR_BIT(PWR->WKUPEPR, (WakeUpPin << PWR_WKUPEPR_WKUPP1_Pos));
1747 }
1748 
1749 /**
1750   * @brief  Get the Wake-Up pin polarity for the event detection
1751   * @rmtoll WKUPEPR   WKUPP1       LL_PWR_IsWakeUpPinPolarityLow\n
1752   *         WKUPEPR   WKUPP2       LL_PWR_IsWakeUpPinPolarityLow\n
1753   *         WKUPEPR   WKUPP3       LL_PWR_IsWakeUpPinPolarityLow\n
1754   *         WKUPEPR   WKUPP4       LL_PWR_IsWakeUpPinPolarityLow\n
1755   *         WKUPEPR   WKUPP5       LL_PWR_IsWakeUpPinPolarityLow\n
1756   *         WKUPEPR   WKUPP6       LL_PWR_IsWakeUpPinPolarityLow
1757   * @param  WakeUpPin This parameter can be one of the following values:
1758   *         @arg @ref LL_PWR_WAKEUP_PIN1
1759   *         @arg @ref LL_PWR_WAKEUP_PIN2
1760   *         @arg @ref LL_PWR_WAKEUP_PIN3 (*)
1761   *         @arg @ref LL_PWR_WAKEUP_PIN4
1762   *         @arg @ref LL_PWR_WAKEUP_PIN5 (*)
1763   *         @arg @ref LL_PWR_WAKEUP_PIN6
1764   *
1765   *         (*) value not defined in all devices.
1766   *
1767   * @retval State of bit (1 or 0).
1768   */
1769 __STATIC_INLINE uint32_t LL_PWR_IsWakeUpPinPolarityLow(uint32_t WakeUpPin)
1770 {
1771   return ((READ_BIT(PWR->WKUPEPR, (WakeUpPin << PWR_WKUPEPR_WKUPP1_Pos)) == (WakeUpPin << PWR_WKUPEPR_WKUPP1_Pos)) ? 1UL : 0UL);
1772 }
1773 
1774 /**
1775   * @brief  Set the Wake-Up pin Pull None
1776   * @rmtoll WKUPEPR   WKUPPUPD1       LL_PWR_SetWakeUpPinPullNone\n
1777   *         WKUPEPR   WKUPPUPD2       LL_PWR_SetWakeUpPinPullNone\n
1778   *         WKUPEPR   WKUPPUPD3       LL_PWR_SetWakeUpPinPullNone\n
1779   *         WKUPEPR   WKUPPUPD4       LL_PWR_SetWakeUpPinPullNone\n
1780   *         WKUPEPR   WKUPPUPD5       LL_PWR_SetWakeUpPinPullNone\n
1781   *         WKUPEPR   WKUPPUPD6       LL_PWR_SetWakeUpPinPullNone
1782   * @param  WakeUpPin This parameter can be one of the following values:
1783   *         @arg @ref LL_PWR_WAKEUP_PIN1
1784   *         @arg @ref LL_PWR_WAKEUP_PIN2
1785   *         @arg @ref LL_PWR_WAKEUP_PIN3 (*)
1786   *         @arg @ref LL_PWR_WAKEUP_PIN4
1787   *         @arg @ref LL_PWR_WAKEUP_PIN5 (*)
1788   *         @arg @ref LL_PWR_WAKEUP_PIN6
1789   *
1790   *         (*) value not defined in all devices.
1791   *
1792   * @retval None
1793   */
1794 __STATIC_INLINE void LL_PWR_SetWakeUpPinPullNone(uint32_t WakeUpPin)
1795 {
1796   MODIFY_REG(PWR->WKUPEPR, \
1797             (PWR_WKUPEPR_WKUPPUPD1 << ((LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin)) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)), \
1798             (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)));
1799 }
1800 
1801 /**
1802   * @brief  Set the Wake-Up pin Pull Up
1803   * @rmtoll WKUPEPR   WKUPPUPD1       LL_PWR_SetWakeUpPinPullUp\n
1804   *         WKUPEPR   WKUPPUPD2       LL_PWR_SetWakeUpPinPullUp\n
1805   *         WKUPEPR   WKUPPUPD3       LL_PWR_SetWakeUpPinPullUp\n
1806   *         WKUPEPR   WKUPPUPD4       LL_PWR_SetWakeUpPinPullUp\n
1807   *         WKUPEPR   WKUPPUPD5       LL_PWR_SetWakeUpPinPullUp\n
1808   *         WKUPEPR   WKUPPUPD6       LL_PWR_SetWakeUpPinPullUp
1809   * @param  WakeUpPin This parameter can be one of the following values:
1810   *         @arg @ref LL_PWR_WAKEUP_PIN1
1811   *         @arg @ref LL_PWR_WAKEUP_PIN2
1812   *         @arg @ref LL_PWR_WAKEUP_PIN3 (*)
1813   *         @arg @ref LL_PWR_WAKEUP_PIN4
1814   *         @arg @ref LL_PWR_WAKEUP_PIN5 (*)
1815   *         @arg @ref LL_PWR_WAKEUP_PIN6
1816   *
1817   *         (*) value not defined in all devices.
1818   *
1819   * @retval None
1820   */
1821 __STATIC_INLINE void LL_PWR_SetWakeUpPinPullUp(uint32_t WakeUpPin)
1822 {
1823   MODIFY_REG(PWR->WKUPEPR, \
1824             (PWR_WKUPEPR_WKUPPUPD1 << ((LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin)) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)), \
1825             (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)));
1826 }
1827 
1828 /**
1829   * @brief  Set the Wake-Up pin Pull Down
1830   * @rmtoll WKUPEPR   WKUPPUPD1       LL_PWR_SetWakeUpPinPullDown\n
1831   *         WKUPEPR   WKUPPUPD2       LL_PWR_SetWakeUpPinPullDown\n
1832   *         WKUPEPR   WKUPPUPD3       LL_PWR_SetWakeUpPinPullDown\n
1833   *         WKUPEPR   WKUPPUPD4       LL_PWR_SetWakeUpPinPullDown\n
1834   *         WKUPEPR   WKUPPUPD5       LL_PWR_SetWakeUpPinPullDown\n
1835   *         WKUPEPR   WKUPPUPD6       LL_PWR_SetWakeUpPinPullDown
1836   * @param  WakeUpPin This parameter can be one of the following values:
1837   *         @arg @ref LL_PWR_WAKEUP_PIN1
1838   *         @arg @ref LL_PWR_WAKEUP_PIN2
1839   *         @arg @ref LL_PWR_WAKEUP_PIN3 (*)
1840   *         @arg @ref LL_PWR_WAKEUP_PIN4
1841   *         @arg @ref LL_PWR_WAKEUP_PIN5 (*)
1842   *         @arg @ref LL_PWR_WAKEUP_PIN6
1843   *
1844   *         (*) value not defined in all devices.
1845   *
1846   * @retval None
1847   */
1848 __STATIC_INLINE void LL_PWR_SetWakeUpPinPullDown(uint32_t WakeUpPin)
1849 {
1850   MODIFY_REG(PWR->WKUPEPR, \
1851             (PWR_WKUPEPR_WKUPPUPD1 << ((LL_PWR_WAKEUP_PINS_PULL_SHIFT_OFFSET * POSITION_VAL(WakeUpPin)) & LL_PWR_WAKEUP_PINS_MAX_SHIFT_MASK)), \
1852             (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)));
1853 }
1854 
1855 /**
1856   * @brief  Get the Wake-Up pin pull
1857   * @rmtoll WKUPEPR   WKUPPUPD1       LL_PWR_GetWakeUpPinPull\n
1858   *         WKUPEPR   WKUPPUPD2       LL_PWR_GetWakeUpPinPull\n
1859   *         WKUPEPR   WKUPPUPD3       LL_PWR_GetWakeUpPinPull\n
1860   *         WKUPEPR   WKUPPUPD4       LL_PWR_GetWakeUpPinPull\n
1861   *         WKUPEPR   WKUPPUPD5       LL_PWR_GetWakeUpPinPull\n
1862   *         WKUPEPR   WKUPPUPD6       LL_PWR_GetWakeUpPinPull
1863   * @param  WakeUpPin This parameter can be one of the following values:
1864   *         @arg @ref LL_PWR_WAKEUP_PIN1
1865   *         @arg @ref LL_PWR_WAKEUP_PIN2
1866   *         @arg @ref LL_PWR_WAKEUP_PIN3 (*)
1867   *         @arg @ref LL_PWR_WAKEUP_PIN4
1868   *         @arg @ref LL_PWR_WAKEUP_PIN5 (*)
1869   *         @arg @ref LL_PWR_WAKEUP_PIN6
1870   *
1871   *         (*) value not defined in all devices.
1872   *
1873   * @retval Returned value can be one of the following values:
1874   *         @arg @ref LL_PWR_WAKEUP_PIN_NOPULL
1875   *         @arg @ref LL_PWR_WAKEUP_PIN_PULLUP
1876   *         @arg @ref LL_PWR_WAKEUP_PIN_PULLDOWN
1877   */
1878 __STATIC_INLINE uint32_t LL_PWR_GetWakeUpPinPull(uint32_t WakeUpPin)
1879 {
1880   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)));
1881 
1882   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));
1883 }
1884 
1885 /**
1886   * @}
1887   */
1888 
1889 /** @defgroup PWR_LL_EF_FLAG_Management FLAG_Management
1890   * @ingroup RTEMSBSPsARMSTM32H7
1891   * @{
1892   */
1893 
1894 /**
1895   * @brief  Indicate whether VDD voltage is below the selected PVD threshold
1896   * @rmtoll CSR1   PVDO       LL_PWR_IsActiveFlag_PVDO
1897   * @retval State of bit (1 or 0).
1898   */
1899 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(void)
1900 {
1901   return ((READ_BIT(PWR->CSR1, PWR_CSR1_PVDO) == (PWR_CSR1_PVDO)) ? 1UL : 0UL);
1902 }
1903 
1904 /**
1905   * @brief  Indicate whether the voltage level is ready for current actual used VOS
1906   * @rmtoll CSR1   ACTVOSRDY       LL_PWR_IsActiveFlag_ACTVOS
1907   * @retval State of bit (1 or 0).
1908   */
1909 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_ACTVOS(void)
1910 {
1911   return ((READ_BIT(PWR->CSR1, PWR_CSR1_ACTVOSRDY) == (PWR_CSR1_ACTVOSRDY)) ? 1UL : 0UL);
1912 }
1913 
1914 /**
1915   * @brief  Indicate whether VDDA voltage is below the selected AVD threshold
1916   * @rmtoll CSR1   AVDO       LL_PWR_IsActiveFlag_AVDO
1917   * @retval State of bit (1 or 0).
1918   */
1919 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_AVDO(void)
1920 {
1921   return ((READ_BIT(PWR->CSR1, PWR_CSR1_AVDO) == (PWR_CSR1_AVDO)) ? 1UL : 0UL);
1922 }
1923 
1924 #if defined (PWR_CSR1_MMCVDO)
1925 /**
1926   * @brief  Indicate whether VDDMMC voltage is below 1V2
1927   * @rmtoll CSR1   MMCVDO     LL_PWR_IsActiveFlag_MMCVDO
1928   * @retval State of bit (1 or 0).
1929   */
1930 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_MMCVDO(void)
1931 {
1932   return ((READ_BIT(PWR->CSR1, PWR_CSR1_MMCVDO) == (PWR_CSR1_MMCVDO)) ? 1UL : 0UL);
1933 }
1934 #endif /* PWR_CSR1_MMCVDO */
1935 
1936 /**
1937   * @brief  Get Backup Regulator ready Flag
1938   * @rmtoll CR2   BRRDY       LL_PWR_IsActiveFlag_BRR
1939   * @retval State of bit (1 or 0).
1940   */
1941 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_BRR(void)
1942 {
1943   return ((READ_BIT(PWR->CR2, PWR_CR2_BRRDY) == (PWR_CR2_BRRDY)) ? 1UL : 0UL);
1944 }
1945 
1946 /**
1947   * @brief  Indicate whether the VBAT level is above or below low threshold
1948   * @rmtoll CR2   VBATL       LL_PWR_IsActiveFlag_VBATL
1949   * @retval State of bit (1 or 0).
1950   */
1951 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VBATL(void)
1952 {
1953   return ((READ_BIT(PWR->CR2, PWR_CR2_VBATL) == (PWR_CR2_VBATL)) ? 1UL : 0UL);
1954 }
1955 
1956 /**
1957   * @brief  Indicate whether the VBAT level is above or below high threshold
1958   * @rmtoll CR2   VBATH       LL_PWR_IsActiveFlag_VBATH
1959   * @retval State of bit (1 or 0).
1960   */
1961 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VBATH(void)
1962 {
1963   return ((READ_BIT(PWR->CR2, PWR_CR2_VBATH) == (PWR_CR2_VBATH)) ? 1UL : 0UL);
1964 }
1965 
1966 /**
1967   * @brief  Indicate whether the CPU temperature level is above or below low threshold
1968   * @rmtoll CR2   TEMPL       LL_PWR_IsActiveFlag_TEMPL
1969   * @retval State of bit (1 or 0).
1970   */
1971 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_TEMPL(void)
1972 {
1973   return ((READ_BIT(PWR->CR2, PWR_CR2_TEMPL) == (PWR_CR2_TEMPL)) ? 1UL : 0UL);
1974 }
1975 
1976 /**
1977   * @brief  Indicate whether the CPU temperature level is above or below high threshold
1978   * @rmtoll CR2   TEMPH       LL_PWR_IsActiveFlag_TEMPH
1979   * @retval State of bit (1 or 0).
1980   */
1981 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_TEMPH(void)
1982 {
1983   return ((READ_BIT(PWR->CR2, PWR_CR2_TEMPH) == (PWR_CR2_TEMPH)) ? 1UL : 0UL);
1984 }
1985 
1986 #if defined (SMPS)
1987 /**
1988   * @brief  Indicate whether the SMPS external supply is ready or not
1989   * @rmtoll CR3   SMPSEXTRDY       LL_PWR_IsActiveFlag_SMPSEXT
1990   * @retval State of bit (1 or 0).
1991   */
1992 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SMPSEXT(void)
1993 {
1994   return ((READ_BIT(PWR->CR3, PWR_CR3_SMPSEXTRDY) == (PWR_CR3_SMPSEXTRDY)) ? 1UL : 0UL);
1995 }
1996 #endif /* SMPS */
1997 
1998 /**
1999   * @brief  Indicate whether the USB supply is ready or not
2000   * @rmtoll CR3   USBRDY       LL_PWR_IsActiveFlag_USB
2001   * @retval State of bit (1 or 0).
2002   */
2003 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_USB(void)
2004 {
2005   return ((READ_BIT(PWR->CR3, PWR_CR3_USB33RDY) == (PWR_CR3_USB33RDY)) ? 1UL : 0UL);
2006 }
2007 
2008 #if defined (DUAL_CORE)
2009 /**
2010   * @brief  Get HOLD2 Flag
2011   * @rmtoll CPUCR   HOLD2F       LL_PWR_IsActiveFlag_HOLD2
2012   * @retval State of bit (1 or 0).
2013   */
2014 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_HOLD2(void)
2015 {
2016   return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_HOLD2F) == (PWR_CPUCR_HOLD2F)) ? 1UL : 0UL);
2017 }
2018 
2019 /**
2020   * @brief  Get HOLD1 Flag
2021   * @rmtoll CPU2CR   HOLD1F       LL_PWR_IsActiveFlag_HOLD1
2022   * @retval State of bit (1 or 0).
2023   */
2024 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_HOLD1(void)
2025 {
2026   return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_HOLD1F) == (PWR_CPU2CR_HOLD1F)) ? 1UL : 0UL);
2027 }
2028 #endif /* DUAL_CORE */
2029 
2030 /**
2031   * @brief  Get CPU System Stop Flag
2032   * @rmtoll CPUCR   STOPF       LL_PWR_CPU_IsActiveFlag_STOP
2033   * @retval State of bit (1 or 0).
2034   */
2035 __STATIC_INLINE uint32_t LL_PWR_CPU_IsActiveFlag_STOP(void)
2036 {
2037   return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_STOPF) == (PWR_CPUCR_STOPF)) ? 1UL : 0UL);
2038 }
2039 
2040 #if defined (DUAL_CORE)
2041 /**
2042   * @brief  Get CPU2 System Stop Flag
2043   * @rmtoll CPU2CR   STOPF       LL_PWR_CPU2_IsActiveFlag_STOP
2044   * @retval State of bit (1 or 0).
2045   */
2046 __STATIC_INLINE uint32_t LL_PWR_CPU2_IsActiveFlag_STOP(void)
2047 {
2048   return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_STOPF) == (PWR_CPU2CR_STOPF)) ? 1UL : 0UL);
2049 }
2050 #endif /* DUAL_CORE */
2051 
2052 /**
2053   * @brief  Get CPU System Standby Flag
2054   * @rmtoll CPUCR   SBF       LL_PWR_CPU_IsActiveFlag_SB
2055   * @retval State of bit (1 or 0).
2056   */
2057 __STATIC_INLINE uint32_t LL_PWR_CPU_IsActiveFlag_SB(void)
2058 {
2059   return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_SBF) == (PWR_CPUCR_SBF)) ? 1UL : 0UL);
2060 }
2061 
2062 #if defined (DUAL_CORE)
2063 /**
2064   * @brief  Get CPU2 System Standby Flag
2065   * @rmtoll CPU2CR   SBF       LL_PWR_CPU2_IsActiveFlag_SB
2066   * @retval State of bit (1 or 0).
2067   */
2068 __STATIC_INLINE uint32_t LL_PWR_CPU2_IsActiveFlag_SB(void)
2069 {
2070   return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_SBF) == (PWR_CPU2CR_SBF)) ? 1UL : 0UL);
2071 }
2072 #endif /* DUAL_CORE */
2073 
2074 #if defined (PWR_CPUCR_SBF_D1)
2075 /**
2076   * @brief  Get CPU D1 Domain Standby Flag
2077   * @rmtoll CPUCR   SBF_D1       LL_PWR_CPU_IsActiveFlag_SB_D1
2078   * @retval State of bit (1 or 0).
2079   */
2080 __STATIC_INLINE uint32_t LL_PWR_CPU_IsActiveFlag_SB_D1(void)
2081 {
2082   return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_SBF_D1) == (PWR_CPUCR_SBF_D1)) ? 1UL : 0UL);
2083 }
2084 #endif /* PWR_CPUCR_SBF_D1 */
2085 
2086 #if defined (DUAL_CORE)
2087 /**
2088   * @brief  Get CPU2 D1 Domain Standby Flag
2089   * @rmtoll CPU2CR   SBF_D1       LL_PWR_CPU2_IsActiveFlag_SB_D1
2090   * @retval State of bit (1 or 0).
2091   */
2092 __STATIC_INLINE uint32_t LL_PWR_CPU2_IsActiveFlag_SB_D1(void)
2093 {
2094   return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_SBF_D1) == (PWR_CPU2CR_SBF_D1)) ? 1UL : 0UL);
2095 }
2096 #endif /* DUAL_CORE */
2097 
2098 #if defined (PWR_CPUCR_SBF_D2)
2099 /**
2100   * @brief  Get CPU D2 Domain Standby Flag
2101   * @rmtoll CPUCR   SBF_D2       LL_PWR_CPU_IsActiveFlag_SB_D2
2102   * @retval State of bit (1 or 0).
2103   */
2104 __STATIC_INLINE uint32_t LL_PWR_CPU_IsActiveFlag_SB_D2(void)
2105 {
2106   return ((READ_BIT(PWR->CPUCR, PWR_CPUCR_SBF_D2) == (PWR_CPUCR_SBF_D2)) ? 1UL : 0UL);
2107 }
2108 #endif /* PWR_CPUCR_SBF_D2 */
2109 
2110 #if defined (DUAL_CORE)
2111 /**
2112   * @brief  Get CPU2 D2 Domain Standby Flag
2113   * @rmtoll CPU2CR   SBF_D2       LL_PWR_CPU2_IsActiveFlag_SB_D2
2114   * @retval State of bit (1 or 0).
2115   */
2116 __STATIC_INLINE uint32_t LL_PWR_CPU2_IsActiveFlag_SB_D2(void)
2117 {
2118   return ((READ_BIT(PWR->CPU2CR, PWR_CPU2CR_SBF_D2) == (PWR_CPU2CR_SBF_D2)) ? 1UL : 0UL);
2119 }
2120 #endif /* DUAL_CORE */
2121 
2122 
2123 /**
2124   * @brief  Indicate whether the Regulator is ready in the selected voltage range
2125   *         or if its output voltage is still changing to the required voltage level
2126   * @rmtoll D3CR   VOSRDY       LL_PWR_IsActiveFlag_VOS
2127   * @retval State of bit (1 or 0).
2128   */
2129 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VOS(void)
2130 {
2131 #if defined (PWR_CPUCR_PDDS_D2)
2132   return ((READ_BIT(PWR->D3CR, PWR_D3CR_VOSRDY) == (PWR_D3CR_VOSRDY)) ? 1UL : 0UL);
2133 #else
2134   return ((READ_BIT(PWR->SRDCR, PWR_SRDCR_VOSRDY) == (PWR_SRDCR_VOSRDY)) ? 1UL : 0UL);
2135 #endif /* PWR_CPUCR_PDDS_D2 */
2136 }
2137 
2138 /**
2139   * @brief  Get Wake-up Flag 6
2140   * @rmtoll WKUPFR          WKUPF6          LL_PWR_IsActiveFlag_WU6
2141   * @retval State of bit (1 or 0).
2142   */
2143 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU6(void)
2144 {
2145   return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF6) == (PWR_WKUPFR_WKUPF6)) ? 1UL : 0UL);
2146 }
2147 
2148 #if defined (PWR_WKUPFR_WKUPF5)
2149 /**
2150   * @brief  Get Wake-up Flag 5
2151   * @rmtoll WKUPFR          WKUPF5          LL_PWR_IsActiveFlag_WU5
2152   * @retval State of bit (1 or 0).
2153   */
2154 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU5(void)
2155 {
2156   return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF5) == (PWR_WKUPFR_WKUPF5)) ? 1UL : 0UL);
2157 }
2158 #endif /* defined (PWR_WKUPFR_WKUPF5) */
2159 
2160 /**
2161   * @brief  Get Wake-up Flag 4
2162   * @rmtoll WKUPFR          WKUPF4          LL_PWR_IsActiveFlag_WU4
2163   * @retval State of bit (1 or 0).
2164   */
2165 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU4(void)
2166 {
2167   return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF4) == (PWR_WKUPFR_WKUPF4)) ? 1UL : 0UL);
2168 }
2169 
2170 #if defined (PWR_WKUPFR_WKUPF3)
2171 /**
2172   * @brief  Get Wake-up Flag 3
2173   * @rmtoll WKUPFR          WKUPF3          LL_PWR_IsActiveFlag_WU3
2174   * @retval State of bit (1 or 0).
2175   */
2176 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU3(void)
2177 {
2178   return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF3) == (PWR_WKUPFR_WKUPF3)) ? 1UL : 0UL);
2179 }
2180 #endif /* defined (PWR_WKUPFR_WKUPF3) */
2181 
2182 /**
2183   * @brief  Get Wake-up Flag 2
2184   * @rmtoll WKUPFR          WKUPF2          LL_PWR_IsActiveFlag_WU2
2185   * @retval State of bit (1 or 0).
2186   */
2187 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU2(void)
2188 {
2189   return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF2) == (PWR_WKUPFR_WKUPF2)) ? 1UL : 0UL);
2190 }
2191 
2192 /**
2193   * @brief  Get Wake-up Flag 1
2194   * @rmtoll WKUPFR          WKUPF1          LL_PWR_IsActiveFlag_WU1
2195   * @retval State of bit (1 or 0).
2196   */
2197 __STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU1(void)
2198 {
2199   return ((READ_BIT(PWR->WKUPFR, PWR_WKUPFR_WKUPF1) == (PWR_WKUPFR_WKUPF1)) ? 1UL : 0UL);
2200 }
2201 
2202 /**
2203   * @brief  Clear CPU STANDBY, STOP and HOLD flags
2204   * @rmtoll CPUCR   CSSF       LL_PWR_ClearFlag_CPU
2205   * @retval None
2206   */
2207 __STATIC_INLINE void LL_PWR_ClearFlag_CPU(void)
2208 {
2209   SET_BIT(PWR->CPUCR, PWR_CPUCR_CSSF);
2210 }
2211 
2212 #if defined (DUAL_CORE)
2213 /**
2214   * @brief  Clear CPU2 STANDBY, STOP and HOLD flags
2215   * @rmtoll CPU2CR   CSSF       LL_PWR_ClearFlag_CPU2
2216   * @retval None
2217   */
2218 __STATIC_INLINE void LL_PWR_ClearFlag_CPU2(void)
2219 {
2220   SET_BIT(PWR->CPU2CR, PWR_CPU2CR_CSSF);
2221 }
2222 #endif /* DUAL_CORE */
2223 
2224 /**
2225   * @brief  Clear Wake-up Flag 6
2226   * @rmtoll WKUPCR          WKUPC6         LL_PWR_ClearFlag_WU6
2227   * @retval None
2228   */
2229 __STATIC_INLINE void LL_PWR_ClearFlag_WU6(void)
2230 {
2231   WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC6);
2232 }
2233 
2234 #if defined (PWR_WKUPCR_WKUPC5)
2235 /**
2236   * @brief  Clear Wake-up Flag 5
2237   * @rmtoll WKUPCR          WKUPC5         LL_PWR_ClearFlag_WU5
2238   * @retval None
2239   */
2240 __STATIC_INLINE void LL_PWR_ClearFlag_WU5(void)
2241 {
2242   WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC5);
2243 }
2244 #endif /* defined (PWR_WKUPCR_WKUPC5) */
2245 
2246 /**
2247   * @brief  Clear Wake-up Flag 4
2248   * @rmtoll WKUPCR          WKUPC4         LL_PWR_ClearFlag_WU4
2249   * @retval None
2250   */
2251 __STATIC_INLINE void LL_PWR_ClearFlag_WU4(void)
2252 {
2253   WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC4);
2254 }
2255 
2256 #if defined (PWR_WKUPCR_WKUPC3)
2257 /**
2258   * @brief  Clear Wake-up Flag 3
2259   * @rmtoll WKUPCR          WKUPC3         LL_PWR_ClearFlag_WU3
2260   * @retval None
2261   */
2262 __STATIC_INLINE void LL_PWR_ClearFlag_WU3(void)
2263 {
2264   WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC3);
2265 }
2266 #endif /* defined (PWR_WKUPCR_WKUPC3) */
2267 
2268 /**
2269   * @brief  Clear Wake-up Flag 2
2270   * @rmtoll WKUPCR          WKUPC2         LL_PWR_ClearFlag_WU2
2271   * @retval None
2272   */
2273 __STATIC_INLINE void LL_PWR_ClearFlag_WU2(void)
2274 {
2275   WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC2);
2276 }
2277 
2278 /**
2279   * @brief  Clear Wake-up Flag 1
2280   * @rmtoll WKUPCR          WKUPC1         LL_PWR_ClearFlag_WU1
2281   * @retval None
2282   */
2283 __STATIC_INLINE void LL_PWR_ClearFlag_WU1(void)
2284 {
2285   WRITE_REG(PWR->WKUPCR, PWR_WKUPCR_WKUPC1);
2286 }
2287 
2288 #if defined (USE_FULL_LL_DRIVER)
2289 /** @defgroup PWR_LL_EF_Init De-initialization function
2290   * @ingroup RTEMSBSPsARMSTM32H7
2291   * @{
2292   */
2293 ErrorStatus LL_PWR_DeInit(void);
2294 /**
2295   * @}
2296   */
2297 #endif /* defined (USE_FULL_LL_DRIVER) */
2298 
2299 
2300 /**
2301   * @}
2302   */
2303 
2304 /**
2305   * @}
2306   */
2307 
2308 /**
2309   * @}
2310   */
2311 
2312 #endif /* defined (PWR) */
2313 
2314 /**
2315   * @}
2316   */
2317 
2318 #ifdef __cplusplus
2319 }
2320 #endif
2321 
2322 #endif /* STM32H7xx_LL_PWR_H */
2323