STM32H735xx HAL User Manual
stm32h7xx_ll_system.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32h7xx_ll_system.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of SYSTEM LL module.
00006   *
00007   ******************************************************************************
00008   * @attention
00009   *
00010   * Copyright (c) 2017 STMicroelectronics.
00011   * All rights reserved.
00012   *
00013   * This software is licensed under terms that can be found in the LICENSE file
00014   * in the root directory of this software component.
00015   * If no LICENSE file comes with this software, it is provided AS-IS.
00016   *
00017   ******************************************************************************
00018   @verbatim
00019   ==============================================================================
00020                      ##### How to use this driver #####
00021   ==============================================================================
00022     [..]
00023     The LL SYSTEM driver contains a set of generic APIs that can be
00024     used by user:
00025       (+) Some of the FLASH features need to be handled in the SYSTEM file.
00026       (+) Access to DBGCMU registers
00027       (+) Access to SYSCFG registers
00028 
00029   @endverbatim
00030   ******************************************************************************
00031   */
00032 
00033 /* Define to prevent recursive inclusion -------------------------------------*/
00034 #ifndef __STM32H7xx_LL_SYSTEM_H
00035 #define __STM32H7xx_LL_SYSTEM_H
00036 
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040 
00041 /* Includes ------------------------------------------------------------------*/
00042 #include "stm32h7xx.h"
00043 
00044 /** @addtogroup STM32H7xx_LL_Driver
00045   * @{
00046   */
00047 
00048 #if defined (FLASH) || defined (SYSCFG) || defined (DBGMCU)
00049 
00050 /** @defgroup SYSTEM_LL SYSTEM
00051   * @{
00052   */
00053 
00054 /* Private types -------------------------------------------------------------*/
00055 /* Private variables ---------------------------------------------------------*/
00056 
00057 /* Private constants ---------------------------------------------------------*/
00058 /** @defgroup SYSTEM_LL_Private_Constants SYSTEM Private Constants
00059   * @{
00060   */
00061 /** @defgroup SYSTEM_LL_EC_FLASH_BANK1_SECTORS SYSCFG Flash Bank1 sectors bits status
00062   * @{
00063   */
00064 #define LL_SYSCFG_FLASH_B1_SECTOR0_STATUS_BIT   0x10000U
00065 #define LL_SYSCFG_FLASH_B1_SECTOR1_STATUS_BIT   0x20000U
00066 #define LL_SYSCFG_FLASH_B1_SECTOR2_STATUS_BIT   0x40000U
00067 #define LL_SYSCFG_FLASH_B1_SECTOR3_STATUS_BIT   0x80000U
00068 #define LL_SYSCFG_FLASH_B1_SECTOR4_STATUS_BIT   0x100000U
00069 #define LL_SYSCFG_FLASH_B1_SECTOR5_STATUS_BIT   0x200000U
00070 #define LL_SYSCFG_FLASH_B1_SECTOR6_STATUS_BIT   0x400000U
00071 #define LL_SYSCFG_FLASH_B1_SECTOR7_STATUS_BIT   0x800000U
00072 /**
00073   * @}
00074   */
00075 
00076 /** @defgroup SYSTEM_LL_EC_FLASH_BANK2_SECTORS SYSCFG Flash Bank2 sectors bits status
00077   * @{
00078   */
00079 #define LL_SYSCFG_FLASH_B2_SECTOR0_STATUS_BIT   0x10000U
00080 #define LL_SYSCFG_FLASH_B2_SECTOR1_STATUS_BIT   0x20000U
00081 #define LL_SYSCFG_FLASH_B2_SECTOR2_STATUS_BIT   0x40000U
00082 #define LL_SYSCFG_FLASH_B2_SECTOR3_STATUS_BIT   0x80000U
00083 #define LL_SYSCFG_FLASH_B2_SECTOR4_STATUS_BIT   0x100000U
00084 #define LL_SYSCFG_FLASH_B2_SECTOR5_STATUS_BIT   0x200000U
00085 #define LL_SYSCFG_FLASH_B2_SECTOR6_STATUS_BIT   0x400000U
00086 #define LL_SYSCFG_FLASH_B2_SECTOR7_STATUS_BIT   0x800000U
00087 /**
00088   * @}
00089   */
00090 /**
00091   * @}
00092   */
00093 
00094 /* Private macros ------------------------------------------------------------*/
00095 
00096 /* Exported types ------------------------------------------------------------*/
00097 /* Exported constants --------------------------------------------------------*/
00098 /** @defgroup SYSTEM_LL_Exported_Constants SYSTEM Exported Constants
00099   * @{
00100   */
00101 
00102 /** @defgroup SYSTEM_LL_EC_I2C_FASTMODEPLUS SYSCFG I2C FASTMODEPLUS
00103   * @{
00104   */
00105 #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C1        SYSCFG_PMCR_I2C1_FMP       /*!< Enable Fast Mode Plus for I2C1      */
00106 #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C2        SYSCFG_PMCR_I2C2_FMP       /*!< Enable Fast Mode Plus for I2C2      */
00107 #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C3        SYSCFG_PMCR_I2C3_FMP       /*!< Enable Fast Mode Plus for I2C3      */
00108 #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C4        SYSCFG_PMCR_I2C4_FMP       /*!< Enable Fast Mode Plus for I2C4      */
00109 #if defined(I2C5)
00110 #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C5        SYSCFG_PMCR_I2C5_FMP       /*!< Enable Fast Mode Plus for I2C5      */
00111 #endif /*I2C5*/
00112 #define LL_SYSCFG_I2C_FASTMODEPLUS_PB6         SYSCFG_PMCR_I2C_PB6_FMP    /*!< Enable Fast Mode Plus on PB6        */
00113 #define LL_SYSCFG_I2C_FASTMODEPLUS_PB7         SYSCFG_PMCR_I2C_PB7_FMP    /*!< Enable Fast Mode Plus on PB7        */
00114 #define LL_SYSCFG_I2C_FASTMODEPLUS_PB8         SYSCFG_PMCR_I2C_PB8_FMP    /*!< Enable Fast Mode Plus on PB8        */
00115 #define LL_SYSCFG_I2C_FASTMODEPLUS_PB9         SYSCFG_PMCR_I2C_PB9_FMP    /*!< Enable Fast Mode Plus on PB9        */
00116 /**
00117   * @}
00118   */
00119 
00120 /** @defgroup SYSTEM_LL_EC_ANALOG_SWITCH Analog Switch control
00121 * @{
00122 */
00123 #if defined(SYSCFG_PMCR_BOOSTEN)
00124 #define LL_SYSCFG_ANALOG_SWITCH_BOOSTEN           SYSCFG_PMCR_BOOSTEN               /*!< I/O analog switch voltage booster enable */
00125 #endif /*SYSCFG_PMCR_BOOSTEN*/
00126 #define LL_SYSCFG_ANALOG_SWITCH_PA0               SYSCFG_PMCR_PA0SO                 /*!< PA0 Switch Open */
00127 #define LL_SYSCFG_ANALOG_SWITCH_PA1               SYSCFG_PMCR_PA1SO                 /*!< PA1 Switch Open */
00128 #define LL_SYSCFG_ANALOG_SWITCH_PC2               SYSCFG_PMCR_PC2SO                 /*!< PC2 Switch Open */
00129 #define LL_SYSCFG_ANALOG_SWITCH_PC3               SYSCFG_PMCR_PC3SO                 /*!< PC3 Switch Open */
00130 /**
00131   * @}
00132   */
00133 
00134 #if defined(SYSCFG_PMCR_EPIS_SEL)
00135 /** @defgroup SYSTEM_LL_EC_EPIS Ethernet PHY Interface Selection
00136 * @{
00137 */
00138 #define LL_SYSCFG_ETH_MII               0x00000000U                           /*!< ETH Media MII interface */
00139 #define LL_SYSCFG_ETH_RMII              SYSCFG_PMCR_EPIS_SEL_2                /*!< ETH Media RMII interface */
00140 /**
00141   * @}
00142   */
00143 #endif /* SYSCFG_PMCR_EPIS_SEL */
00144 
00145 /** @defgroup SYSTEM_LL_EC_EXTI_PORT SYSCFG EXTI PORT
00146   * @{
00147   */
00148 #define LL_SYSCFG_EXTI_PORTA               0U               /*!< EXTI PORT A                        */
00149 #define LL_SYSCFG_EXTI_PORTB               1U               /*!< EXTI PORT B                        */
00150 #define LL_SYSCFG_EXTI_PORTC               2U               /*!< EXTI PORT C                        */
00151 #define LL_SYSCFG_EXTI_PORTD               3U               /*!< EXTI PORT D                        */
00152 #define LL_SYSCFG_EXTI_PORTE               4U               /*!< EXTI PORT E                        */
00153 #define LL_SYSCFG_EXTI_PORTF               5U               /*!< EXTI PORT F                        */
00154 #define LL_SYSCFG_EXTI_PORTG               6U               /*!< EXTI PORT G                        */
00155 #define LL_SYSCFG_EXTI_PORTH               7U               /*!< EXTI PORT H                        */
00156 #if defined(GPIOI)
00157 #define LL_SYSCFG_EXTI_PORTI               8U               /*!< EXTI PORT I                        */
00158 #endif /*GPIOI*/
00159 #define LL_SYSCFG_EXTI_PORTJ               9U               /*!< EXTI PORT J                        */
00160 #define LL_SYSCFG_EXTI_PORTK               10U              /*!< EXTI PORT k                        */
00161 /**
00162   * @}
00163   */
00164 
00165 /** @defgroup SYSTEM_LL_EC_EXTI_LINE SYSCFG EXTI LINE
00166   * @{
00167   */
00168 #define LL_SYSCFG_EXTI_LINE0               ((0x000FUL << 16U) | 0U)  /*!< EXTI_POSITION_0  | EXTICR[0] */
00169 #define LL_SYSCFG_EXTI_LINE1               ((0x00F0UL << 16U) | 0U)  /*!< EXTI_POSITION_4  | EXTICR[0] */
00170 #define LL_SYSCFG_EXTI_LINE2               ((0x0F00UL << 16U) | 0U)  /*!< EXTI_POSITION_8  | EXTICR[0] */
00171 #define LL_SYSCFG_EXTI_LINE3               ((0xF000UL << 16U) | 0U)  /*!< EXTI_POSITION_12 | EXTICR[0] */
00172 #define LL_SYSCFG_EXTI_LINE4               ((0x000FUL << 16U) | 1U)  /*!< EXTI_POSITION_0  | EXTICR[1] */
00173 #define LL_SYSCFG_EXTI_LINE5               ((0x00F0UL << 16U) | 1U)  /*!< EXTI_POSITION_4  | EXTICR[1] */
00174 #define LL_SYSCFG_EXTI_LINE6               ((0x0F00UL << 16U) | 1U)  /*!< EXTI_POSITION_8  | EXTICR[1] */
00175 #define LL_SYSCFG_EXTI_LINE7               ((0xF000UL << 16U) | 1U)  /*!< EXTI_POSITION_12 | EXTICR[1] */
00176 #define LL_SYSCFG_EXTI_LINE8               ((0x000FUL << 16U) | 2U)  /*!< EXTI_POSITION_0  | EXTICR[2] */
00177 #define LL_SYSCFG_EXTI_LINE9               ((0x00F0UL << 16U) | 2U)  /*!< EXTI_POSITION_4  | EXTICR[2] */
00178 #define LL_SYSCFG_EXTI_LINE10              ((0x0F00UL << 16U) | 2U)  /*!< EXTI_POSITION_8  | EXTICR[2] */
00179 #define LL_SYSCFG_EXTI_LINE11              ((0xF000UL << 16U) | 2U)  /*!< EXTI_POSITION_12 | EXTICR[2] */
00180 #define LL_SYSCFG_EXTI_LINE12              ((0x000FUL << 16U) | 3U)  /*!< EXTI_POSITION_0  | EXTICR[3] */
00181 #define LL_SYSCFG_EXTI_LINE13              ((0x00F0UL << 16U) | 3U)  /*!< EXTI_POSITION_4  | EXTICR[3] */
00182 #define LL_SYSCFG_EXTI_LINE14              ((0x0F00UL << 16U) | 3U)  /*!< EXTI_POSITION_8  | EXTICR[3] */
00183 #define LL_SYSCFG_EXTI_LINE15              ((0xF000UL << 16U) | 3U)  /*!< EXTI_POSITION_12 | EXTICR[3] */
00184 /**
00185   * @}
00186   */
00187 
00188 /** @defgroup SYSTEM_LL_EC_TIMBREAK SYSCFG TIMER BREAK
00189   * @{
00190   */
00191 #define LL_SYSCFG_TIMBREAK_AXISRAM_DBL_ECC SYSCFG_CFGR_AXISRAML /*!< Enables and locks the AXIRAM double ECC error signal
00192                                                                      with Break Input of TIM1/8/15/16/17 and HRTIM        */
00193 
00194 #define LL_SYSCFG_TIMBREAK_ITCM_DBL_ECC    SYSCFG_CFGR_ITCML    /*!< Enables and locks the ITCM double ECC error signal
00195                                                                      with Break Input of TIM1/8/15/16/17 and HRTIM        */
00196 
00197 #define LL_SYSCFG_TIMBREAK_DTCM_DBL_ECC    SYSCFG_CFGR_DTCML    /*!< Enables and locks the DTCM double ECC error signal
00198                                                                      with Break Input of TIM1/8/15/16/17 and HRTIM        */
00199 
00200 #define LL_SYSCFG_TIMBREAK_SRAM1_DBL_ECC   SYSCFG_CFGR_SRAM1L   /*!< Enables and locks the SRAM1 double ECC error signal
00201                                                                      with Break Input of TIM1/8/15/16/17 and HRTIM        */
00202 
00203 #define LL_SYSCFG_TIMBREAK_SRAM2_DBL_ECC   SYSCFG_CFGR_SRAM2L   /*!< Enables and locks the SRAM2 double ECC error signal
00204                                                                      with Break Input of TIM1/8/15/16/17 and HRTIM        */
00205 
00206 #if defined(SYSCFG_CFGR_SRAM3L)
00207 #define LL_SYSCFG_TIMBREAK_SRAM3_DBL_ECC   SYSCFG_CFGR_SRAM3L   /*!< Enables and locks the SRAM3 double ECC error signal
00208                                                                      with Break Input of TIM1/8/15/16/17 and HRTIM        */
00209 #endif /*SYSCFG_CFGR_SRAM3L*/
00210 
00211 #define LL_SYSCFG_TIMBREAK_SRAM4_DBL_ECC   SYSCFG_CFGR_SRAM4L   /*!< Enables and locks the SRAM4 double ECC error signal
00212                                                                      with Break Input of TIM1/8/15/16/17 and HRTIM        */
00213 
00214 #define LL_SYSCFG_TIMBREAK_BKRAM_DBL_ECC   SYSCFG_CFGR_BKRAML   /*!< Enables and locks the BKRAM double ECC error signal
00215                                                                      with Break Input of TIM1/8/15/16/17 and HRTIM        */
00216 
00217 #define LL_SYSCFG_TIMBREAK_CM7_LOCKUP      SYSCFG_CFGR_CM7L     /*!< Enables and locks the Cortex-M7 LOCKUP signal
00218                                                                      with Break Input of TIM1/8/15/16/17 and HRTIM        */
00219 
00220 #define LL_SYSCFG_TIMBREAK_FLASH_DBL_ECC   SYSCFG_CFGR_FLASHL   /*!< Enables and locks the FLASH double ECC error signal
00221                                                                      with Break Input of TIM1/8/15/16/17 and HRTIM        */
00222 
00223 #define LL_SYSCFG_TIMBREAK_PVD             SYSCFG_CFGR_PVDL     /*!< Enables and locks the PVD connection
00224                                                                      with TIM1/8/15/16/17 and HRTIM Break Input
00225                                                                      and also the PVDE and PLS bits of the Power Control Interface */
00226 #if defined(DUAL_CORE)
00227 #define LL_SYSCFG_TIMBREAK_CM4_LOCKUP      SYSCFG_CFGR_CM4L     /*!< Enables and locks the Cortex-M4 LOCKUP signal
00228                                                                      with Break Input of TIM1/8/15/16/17 and HRTIM        */
00229 #endif /* DUAL_CORE */
00230 /**
00231   * @}
00232   */
00233 
00234 /** @defgroup SYSTEM_LL_EC_CS SYSCFG I/O compensation cell Code selection
00235   * @{
00236   */
00237 #define LL_SYSCFG_CELL_CODE               0U
00238 #define LL_SYSCFG_REGISTER_CODE           SYSCFG_CCCSR_CS
00239 /**
00240   * @}
00241   */
00242 
00243 /** @defgroup SYSTEM_LL_IWDG1_CONTROL_MODES SYSCFG IWDG1 control modes
00244   * @{
00245   */
00246 #define LL_SYSCFG_IWDG1_SW_CONTROL_MODE   0U
00247 #define LL_SYSCFG_IWDG1_HW_CONTROL_MODE   SYSCFG_UR11_IWDG1M
00248 /**
00249   * @}
00250   */
00251 
00252 #if defined (DUAL_CORE)
00253 /** @defgroup SYSTEM_LL_IWDG2_CONTROL_MODES SYSCFG IWDG2 control modes
00254   * @{
00255   */
00256 #define LL_SYSCFG_IWDG2_SW_CONTROL_MODE   0U
00257 #define LL_SYSCFG_IWDG2_HW_CONTROL_MODE   SYSCFG_UR12_IWDG2M
00258 /**
00259   * @}
00260   */
00261 #endif /* DUAL_CORE */
00262 
00263 /** @defgroup SYSTEM_LL_DTCM_RAM_SIZE SYSCFG DTCM RAM size configuration
00264   * @{
00265   */
00266 #define LL_SYSCFG_DTCM_RAM_SIZE_2KB     0U
00267 #define LL_SYSCFG_DTCM_RAM_SIZE_4KB     1U
00268 #define LL_SYSCFG_DTCM_RAM_SIZE_8KB     2U
00269 #define LL_SYSCFG_DTCM_RAM_SIZE_16KB    3U
00270 /**
00271   * @}
00272   */
00273 #ifdef SYSCFG_UR17_TCM_AXI_CFG
00274 /** @defgroup SYSTEM_LL_PACKAGE SYSCFG device package
00275   * @{
00276   */
00277 #define LL_SYSCFG_ITCM_AXI_64KB_320KB     0U
00278 #define LL_SYSCFG_ITCM_AXI_128KB_256KB    1U
00279 #define LL_SYSCFG_ITCM_AXI_192KB_192KB    2U
00280 #define LL_SYSCFG_ITCM_AXI_256KB_128KB    3U
00281 /**
00282   * @}
00283   */
00284 #endif /* #ifdef SYSCFG_UR17_TCM_AXI_CFG */
00285 #if defined(SYSCFG_PKGR_PKG)
00286 /** @defgroup SYSTEM_LL_PACKAGE SYSCFG device package
00287   * @{
00288   */
00289 #if (STM32H7_DEV_ID == 0x450UL)
00290 #define LL_SYSCFG_LQFP100_PACKAGE             0U
00291 #define LL_SYSCFG_TQFP144_PACKAGE             2U
00292 #define LL_SYSCFG_TQFP176_UFBGA176_PACKAGE    5U
00293 #define LL_SYSCFG_LQFP208_TFBGA240_PACKAGE    8U
00294 #elif (STM32H7_DEV_ID == 0x483UL)
00295 #define LL_SYSCFG_VFQFPN68_INDUS_PACKAGE       0U
00296 #define LL_SYSCFG_TFBGA100_LQFP100_PACKAGE    1U
00297 #define LL_SYSCFG_LQFP100_INDUS_PACKAGE        2U
00298 #define LL_SYSCFG_TFBGA100_INDUS_PACKAGE       3U
00299 #define LL_SYSCFG_WLCSP115_INDUS_PACKAGE       4U
00300 #define LL_SYSCFG_LQFP144_PACKAGE             5U
00301 #define LL_SYSCFG_UFBGA144_PACKAGE            6U
00302 #define LL_SYSCFG_LQFP144_INDUS_PACKAGE        7U
00303 #define LL_SYSCFG_UFBGA169_INDUS_PACKAGE       8U
00304 #define LL_SYSCFG_UFBGA176PLUS25_INDUS_PACKAGE 9U
00305 #define LL_SYSCFG_LQFP176_INDUS_PACKAGE        10U
00306 #endif /* STM32H7_DEV_ID == 0x450UL */
00307 /**
00308   * @}
00309   */
00310 #endif /* SYSCFG_PKGR_PKG */
00311   
00312 /** @defgroup SYSTEM_LL_SYSCFG_BOR SYSCFG Brownout Reset Threshold Level
00313   * @{
00314   */
00315 #define LL_SYSCFG_BOR_OFF_RESET_LEVEL      0x00000000U
00316 #define LL_SYSCFG_BOR_LOW_RESET_LEVEL      SYSCFG_UR2_BORH_0
00317 #define LL_SYSCFG_BOR_MEDIUM_RESET_LEVEL   SYSCFG_UR2_BORH_1
00318 #define LL_SYSCFG_BOR_HIGH_RESET_LEVEL     SYSCFG_UR2_BORH
00319 
00320 /**
00321   * @}
00322   */
00323 
00324 /** @defgroup SYSTEM_LL_EC_TRACE DBGMCU TRACE Pin Assignment
00325   * @{
00326   */
00327 #define LL_DBGMCU_TRACE_NONE               0x00000000U                                     /*!< TRACE pins not assigned (default state) */
00328 #define LL_DBGMCU_TRACE_ASYNCH             DBGMCU_CR_TRACE_IOEN                            /*!< TRACE pin assignment for Asynchronous Mode */
00329 #define LL_DBGMCU_TRACE_SYNCH_SIZE1        (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE_0) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 1 */
00330 #define LL_DBGMCU_TRACE_SYNCH_SIZE2        (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE_1) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 2 */
00331 #define LL_DBGMCU_TRACE_SYNCH_SIZE4        (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE)   /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 4 */
00332 /**
00333   * @}
00334   */
00335 
00336 /** @defgroup SYSTEM_LL_EC_APB1_GRP1_STOP_IP DBGMCU APB1 GRP1 STOP IP
00337   * @{
00338   */
00339 #define LL_DBGMCU_APB1_GRP1_TIM2_STOP      DBGMCU_APB1LFZ1_DBG_TIM2     /*!< TIM2 counter stopped when core is halted */
00340 #define LL_DBGMCU_APB1_GRP1_TIM3_STOP      DBGMCU_APB1LFZ1_DBG_TIM3     /*!< TIM3 counter stopped when core is halted */
00341 #define LL_DBGMCU_APB1_GRP1_TIM4_STOP      DBGMCU_APB1LFZ1_DBG_TIM4     /*!< TIM4 counter stopped when core is halted */
00342 #define LL_DBGMCU_APB1_GRP1_TIM5_STOP      DBGMCU_APB1LFZ1_DBG_TIM5     /*!< TIM5 counter stopped when core is halted */
00343 #define LL_DBGMCU_APB1_GRP1_TIM6_STOP      DBGMCU_APB1LFZ1_DBG_TIM6     /*!< TIM6 counter stopped when core is halted */
00344 #define LL_DBGMCU_APB1_GRP1_TIM7_STOP      DBGMCU_APB1LFZ1_DBG_TIM7     /*!< TIM7 counter stopped when core is halted */
00345 #define LL_DBGMCU_APB1_GRP1_TIM12_STOP     DBGMCU_APB1LFZ1_DBG_TIM12    /*!< TIM12 counter stopped when core is halted */
00346 #define LL_DBGMCU_APB1_GRP1_TIM13_STOP     DBGMCU_APB1LFZ1_DBG_TIM13    /*!< TIM13 counter stopped when core is halted */
00347 #define LL_DBGMCU_APB1_GRP1_TIM14_STOP     DBGMCU_APB1LFZ1_DBG_TIM14    /*!< TIM14 counter stopped when core is halted */
00348 #define LL_DBGMCU_APB1_GRP1_LPTIM1_STOP    DBGMCU_APB1LFZ1_DBG_LPTIM1   /*!< LPTIM1 counter stopped when core is halted */
00349 #define LL_DBGMCU_APB1_GRP1_I2C1_STOP      DBGMCU_APB1LFZ1_DBG_I2C1     /*!< I2C1 SMBUS timeout mode stopped when Core is halted */
00350 #define LL_DBGMCU_APB1_GRP1_I2C2_STOP      DBGMCU_APB1LFZ1_DBG_I2C2     /*!< I2C2 SMBUS timeout mode stopped when Core is halted */
00351 #define LL_DBGMCU_APB1_GRP1_I2C3_STOP      DBGMCU_APB1LFZ1_DBG_I2C3     /*!< I2C3 SMBUS timeout mode stopped when Core is halted */
00352 #if defined(I2C5)
00353 #define LL_DBGMCU_APB1_GRP1_I2C5_STOP      DBGMCU_APB1LFZ1_DBG_I2C5     /*!< I2C5 SMBUS timeout mode stopped when Core is halted */
00354 #endif /*I2C5*/
00355 /**
00356   * @}
00357   */
00358 
00359 
00360 /** @defgroup SYSTEM_LL_EC_APB1_GRP2_STOP_IP DBGMCU APB1 GRP2 STOP IP
00361   * @{
00362   */
00363 #if defined(DBGMCU_APB1HFZ1_DBG_FDCAN)
00364 #define LL_DBGMCU_APB1_GRP2_FDCAN_STOP    DBGMCU_APB1HFZ1_DBG_FDCAN    /*!< FDCAN is frozen while the core is in debug mode */
00365 #endif /*DBGMCU_APB1HFZ1_DBG_FDCAN*/
00366 #if defined(TIM23)
00367 #define LL_DBGMCU_APB1_GRP2_TIM23_STOP    DBGMCU_APB1HFZ1_DBG_TIM23    /*!< TIM23 is frozen while the core is in debug mode */
00368 #endif /*TIM23*/
00369 #if defined(TIM24)
00370 #define LL_DBGMCU_APB1_GRP2_TIM24_STOP    DBGMCU_APB1HFZ1_DBG_TIM24    /*!< TIM24 is frozen while the core is in debug mode */
00371 #endif /*TIM24*/
00372 /**
00373   * @}
00374   */
00375 
00376 /** @defgroup SYSTEM_LL_EC_APB2_GRP1_STOP_IP DBGMCU APB2 GRP1 STOP IP
00377   * @{
00378   */
00379 #define LL_DBGMCU_APB2_GRP1_TIM1_STOP      DBGMCU_APB2FZ1_DBG_TIM1    /*!< TIM1 counter stopped when core is halted */
00380 #define LL_DBGMCU_APB2_GRP1_TIM8_STOP      DBGMCU_APB2FZ1_DBG_TIM8    /*!< TIM8 counter stopped when core is halted */
00381 #define LL_DBGMCU_APB2_GRP1_TIM15_STOP     DBGMCU_APB2FZ1_DBG_TIM15   /*!< TIM15 counter stopped when core is halted */
00382 #define LL_DBGMCU_APB2_GRP1_TIM16_STOP     DBGMCU_APB2FZ1_DBG_TIM16   /*!< TIM16 counter stopped when core is halted */
00383 #define LL_DBGMCU_APB2_GRP1_TIM17_STOP     DBGMCU_APB2FZ1_DBG_TIM17   /*!< TIM17 counter stopped when core is halted */
00384 #if defined(HRTIM1)
00385 #define LL_DBGMCU_APB2_GRP1_HRTIM_STOP     DBGMCU_APB2FZ1_DBG_HRTIM   /*!< HRTIM counter stopped when core is halted */
00386 #endif /*HRTIM1*/
00387 /**
00388   * @}
00389   */
00390 
00391 /** @defgroup SYSTEM_LL_EC_APB3_GRP1_STOP_IP DBGMCU APB3 GRP1 STOP IP
00392   * @{
00393   */
00394 #define LL_DBGMCU_APB3_GRP1_WWDG1_STOP      DBGMCU_APB3FZ1_DBG_WWDG1   /*!< WWDG1 is frozen while the core is in debug mode */
00395 /**
00396   * @}
00397   */
00398 
00399 /** @defgroup SYSTEM_LL_EC_APB4_GRP1_STOP_IP DBGMCU APB4 GRP1 STOP IP
00400   * @{
00401   */
00402 #define LL_DBGMCU_APB4_GRP1_I2C4_STOP       DBGMCU_APB4FZ1_DBG_I2C4     /*!< I2C4 is frozen while the core is in debug mode */
00403 #define LL_DBGMCU_APB4_GRP1_LPTIM2_STOP     DBGMCU_APB4FZ1_DBG_LPTIM2   /*!< LPTIM2 is frozen while the core is in debug mode */
00404 #define LL_DBGMCU_APB4_GRP1_LPTIM3_STOP     DBGMCU_APB4FZ1_DBG_LPTIM3   /*!< LPTIM3 is frozen while the core is in debug mode */
00405 #define LL_DBGMCU_APB4_GRP1_LPTIM4_STOP     DBGMCU_APB4FZ1_DBG_LPTIM4   /*!< LPTIM4 is frozen while the core is in debug mode */
00406 #define LL_DBGMCU_APB4_GRP1_LPTIM5_STOP     DBGMCU_APB4FZ1_DBG_LPTIM5   /*!< LPTIM5 is frozen while the core is in debug mode */
00407 #define LL_DBGMCU_APB4_GRP1_RTC_STOP        DBGMCU_APB4FZ1_DBG_RTC      /*!< RTC is frozen while the core is in debug mode */
00408 #define LL_DBGMCU_APB4_GRP1_IWDG1_STOP      DBGMCU_APB4FZ1_DBG_IWDG1    /*!< IWDG1 is frozen while the core is in debug mode */
00409 /**
00410   * @}
00411   */
00412 
00413 /** @defgroup SYSTEM_LL_EC_LATENCY FLASH LATENCY
00414   * @{
00415   */
00416 #define LL_FLASH_LATENCY_0                 FLASH_ACR_LATENCY_0WS   /*!< FLASH Zero wait state */
00417 #define LL_FLASH_LATENCY_1                 FLASH_ACR_LATENCY_1WS   /*!< FLASH One wait state */
00418 #define LL_FLASH_LATENCY_2                 FLASH_ACR_LATENCY_2WS   /*!< FLASH Two wait states */
00419 #define LL_FLASH_LATENCY_3                 FLASH_ACR_LATENCY_3WS   /*!< FLASH Three wait states */
00420 #define LL_FLASH_LATENCY_4                 FLASH_ACR_LATENCY_4WS   /*!< FLASH Four wait states */
00421 #define LL_FLASH_LATENCY_5                 FLASH_ACR_LATENCY_5WS   /*!< FLASH five wait state */
00422 #define LL_FLASH_LATENCY_6                 FLASH_ACR_LATENCY_6WS   /*!< FLASH six wait state */
00423 #define LL_FLASH_LATENCY_7                 FLASH_ACR_LATENCY_7WS   /*!< FLASH seven wait states */
00424 /**
00425   * @}
00426   */
00427 
00428 /**
00429   * @}
00430   */
00431 
00432 /* Exported macro ------------------------------------------------------------*/
00433 
00434 /* Exported functions --------------------------------------------------------*/
00435 /** @defgroup SYSTEM_LL_Exported_Functions SYSTEM Exported Functions
00436   * @{
00437   */
00438 
00439 /** @defgroup SYSTEM_LL_EF_SYSCFG SYSCFG
00440   * @{
00441   */
00442 
00443 #if defined(SYSCFG_PMCR_EPIS_SEL)
00444 /**
00445   * @brief  Select Ethernet PHY interface
00446   * @rmtoll PMCR    EPIS_SEL    LL_SYSCFG_SetPHYInterface
00447   * @param  Interface This parameter can be one of the following values:
00448   *         @arg @ref LL_SYSCFG_ETH_MII
00449   *         @arg @ref LL_SYSCFG_ETH_RMII
00450   * @retval None
00451   */
00452 __STATIC_INLINE void LL_SYSCFG_SetPHYInterface(uint32_t Interface)
00453 {
00454   MODIFY_REG(SYSCFG->PMCR, SYSCFG_PMCR_EPIS_SEL, Interface);
00455 }
00456 
00457 /**
00458   * @brief  Get Ethernet PHY interface
00459   * @rmtoll PMCR    EPIS_SEL    LL_SYSCFG_GetPHYInterface
00460   * @retval Returned value can be one of the following values:
00461   *         @arg @ref LL_SYSCFG_ETH_MII
00462   *         @arg @ref LL_SYSCFG_ETH_RMII
00463   */
00464 __STATIC_INLINE uint32_t LL_SYSCFG_GetPHYInterface(void)
00465 {
00466   return (uint32_t)(READ_BIT(SYSCFG->PMCR, SYSCFG_PMCR_EPIS_SEL));
00467 }
00468 
00469 #endif /* SYSCFG_PMCR_EPIS_SEL */
00470 /**
00471   * @brief  Open an Analog Switch
00472   * @rmtoll PMCR    PA0SO   LL_SYSCFG_OpenAnalogSwitch
00473   * @rmtoll PMCR    PA1SO   LL_SYSCFG_OpenAnalogSwitch
00474   * @rmtoll PMCR    PC2SO   LL_SYSCFG_OpenAnalogSwitch
00475   * @rmtoll PMCR    PC3SO   LL_SYSCFG_OpenAnalogSwitch
00476   * @param  AnalogSwitch This parameter can be one of the following values:
00477   *         @arg LL_SYSCFG_ANALOG_SWITCH_PA0 : PA0 analog switch
00478   *         @arg LL_SYSCFG_ANALOG_SWITCH_PA1:  PA1 analog switch
00479   *         @arg LL_SYSCFG_ANALOG_SWITCH_PC2 : PC2 analog switch
00480   *         @arg LL_SYSCFG_ANALOG_SWITCH_PC3:  PC3 analog switch
00481   * @retval None
00482   */
00483 __STATIC_INLINE void LL_SYSCFG_OpenAnalogSwitch(uint32_t AnalogSwitch)
00484 {
00485   SET_BIT(SYSCFG->PMCR, AnalogSwitch);
00486 }
00487 
00488 /**
00489   * @brief  Close an Analog Switch
00490   * @rmtoll PMCR    PA0SO   LL_SYSCFG_CloseAnalogSwitch
00491   * @rmtoll PMCR    PA1SO   LL_SYSCFG_CloseAnalogSwitch
00492   * @rmtoll PMCR    PC2SO   LL_SYSCFG_CloseAnalogSwitch
00493   * @rmtoll PMCR    PC3SO   LL_SYSCFG_CloseAnalogSwitch
00494   * @param  AnalogSwitch This parameter can be one of the following values:
00495   *         @arg LL_SYSCFG_ANALOG_SWITCH_PA0 : PA0 analog switch
00496   *         @arg LL_SYSCFG_ANALOG_SWITCH_PA1:  PA1 analog switch
00497   *         @arg LL_SYSCFG_ANALOG_SWITCH_PC2 : PC2 analog switch
00498   *         @arg LL_SYSCFG_ANALOG_SWITCH_PC3:  PC3 analog switch
00499   * @retval None
00500   */
00501 __STATIC_INLINE void LL_SYSCFG_CloseAnalogSwitch(uint32_t AnalogSwitch)
00502 {
00503   CLEAR_BIT(SYSCFG->PMCR, AnalogSwitch);
00504 }
00505 #ifdef SYSCFG_PMCR_BOOSTEN
00506 /**
00507   * @brief  Enable the Analog booster to reduce the total harmonic distortion
00508   *         of the analog switch when the supply voltage is lower than 2.7 V
00509   * @rmtoll PMCR    BOOSTEN   LL_SYSCFG_EnableAnalogBooster
00510   * @note   Activating the booster allows to guaranty the analog switch AC performance
00511   *         when the supply voltage is below 2.7 V: in this case, the analog switch
00512   *         performance is the same on the full voltage range
00513   * @retval None
00514   */
00515 __STATIC_INLINE void LL_SYSCFG_EnableAnalogBooster(void)
00516 {
00517  SET_BIT(SYSCFG->PMCR, SYSCFG_PMCR_BOOSTEN) ;
00518 }
00519 
00520 /**
00521   * @brief  Disable the Analog booster
00522   * @rmtoll PMCR    BOOSTEN   LL_SYSCFG_DisableAnalogBooster
00523   * @note   Activating the booster allows to guaranty the analog switch AC performance
00524   *         when the supply voltage is below 2.7 V: in this case, the analog switch
00525   *         performance is the same on the full voltage range
00526   * @retval None
00527   */
00528 __STATIC_INLINE void LL_SYSCFG_DisableAnalogBooster(void)
00529 {
00530  CLEAR_BIT(SYSCFG->PMCR, SYSCFG_PMCR_BOOSTEN) ;
00531 }
00532 #endif /*SYSCFG_PMCR_BOOSTEN*/
00533 /**
00534   * @brief  Enable the I2C fast mode plus driving capability.
00535   * @rmtoll SYSCFG_PMCR   I2C_PBx_FMP   LL_SYSCFG_EnableFastModePlus\n
00536   *         SYSCFG_PMCR   I2Cx_FMP      LL_SYSCFG_EnableFastModePlus
00537   * @param  ConfigFastModePlus This parameter can be a combination of the following values:
00538   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6
00539   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7
00540   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 (*)
00541   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 (*)
00542   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1
00543   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*)
00544   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3
00545   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4(*)
00546   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C5(*)
00547   *
00548   *         (*) value not defined in all devices
00549   * @retval None
00550   */
00551 __STATIC_INLINE void LL_SYSCFG_EnableFastModePlus(uint32_t ConfigFastModePlus)
00552 {
00553   SET_BIT(SYSCFG->PMCR, ConfigFastModePlus);
00554 }
00555 
00556 /**
00557   * @brief  Disable the I2C fast mode plus driving capability.
00558   * @rmtoll SYSCFG_PMCR    I2C_PBx_FMP   LL_SYSCFG_DisableFastModePlus\n
00559   *         SYSCFG_PMCR    I2Cx_FMP      LL_SYSCFG_DisableFastModePlus
00560   * @param  ConfigFastModePlus This parameter can be a combination of the following values:
00561   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6
00562   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7
00563   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 (*)
00564   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 (*)
00565   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1
00566   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*)
00567   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3
00568   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4
00569   *         @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C5 (*)
00570   *
00571   *         (*) value not defined in all devices
00572   * @retval None
00573   */
00574 __STATIC_INLINE void LL_SYSCFG_DisableFastModePlus(uint32_t ConfigFastModePlus)
00575 {
00576   CLEAR_BIT(SYSCFG->PMCR, ConfigFastModePlus);
00577 }
00578 
00579 /**
00580   * @brief  Configure source input for the EXTI external interrupt.
00581   * @rmtoll SYSCFG_EXTICR1  EXTIx         LL_SYSCFG_SetEXTISource\n
00582   *         SYSCFG_EXTICR2 EXTIx         LL_SYSCFG_SetEXTISource\n
00583   *         SYSCFG_EXTICR3 EXTIx         LL_SYSCFG_SetEXTISource\n
00584   *         SYSCFG_EXTICR4 EXTIx         LL_SYSCFG_SetEXTISource
00585   * @param  Port This parameter can be one of the following values:
00586   *         @arg @ref LL_SYSCFG_EXTI_PORTA
00587   *         @arg @ref LL_SYSCFG_EXTI_PORTB
00588   *         @arg @ref LL_SYSCFG_EXTI_PORTC
00589   *         @arg @ref LL_SYSCFG_EXTI_PORTD
00590   *         @arg @ref LL_SYSCFG_EXTI_PORTE
00591   *         @arg @ref LL_SYSCFG_EXTI_PORTF
00592   *         @arg @ref LL_SYSCFG_EXTI_PORTG
00593   *         @arg @ref LL_SYSCFG_EXTI_PORTH
00594   *         @arg @ref LL_SYSCFG_EXTI_PORTI (*)
00595   *         @arg @ref LL_SYSCFG_EXTI_PORTJ
00596   *         @arg @ref LL_SYSCFG_EXTI_PORTK
00597   *
00598   *         (*) value not defined in all devices
00599   * @param  Line This parameter can be one of the following values:
00600   *         @arg @ref LL_SYSCFG_EXTI_LINE0
00601   *         @arg @ref LL_SYSCFG_EXTI_LINE1
00602   *         @arg @ref LL_SYSCFG_EXTI_LINE2
00603   *         @arg @ref LL_SYSCFG_EXTI_LINE3
00604   *         @arg @ref LL_SYSCFG_EXTI_LINE4
00605   *         @arg @ref LL_SYSCFG_EXTI_LINE5
00606   *         @arg @ref LL_SYSCFG_EXTI_LINE6
00607   *         @arg @ref LL_SYSCFG_EXTI_LINE7
00608   *         @arg @ref LL_SYSCFG_EXTI_LINE8
00609   *         @arg @ref LL_SYSCFG_EXTI_LINE9
00610   *         @arg @ref LL_SYSCFG_EXTI_LINE10
00611   *         @arg @ref LL_SYSCFG_EXTI_LINE11
00612   *         @arg @ref LL_SYSCFG_EXTI_LINE12
00613   *         @arg @ref LL_SYSCFG_EXTI_LINE13
00614   *         @arg @ref LL_SYSCFG_EXTI_LINE14
00615   *         @arg @ref LL_SYSCFG_EXTI_LINE15
00616   * @retval None
00617   */
00618 __STATIC_INLINE void LL_SYSCFG_SetEXTISource(uint32_t Port, uint32_t Line)
00619 {
00620   MODIFY_REG(SYSCFG->EXTICR[Line & 0x3U], (Line >> 16U), Port << ((POSITION_VAL(Line >> 16U)) & 31U));
00621 }
00622 
00623 /**
00624   * @brief  Get the configured defined for specific EXTI Line
00625   * @rmtoll SYSCFG_EXTICR1 EXTIx         LL_SYSCFG_GetEXTISource\n
00626   *         SYSCFG_EXTICR2 EXTIx         LL_SYSCFG_GetEXTISource\n
00627   *         SYSCFG_EXTICR3 EXTIx         LL_SYSCFG_GetEXTISource\n
00628   *         SYSCFG_EXTICR4 EXTIx         LL_SYSCFG_GetEXTISource
00629   * @param  Line This parameter can be one of the following values:
00630   *         @arg @ref LL_SYSCFG_EXTI_LINE0
00631   *         @arg @ref LL_SYSCFG_EXTI_LINE1
00632   *         @arg @ref LL_SYSCFG_EXTI_LINE2
00633   *         @arg @ref LL_SYSCFG_EXTI_LINE3
00634   *         @arg @ref LL_SYSCFG_EXTI_LINE4
00635   *         @arg @ref LL_SYSCFG_EXTI_LINE5
00636   *         @arg @ref LL_SYSCFG_EXTI_LINE6
00637   *         @arg @ref LL_SYSCFG_EXTI_LINE7
00638   *         @arg @ref LL_SYSCFG_EXTI_LINE8
00639   *         @arg @ref LL_SYSCFG_EXTI_LINE9
00640   *         @arg @ref LL_SYSCFG_EXTI_LINE10
00641   *         @arg @ref LL_SYSCFG_EXTI_LINE11
00642   *         @arg @ref LL_SYSCFG_EXTI_LINE12
00643   *         @arg @ref LL_SYSCFG_EXTI_LINE13
00644   *         @arg @ref LL_SYSCFG_EXTI_LINE14
00645   *         @arg @ref LL_SYSCFG_EXTI_LINE15
00646   * @retval Returned value can be one of the following values:
00647   *         @arg @ref LL_SYSCFG_EXTI_PORTA
00648   *         @arg @ref LL_SYSCFG_EXTI_PORTB
00649   *         @arg @ref LL_SYSCFG_EXTI_PORTC
00650   *         @arg @ref LL_SYSCFG_EXTI_PORTD
00651   *         @arg @ref LL_SYSCFG_EXTI_PORTE
00652   *         @arg @ref LL_SYSCFG_EXTI_PORTF
00653   *         @arg @ref LL_SYSCFG_EXTI_PORTG
00654   *         @arg @ref LL_SYSCFG_EXTI_PORTH
00655   *         @arg @ref LL_SYSCFG_EXTI_PORTI (*)
00656   *         @arg @ref LL_SYSCFG_EXTI_PORTJ
00657   *         @arg @ref LL_SYSCFG_EXTI_PORTK
00658   *         (*) value not defined in all devices
00659   */
00660 __STATIC_INLINE uint32_t LL_SYSCFG_GetEXTISource(uint32_t Line)
00661 {
00662   return (uint32_t)(READ_BIT(SYSCFG->EXTICR[Line & 0x3U], (Line >> 16U)) >> (POSITION_VAL(Line >> 16U) & 31U));
00663 }
00664 
00665 /**
00666   * @brief  Set connections to TIM1/8/15/16/17 and HRTIM Break inputs
00667   * @note this feature is available on STM32H7 rev.B and above
00668   * @rmtoll SYSCFG_CFGR AXISRAML       LL_SYSCFG_SetTIMBreakInputs\n
00669   *         SYSCFG_CFGR ITCML          LL_SYSCFG_SetTIMBreakInputs\n
00670   *         SYSCFG_CFGR DTCML          LL_SYSCFG_SetTIMBreakInputs\n
00671   *         SYSCFG_CFGR SRAM1L         LL_SYSCFG_SetTIMBreakInputs\n
00672   *         SYSCFG_CFGR SRAM2L         LL_SYSCFG_SetTIMBreakInputs\n
00673   *         SYSCFG_CFGR SRAM3L         LL_SYSCFG_SetTIMBreakInputs\n
00674   *         SYSCFG_CFGR SRAM4L         LL_SYSCFG_SetTIMBreakInputs\n
00675   *         SYSCFG_CFGR BKRAML         LL_SYSCFG_SetTIMBreakInputs\n
00676   *         SYSCFG_CFGR CM7L           LL_SYSCFG_SetTIMBreakInputs\n
00677   *         SYSCFG_CFGR FLASHL         LL_SYSCFG_SetTIMBreakInputs\n
00678   *         SYSCFG_CFGR PVDL           LL_SYSCFG_SetTIMBreakInputs\n
00679   *         SYSCFG_CFGR_CM4L           LL_SYSCFG_SetTIMBreakInputs
00680   * @param  Break This parameter can be a combination of the following values:
00681   *         @arg @ref LL_SYSCFG_TIMBREAK_AXISRAM_DBL_ECC
00682   *         @arg @ref LL_SYSCFG_TIMBREAK_ITCM_DBL_ECC
00683   *         @arg @ref LL_SYSCFG_TIMBREAK_DTCM_DBL_ECC
00684   *         @arg @ref LL_SYSCFG_TIMBREAK_SRAM1_DBL_ECC
00685   *         @arg @ref LL_SYSCFG_TIMBREAK_SRAM2_DBL_ECC
00686   *         @arg @ref LL_SYSCFG_TIMBREAK_SRAM3_DBL_ECC (*)
00687   *         @arg @ref LL_SYSCFG_TIMBREAK_SRAM4_DBL_ECC
00688   *         @arg @ref LL_SYSCFG_TIMBREAK_BKRAM_DBL_ECC
00689   *         @arg @ref LL_SYSCFG_TIMBREAK_CM7_LOCKUP
00690   *         @arg @ref LL_SYSCFG_TIMBREAK_FLASH_DBL_ECC
00691   *         @arg @ref LL_SYSCFG_TIMBREAK_PVD
00692   *         @arg @ref LL_SYSCFG_TIMBREAK_CM4_LOCKUP (available for dual core lines only)
00693   * @retval None
00694   *         (*) value not defined in all devices
00695   */
00696 __STATIC_INLINE void LL_SYSCFG_SetTIMBreakInputs(uint32_t Break)
00697 {
00698 #if defined(DUAL_CORE)
00699   MODIFY_REG(SYSCFG->CFGR, SYSCFG_CFGR_AXISRAML | SYSCFG_CFGR_ITCML  | SYSCFG_CFGR_DTCML  | SYSCFG_CFGR_SRAM1L | SYSCFG_CFGR_SRAM2L | \
00700                            SYSCFG_CFGR_SRAM3L   | SYSCFG_CFGR_SRAM4L | SYSCFG_CFGR_BKRAML | SYSCFG_CFGR_CM7L   | SYSCFG_CFGR_FLASHL | \
00701                            SYSCFG_CFGR_PVDL     | SYSCFG_CFGR_CM4L, Break);
00702 #elif defined(SYSCFG_CFGR_AXISRAML) && defined(SYSCFG_CFGR_SRAM3L)
00703   MODIFY_REG(SYSCFG->CFGR, SYSCFG_CFGR_AXISRAML | SYSCFG_CFGR_ITCML  | SYSCFG_CFGR_DTCML  | SYSCFG_CFGR_SRAM1L | SYSCFG_CFGR_SRAM2L | \
00704                            SYSCFG_CFGR_SRAM3L   | SYSCFG_CFGR_SRAM4L | SYSCFG_CFGR_BKRAML | SYSCFG_CFGR_CM7L   | SYSCFG_CFGR_FLASHL | \
00705                            SYSCFG_CFGR_PVDL, Break);
00706 #elif defined(SYSCFG_CFGR_AXISRAML)
00707   MODIFY_REG(SYSCFG->CFGR, SYSCFG_CFGR_AXISRAML | SYSCFG_CFGR_ITCML  | SYSCFG_CFGR_DTCML  | SYSCFG_CFGR_SRAM1L | SYSCFG_CFGR_SRAM2L | \
00708                            SYSCFG_CFGR_SRAM4L   | SYSCFG_CFGR_BKRAML | SYSCFG_CFGR_CM7L   | SYSCFG_CFGR_FLASHL | SYSCFG_CFGR_PVDL,\
00709                            Break);
00710 #else
00711   MODIFY_REG(SYSCFG->CFGR, SYSCFG_CFGR_ITCML  | SYSCFG_CFGR_DTCML  |\
00712                            SYSCFG_CFGR_CM7L   | SYSCFG_CFGR_FLASHL | \
00713                            SYSCFG_CFGR_PVDL, Break);
00714 #endif /* DUAL_CORE */
00715 }
00716 
00717 /**
00718   * @brief  Get connections to TIM1/8/15/16/17 and HRTIM Break inputs
00719   * @note this feature is available on STM32H7 rev.B and above
00720   * @rmtoll SYSCFG_CFGR AXISRAML       LL_SYSCFG_GetTIMBreakInputs\n
00721   *         SYSCFG_CFGR ITCML          LL_SYSCFG_GetTIMBreakInputs\n
00722   *         SYSCFG_CFGR DTCML          LL_SYSCFG_GetTIMBreakInputs\n
00723   *         SYSCFG_CFGR SRAM1L         LL_SYSCFG_GetTIMBreakInputs\n
00724   *         SYSCFG_CFGR SRAM2L         LL_SYSCFG_GetTIMBreakInputs\n
00725   *         SYSCFG_CFGR SRAM3L         LL_SYSCFG_GetTIMBreakInputs\n
00726   *         SYSCFG_CFGR SRAM4L         LL_SYSCFG_GetTIMBreakInputs\n
00727   *         SYSCFG_CFGR BKRAML         LL_SYSCFG_GetTIMBreakInputs\n
00728   *         SYSCFG_CFGR CM7L           LL_SYSCFG_GetTIMBreakInputs\n
00729   *         SYSCFG_CFGR FLASHL         LL_SYSCFG_GetTIMBreakInputs\n
00730   *         SYSCFG_CFGR PVDL           LL_SYSCFG_GetTIMBreakInputs\n
00731   *         SYSCFG_CFGR_CM4L           LL_SYSCFG_GetTIMBreakInputs
00732   * @retval Returned value can be can be a combination of the following values:
00733   *         @arg @ref LL_SYSCFG_TIMBREAK_AXISRAM_DBL_ECC
00734   *         @arg @ref LL_SYSCFG_TIMBREAK_ITCM_DBL_ECC
00735   *         @arg @ref LL_SYSCFG_TIMBREAK_DTCM_DBL_ECC
00736   *         @arg @ref LL_SYSCFG_TIMBREAK_SRAM1_DBL_ECC
00737   *         @arg @ref LL_SYSCFG_TIMBREAK_SRAM2_DBL_ECC
00738   *         @arg @ref LL_SYSCFG_TIMBREAK_SRAM3_DBL_ECC (*)
00739   *         @arg @ref LL_SYSCFG_TIMBREAK_SRAM4_DBL_ECC
00740   *         @arg @ref LL_SYSCFG_TIMBREAK_BKRAM_DBL_ECC
00741   *         @arg @ref LL_SYSCFG_TIMBREAK_CM7_LOCKUP
00742   *         @arg @ref LL_SYSCFG_TIMBREAK_FLASH_DBL_ECC
00743   *         @arg @ref LL_SYSCFG_TIMBREAK_PVD
00744   *         @arg @ref LL_SYSCFG_TIMBREAK_CM4_LOCKUP (available for dual core lines only)
00745   *         (*) value not defined in all devices
00746   */
00747 __STATIC_INLINE uint32_t LL_SYSCFG_GetTIMBreakInputs(void)
00748 {
00749 #if defined(DUAL_CORE)
00750   return (uint32_t)(READ_BIT(SYSCFG->CFGR,  SYSCFG_CFGR_AXISRAML | SYSCFG_CFGR_ITCML  | SYSCFG_CFGR_DTCML  | \
00751                                             SYSCFG_CFGR_SRAM1L   | SYSCFG_CFGR_SRAM2L | SYSCFG_CFGR_SRAM3L | \
00752                                             SYSCFG_CFGR_SRAM4L   | SYSCFG_CFGR_BKRAML | SYSCFG_CFGR_CM7L   | \
00753                                             SYSCFG_CFGR_FLASHL   | SYSCFG_CFGR_PVDL   | SYSCFG_CFGR_CM4L));
00754 #elif defined (SYSCFG_CFGR_AXISRAML) && defined(SYSCFG_CFGR_SRAM3L)
00755   return (uint32_t)(READ_BIT(SYSCFG->CFGR,  SYSCFG_CFGR_AXISRAML | SYSCFG_CFGR_ITCML  | SYSCFG_CFGR_DTCML  | \
00756                                             SYSCFG_CFGR_SRAM1L   | SYSCFG_CFGR_SRAM2L | SYSCFG_CFGR_SRAM3L | \
00757                                             SYSCFG_CFGR_SRAM4L   | SYSCFG_CFGR_BKRAML | SYSCFG_CFGR_CM7L   | \
00758                                             SYSCFG_CFGR_FLASHL   | SYSCFG_CFGR_PVDL ));
00759 #elif defined (SYSCFG_CFGR_AXISRAML)
00760   return (uint32_t)(READ_BIT(SYSCFG->CFGR,  SYSCFG_CFGR_AXISRAML | SYSCFG_CFGR_ITCML  | SYSCFG_CFGR_DTCML  | \
00761                                             SYSCFG_CFGR_SRAM1L   | SYSCFG_CFGR_SRAM2L | \
00762                                             SYSCFG_CFGR_SRAM4L   | SYSCFG_CFGR_BKRAML | SYSCFG_CFGR_CM7L   | \
00763                                             SYSCFG_CFGR_FLASHL   | SYSCFG_CFGR_PVDL ));
00764 #else
00765   return (uint32_t)(READ_BIT(SYSCFG->CFGR,  SYSCFG_CFGR_ITCML    | SYSCFG_CFGR_DTCML  | SYSCFG_CFGR_CM7L   | \
00766                                             SYSCFG_CFGR_FLASHL   | SYSCFG_CFGR_PVDL ));
00767 #endif /* DUAL_CORE */
00768 }
00769 
00770 /**
00771   * @brief  Enable the Compensation Cell
00772   * @rmtoll CCCSR   EN    LL_SYSCFG_EnableCompensationCell
00773   * @note   The I/O compensation cell can be used only when the device supply
00774   *         voltage ranges from 1.62 to 2.0 V and from 2.7 to 3.6 V.
00775   * @retval None
00776   */
00777 __STATIC_INLINE void LL_SYSCFG_EnableCompensationCell(void)
00778 {
00779   SET_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_EN);
00780 }
00781 
00782 /**
00783   * @brief  Disable the Compensation Cell
00784   * @rmtoll CCCSR   EN    LL_SYSCFG_DisableCompensationCell
00785   * @note   The I/O compensation cell can be used only when the device supply
00786   *         voltage ranges from 1.62 to 2.0 V and from 2.7 to 3.6 V.
00787   * @retval None
00788   */
00789 __STATIC_INLINE void LL_SYSCFG_DisableCompensationCell(void)
00790 {
00791   CLEAR_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_EN);
00792 }
00793 
00794 /**
00795   * @brief  Check if the Compensation Cell is enabled
00796   * @rmtoll CCCSR   EN    LL_SYSCFG_IsEnabledCompensationCell
00797   * @retval State of bit (1 or 0).
00798   */
00799 __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledCompensationCell(void)
00800 {
00801   return ((READ_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_EN) == SYSCFG_CCCSR_EN) ? 1UL : 0UL);
00802 }
00803 
00804 /**
00805   * @brief  Get Compensation Cell ready Flag
00806   * @rmtoll CCCSR   READY   LL_SYSCFG_IsActiveFlag_CMPCR
00807   * @retval State of bit (1 or 0).
00808   */
00809 __STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_CMPCR(void)
00810 {
00811   return ((READ_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_READY) == (SYSCFG_CCCSR_READY)) ? 1UL : 0UL);
00812 }
00813 
00814 /**
00815   * @brief  Enable the I/O speed optimization when the product voltage is low.
00816   * @rmtoll CCCSR   HSLV    LL_SYSCFG_EnableIOSpeedOptimize
00817   * @note   This bit is active only if IO_HSLV user option bit is set. It must be used only if the
00818   *         product supply voltage is below 2.7 V. Setting this bit when VDD is higher than 2.7 V
00819   *         might be destructive.
00820   * @retval None
00821   */
00822 __STATIC_INLINE void LL_SYSCFG_EnableIOSpeedOptimization(void)
00823 {
00824 #if defined(SYSCFG_CCCSR_HSLV)
00825   SET_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV);
00826 #else
00827   SET_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV0);
00828 #endif   /* SYSCFG_CCCSR_HSLV */
00829 }
00830 
00831 #if defined(SYSCFG_CCCSR_HSLV1)
00832 /**
00833   * @brief  Enable the I/O speed optimization when the product voltage is low.
00834   * @rmtoll CCCSR   HSLV1    LL_SYSCFG_EnableIOSpeedOptimize
00835   * @note   This bit is active only if IO_HSLV user option bit is set. It must be used only if the
00836   *         product supply voltage is below 2.7 V. Setting this bit when VDD is higher than 2.7 V
00837   *         might be destructive.
00838   * @retval None
00839   */
00840 __STATIC_INLINE void LL_SYSCFG_EnableIOSpeedOptimization1(void)
00841 {
00842   SET_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV1);
00843 }
00844 
00845 /**
00846   * @brief  Enable the I/O speed optimization when the product voltage is low.
00847   * @rmtoll CCCSR   HSLV2    LL_SYSCFG_EnableIOSpeedOptimize
00848   * @note   This bit is active only if IO_HSLV user option bit is set. It must be used only if the
00849   *         product supply voltage is below 2.7 V. Setting this bit when VDD is higher than 2.7 V
00850   *         might be destructive.
00851   * @retval None
00852   */
00853 __STATIC_INLINE void LL_SYSCFG_EnableIOSpeedOptimization2(void)
00854 {
00855   SET_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV2);
00856 }
00857 
00858 /**
00859   * @brief  Enable the I/O speed optimization when the product voltage is low.
00860   * @rmtoll CCCSR   HSLV3    LL_SYSCFG_EnableIOSpeedOptimize
00861   * @note   This bit is active only if IO_HSLV user option bit is set. It must be used only if the
00862   *         product supply voltage is below 2.7 V. Setting this bit when VDD is higher than 2.7 V
00863   *         might be destructive.
00864   * @retval None
00865   */
00866 __STATIC_INLINE void LL_SYSCFG_EnableIOSpeedOptimization3(void)
00867 {
00868   SET_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV3);
00869 }
00870 #endif /*SYSCFG_CCCSR_HSLV1*/
00871 
00872 
00873 /**
00874   * @brief  To Disable optimize the I/O speed when the product voltage is low.
00875   * @rmtoll CCCSR   HSLV    LL_SYSCFG_DisableIOSpeedOptimize
00876   * @note   This bit is active only if IO_HSLV user option bit is set. It must be used only if the
00877   *         product supply voltage is below 2.7 V. Setting this bit when VDD is higher than 2.7 V
00878   *         might be destructive.
00879   * @retval None
00880   */
00881 __STATIC_INLINE void LL_SYSCFG_DisableIOSpeedOptimization(void)
00882 {
00883 #if defined(SYSCFG_CCCSR_HSLV)
00884   CLEAR_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV);
00885 #else
00886   CLEAR_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV0);
00887 #endif   /* SYSCFG_CCCSR_HSLV */
00888 }
00889 
00890 #if defined(SYSCFG_CCCSR_HSLV1)
00891 /**
00892   * @brief  To Disable optimize the I/O speed when the product voltage is low.
00893   * @rmtoll CCCSR   HSLV1    LL_SYSCFG_DisableIOSpeedOptimize
00894   * @note   This bit is active only if IO_HSLV user option bit is set. It must be used only if the
00895   *         product supply voltage is below 2.7 V. Setting this bit when VDD is higher than 2.7 V
00896   *         might be destructive.
00897   * @retval None
00898   */
00899 __STATIC_INLINE void LL_SYSCFG_DisableIOSpeedOptimization1(void)
00900 {
00901   CLEAR_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV1);
00902 }
00903 
00904 /**
00905   * @brief  To Disable optimize the I/O speed when the product voltage is low.
00906   * @rmtoll CCCSR   HSLV2    LL_SYSCFG_DisableIOSpeedOptimize
00907   * @note   This bit is active only if IO_HSLV user option bit is set. It must be used only if the
00908   *         product supply voltage is below 2.7 V. Setting this bit when VDD is higher than 2.7 V
00909   *         might be destructive.
00910   * @retval None
00911   */
00912 __STATIC_INLINE void LL_SYSCFG_DisableIOSpeedOptimization2(void)
00913 {
00914   CLEAR_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV2);
00915 }
00916 
00917 /**
00918   * @brief  To Disable optimize the I/O speed when the product voltage is low.
00919   * @rmtoll CCCSR   HSLV3    LL_SYSCFG_DisableIOSpeedOptimize
00920   * @note   This bit is active only if IO_HSLV user option bit is set. It must be used only if the
00921   *         product supply voltage is below 2.7 V. Setting this bit when VDD is higher than 2.7 V
00922   *         might be destructive.
00923   * @retval None
00924   */
00925 __STATIC_INLINE void LL_SYSCFG_DisableIOSpeedOptimization3(void)
00926 {
00927   CLEAR_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV3);
00928 }
00929 #endif /*SYSCFG_CCCSR_HSLV1*/
00930 
00931 /**
00932   * @brief  Check if the I/O speed optimization is enabled
00933   * @rmtoll CCCSR   HSLV    LL_SYSCFG_IsEnabledIOSpeedOptimization
00934   * @retval State of bit (1 or 0).
00935   */
00936 __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIOSpeedOptimization(void)
00937 {
00938 #if defined(SYSCFG_CCCSR_HSLV)
00939   return ((READ_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV) == SYSCFG_CCCSR_HSLV) ? 1UL : 0UL);
00940 #else
00941   return ((READ_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV0) == SYSCFG_CCCSR_HSLV0) ? 1UL : 0UL);
00942 #endif /*SYSCFG_CCCSR_HSLV*/
00943 }
00944 
00945 #if defined(SYSCFG_CCCSR_HSLV1)
00946 /**
00947   * @brief  Check if the I/O speed optimization is enabled
00948   * @rmtoll CCCSR   HSLV1    LL_SYSCFG_IsEnabledIOSpeedOptimization
00949   * @retval State of bit (1 or 0).
00950   */
00951 __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIOSpeedOptimization1(void)
00952 {
00953   return ((READ_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV1) == SYSCFG_CCCSR_HSLV1) ? 1UL : 0UL);
00954 }
00955 
00956 /**
00957   * @brief  Check if the I/O speed optimization is enabled
00958   * @rmtoll CCCSR   HSLV2    LL_SYSCFG_IsEnabledIOSpeedOptimization
00959   * @retval State of bit (1 or 0).
00960   */
00961 __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIOSpeedOptimization2(void)
00962 {
00963   return ((READ_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV2) == SYSCFG_CCCSR_HSLV2) ? 1UL : 0UL);
00964 }
00965 
00966 /**
00967   * @brief  Check if the I/O speed optimization is enabled
00968   * @rmtoll CCCSR   HSLV3    LL_SYSCFG_IsEnabledIOSpeedOptimization
00969   * @retval State of bit (1 or 0).
00970   */
00971 __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIOSpeedOptimization3(void)
00972 {
00973   return ((READ_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV3) == SYSCFG_CCCSR_HSLV3) ? 1UL : 0UL);
00974 }
00975 #endif /*SYSCFG_CCCSR_HSLV1*/
00976 
00977 /**
00978   * @brief  Set the code selection for the I/O Compensation cell
00979   * @rmtoll CCCSR   CS    LL_SYSCFG_SetCellCompensationCode
00980   * @param  CompCode: Selects the code to be applied for the I/O compensation cell
00981   *   This parameter can be one of the following values:
00982   *   @arg LL_SYSCFG_CELL_CODE : Select Code from the cell (available in the SYSCFG_CCVR)
00983   *   @arg LL_SYSCFG_REGISTER_CODE: Select Code from the SYSCFG compensation cell code register (SYSCFG_CCCR)
00984   * @retval None
00985   */
00986 __STATIC_INLINE void LL_SYSCFG_SetCellCompensationCode(uint32_t CompCode)
00987 {
00988   SET_BIT(SYSCFG->CCCSR, CompCode);
00989 }
00990 
00991 /**
00992   * @brief  Get the code selected for the I/O Compensation cell
00993   * @rmtoll CCCSR   CS    LL_SYSCFG_GetCellCompensationCode
00994   * @retval Returned value can be one of the following values:
00995   *   @arg LL_SYSCFG_CELL_CODE : Selected Code is from the cell (available in the SYSCFG_CCVR)
00996   *   @arg LL_SYSCFG_REGISTER_CODE: Selected Code is from the SYSCFG compensation cell code register (SYSCFG_CCCR)
00997   */
00998 __STATIC_INLINE uint32_t LL_SYSCFG_GetCellCompensationCode(void)
00999 {
01000   return (uint32_t)(READ_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_CS));
01001 }
01002 
01003 #ifdef SYSCFG_CCCSR_CS_MMC
01004 
01005 /**
01006   * @brief  Get the code selected for the I/O Compensation cell on the VDDMMC power rail
01007   * @rmtoll CCCSR   CS    LL_SYSCFG_GetCellCompensationCode
01008   * @retval Returned value can be one of the following values:
01009   *   @arg LL_SYSCFG_CELL_CODE : Selected Code is from the cell (available in the SYSCFG_CCVR)
01010   *   @arg LL_SYSCFG_REGISTER_CODE: Selected Code is from the SYSCFG compensation cell code register (SYSCFG_CCCR)
01011   */
01012 __STATIC_INLINE uint32_t LL_SYSCFG_MMCGetCellCompensationCode(void)
01013 {
01014   return (uint32_t)(READ_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_CS_MMC));
01015 }
01016 #endif /*SYSCFG_CCCSR_CS_MMC*/
01017 
01018 /**
01019   * @brief  Get I/O compensation cell value for PMOS transistors
01020   * @rmtoll CCVR    PCV   LL_SYSCFG_GetPMOSCompensationValue
01021   * @retval Returned value is the I/O compensation cell value for PMOS transistors
01022   */
01023 __STATIC_INLINE uint32_t LL_SYSCFG_GetPMOSCompensationValue(void)
01024 {
01025   return (uint32_t)(READ_BIT(SYSCFG->CCVR, SYSCFG_CCVR_PCV));
01026 }
01027 
01028 /**
01029   * @brief  Get I/O compensation cell value for NMOS transistors
01030   * @rmtoll CCVR    NCV   LL_SYSCFG_GetNMOSCompensationValue
01031   * @retval Returned value is the I/O compensation cell value for NMOS transistors
01032   */
01033 __STATIC_INLINE uint32_t LL_SYSCFG_GetNMOSCompensationValue(void)
01034 {
01035   return (uint32_t)(READ_BIT(SYSCFG->CCVR, SYSCFG_CCVR_NCV));
01036 }
01037 
01038 /**
01039   * @brief  Set I/O compensation cell code for PMOS transistors
01040   * @rmtoll CCCR    PCC   LL_SYSCFG_SetPMOSCompensationCode
01041   * @param  PMOSCode PMOS compensation code
01042   *         This code is applied to the I/O compensation cell when the CS bit of the
01043   *         SYSCFG_CMPCR is set
01044   * @retval None
01045   */
01046 __STATIC_INLINE void LL_SYSCFG_SetPMOSCompensationCode(uint32_t PMOSCode)
01047 {
01048   MODIFY_REG(SYSCFG->CCCR, SYSCFG_CCCR_PCC, PMOSCode);
01049 }
01050 
01051 /**
01052   * @brief  Get I/O compensation cell code for PMOS transistors
01053   * @rmtoll CCCR    PCC   LL_SYSCFG_GetPMOSCompensationCode
01054   * @retval Returned value is the I/O compensation cell code for PMOS transistors
01055   */
01056 __STATIC_INLINE uint32_t LL_SYSCFG_GetPMOSCompensationCode(void)
01057 {
01058   return (uint32_t)(READ_BIT(SYSCFG->CCCR, SYSCFG_CCCR_PCC));
01059 }
01060 
01061 #ifdef SYSCFG_CCCR_PCC_MMC
01062 
01063 /**
01064   * @brief  Set I/O compensation cell code for PMOS transistors corresponding to the VDDMMC power rail
01065   * @rmtoll CCCR    PCC   LL_SYSCFG_SetPMOSCompensationCode
01066   * @param  PMOSCode PMOS compensation code
01067   *         This code is applied to the I/O compensation cell when the CS bit of the
01068   *         SYSCFG_CMPCR is set
01069   * @retval None
01070   */
01071 __STATIC_INLINE void LL_SYSCFG_MMCSetPMOSCompensationCode(uint32_t PMOSCode)
01072 {
01073   MODIFY_REG(SYSCFG->CCCR, SYSCFG_CCCR_PCC_MMC, PMOSCode);
01074 }
01075 
01076 /**
01077   * @brief  Get I/O compensation cell code for PMOS transistors corresponding to the VDDMMC power rail
01078   * @rmtoll CCCR    PCC   LL_SYSCFG_GetPMOSCompensationCode
01079   * @retval Returned value is the I/O compensation cell code for PMOS transistors
01080   */
01081 __STATIC_INLINE uint32_t LL_SYSCFG_MMCGetPMOSCompensationCode(void)
01082 {
01083   return (uint32_t)(READ_BIT(SYSCFG->CCCR, SYSCFG_CCCR_PCC_MMC));
01084 }
01085 #endif /* SYSCFG_CCCR_PCC_MMC */
01086 
01087 /**
01088   * @brief  Set I/O compensation cell code for NMOS transistors
01089   * @rmtoll CCCR    NCC   LL_SYSCFG_SetNMOSCompensationCode
01090   * @param  NMOSCode NMOS compensation code
01091   *         This code is applied to the I/O compensation cell when the CS bit of the
01092   *         SYSCFG_CMPCR is set
01093   * @retval None
01094   */
01095 __STATIC_INLINE void LL_SYSCFG_SetNMOSCompensationCode(uint32_t NMOSCode)
01096 {
01097   MODIFY_REG(SYSCFG->CCCR, SYSCFG_CCCR_NCC, NMOSCode);
01098 }
01099 
01100 /**
01101   * @brief  Get I/O compensation cell code for NMOS transistors
01102   * @rmtoll CCCR    NCC   LL_SYSCFG_GetNMOSCompensationCode
01103   * @retval Returned value is the I/O compensation cell code for NMOS transistors
01104   */
01105 __STATIC_INLINE uint32_t LL_SYSCFG_GetNMOSCompensationCode(void)
01106 {
01107   return (uint32_t)(READ_BIT(SYSCFG->CCCR, SYSCFG_CCCR_NCC));
01108 }
01109 
01110 #ifdef SYSCFG_CCCR_NCC_MMC
01111 
01112 /**
01113   * @brief  Set I/O compensation cell code for NMOS transistors on the VDDMMC power rail.
01114   * @rmtoll CCCR    NCC   LL_SYSCFG_SetNMOSCompensationCode
01115   * @param  NMOSCode: NMOS compensation code
01116   *         This code is applied to the I/O compensation cell when the CS bit of the
01117   *         SYSCFG_CMPCR is set
01118   * @retval None
01119   */
01120 __STATIC_INLINE void LL_SYSCFG_VDMMCSetNMOSCompensationCode(uint32_t NMOSCode)
01121 {
01122   MODIFY_REG(SYSCFG->CCCR, SYSCFG_CCCR_NCC_MMC, NMOSCode);
01123 }
01124 
01125 /**
01126   * @brief  Get I/O compensation cell code for NMOS transistors on the VDDMMC power rail.
01127   * @rmtoll CCCR    NCC   LL_SYSCFG_GetNMOSCompensationCode
01128   * @retval Returned value is the I/O compensation cell code for NMOS transistors
01129   */
01130 __STATIC_INLINE uint32_t LL_SYSCFG_VDMMCGetNMOSCompensationCode(void)
01131 {
01132   return (uint32_t)(READ_BIT(SYSCFG->CCCR, SYSCFG_CCCR_NCC_MMC));
01133 }
01134 #endif /*SYSCFG_CCCR_NCC_MMC*/
01135 
01136 #ifdef SYSCFG_PKGR_PKG
01137 /**
01138   * @brief  Get the device package
01139   * @rmtoll PKGR    PKG   LL_SYSCFG_GetPackage
01140   * @retval Returned value can be one of the following values:
01141   *         @arg @ref LL_SYSCFG_LQFP100_PACKAGE (*)
01142   *         @arg @ref LL_SYSCFG_TQFP144_PACKAGE (*)
01143   *         @arg @ref LL_SYSCFG_TQFP176_UFBGA176_PACKAGE (*)
01144   *         @arg @ref LL_SYSCFG_LQFP208_TFBGA240_PACKAGE (*)
01145   *         @arg @ref LL_SYSCFG_VFQFPN68_INDUS_PACKAGE (*)
01146   *         @arg @ref LL_SYSCFG_TFBGA100_LQFP100_PACKAGE (*)
01147   *         @arg @ref LL_SYSCFG_LQFP100_INDUS_PACKAGE (**)
01148   *         @arg @ref LL_SYSCFG_TFBGA100_INDUS_PACKAGE (**)
01149   *         @arg @ref LL_SYSCFG_WLCSP115_INDUS_PACKAGE (**)
01150   *         @arg @ref LL_SYSCFG_LQFP144_PACKAGE (**)
01151   *         @arg @ref LL_SYSCFG_UFBGA144_PACKAGE (**)
01152   *         @arg @ref LL_SYSCFG_LQFP144_INDUS_PACKAGE (**)
01153   *         @arg @ref LL_SYSCFG_UFBGA169_INDUS_PACKAGE (**)
01154   *         @arg @ref LL_SYSCFG_UFBGA176PLUS25_INDUS_PACKAGE (**)
01155   *         @arg @ref LL_SYSCFG_LQFP176_INDUS_PACKAGE (**)
01156   *
01157   * (*) : For stm32h74xxx and stm32h75xxx family lines.
01158   * (**): For stm32h72xxx and stm32h73xxx family lines.
01159   */
01160 __STATIC_INLINE uint32_t LL_SYSCFG_GetPackage(void)
01161 {
01162   return (uint32_t)(READ_BIT(SYSCFG->PKGR, SYSCFG_PKGR_PKG));
01163 }
01164 #endif /*SYSCFG_PKGR_PKG*/
01165 
01166 #ifdef SYSCFG_UR0_RDP
01167 /**
01168   * @brief  Get the Flash memory protection level
01169   * @rmtoll UR0   RDP   LL_SYSCFG_GetFLashProtectionLevel
01170   * @retval Returned value can be one of the following values:
01171   *         0xAA : RDP level 0
01172   *         0xCC : RDP level 2
01173   *         Any other value : RDP level 1
01174   */
01175 __STATIC_INLINE uint32_t LL_SYSCFG_GetFLashProtectionLevel(void)
01176 {
01177   return (uint32_t)(READ_BIT(SYSCFG->UR0, SYSCFG_UR0_RDP));
01178 }
01179 #ifdef SYSCFG_UR0_BKS
01180 /**
01181   * @brief  Indicate if the Flash memory bank addresses are inverted or not
01182   * @rmtoll UR0   BKS   LL_SYSCFG_IsFLashBankAddressesSwaped
01183   * @retval State of bit (1 or 0).
01184   */
01185 __STATIC_INLINE uint32_t LL_SYSCFG_IsFLashBankAddressesSwaped(void)
01186 {
01187   return ((READ_BIT(SYSCFG->UR0, SYSCFG_UR0_BKS) == 0U) ? 1UL : 0UL);
01188 }
01189 #endif /*SYSCFG_UR0_BKS*/
01190 
01191 /**
01192   * @brief  Get the BOR Threshold Reset Level
01193   * @rmtoll UR2   BORH    LL_SYSCFG_GetBrownoutResetLevel
01194   * @retval Returned value can be one of the following values:
01195   *         @arg @ref LL_SYSCFG_BOR_HIGH_RESET_LEVEL
01196   *         @arg @ref LL_SYSCFG_BOR_MEDIUM_RESET_LEVEL
01197   *         @arg @ref LL_SYSCFG_BOR_LOW_RESET_LEVEL
01198   *         @arg @ref LL_SYSCFG_BOR_OFF_RESET_LEVEL
01199   */
01200 __STATIC_INLINE uint32_t LL_SYSCFG_GetBrownoutResetLevel(void)
01201 {
01202   return (uint32_t)(READ_BIT(SYSCFG->UR2, SYSCFG_UR2_BORH));
01203 }
01204 /**
01205   * @brief  BootCM7 address 0 configuration
01206   * @rmtoll UR2   BOOT_ADD0   LL_SYSCFG_SetCM7BootAddress0
01207   * @param  BootAddress :Specifies the CM7 Boot Address to be loaded in Address0
01208   * @retval None
01209   */
01210 __STATIC_INLINE void LL_SYSCFG_SetCM7BootAddress0(uint16_t BootAddress)
01211 {
01212   /* Configure CM7 BOOT ADD0 */
01213 #if defined(DUAL_CORE)
01214   MODIFY_REG(SYSCFG->UR2, SYSCFG_UR2_BCM7_ADD0, ((uint32_t)BootAddress << SYSCFG_UR2_BCM7_ADD0_Pos));
01215 #else
01216   MODIFY_REG(SYSCFG->UR2, SYSCFG_UR2_BOOT_ADD0, ((uint32_t)BootAddress << SYSCFG_UR2_BOOT_ADD0_Pos));
01217 #endif /*DUAL_CORE*/
01218 
01219 }
01220 
01221 /**
01222   * @brief  Get BootCM7 address 0
01223   * @rmtoll UR2   BOOT_ADD0   LL_SYSCFG_GetCM7BootAddress0
01224   * @retval Returned the CM7 Boot Address0
01225   */
01226 __STATIC_INLINE uint16_t LL_SYSCFG_GetCM7BootAddress0(void)
01227 {
01228   /* Get CM7 BOOT ADD0 */
01229 #if defined(DUAL_CORE)
01230   return (uint16_t)((uint32_t)READ_BIT(SYSCFG->UR2, SYSCFG_UR2_BCM7_ADD0) >> SYSCFG_UR2_BCM7_ADD0_Pos);
01231 #else
01232   return (uint16_t)((uint32_t)READ_BIT(SYSCFG->UR2, SYSCFG_UR2_BOOT_ADD0) >> SYSCFG_UR2_BOOT_ADD0_Pos);
01233 #endif /*DUAL_CORE*/
01234 }
01235 
01236 /**
01237   * @brief  BootCM7 address 1 configuration
01238   * @rmtoll UR3   BOOT_ADD1   LL_SYSCFG_SetCM7BootAddress1
01239   * @param  BootAddress :Specifies the CM7 Boot Address to be loaded in Address1
01240   * @retval None
01241   */
01242 __STATIC_INLINE void LL_SYSCFG_SetCM7BootAddress1(uint16_t BootAddress)
01243 {
01244   /* Configure CM7 BOOT ADD1 */
01245 #if defined(DUAL_CORE)
01246   MODIFY_REG(SYSCFG->UR3, SYSCFG_UR3_BCM7_ADD1, BootAddress);
01247 #else
01248   MODIFY_REG(SYSCFG->UR3, SYSCFG_UR3_BOOT_ADD1, BootAddress);
01249 #endif /*DUAL_CORE*/
01250 }
01251 
01252 /**
01253   * @brief  Get BootCM7 address 1
01254   * @rmtoll UR3   BOOT_ADD1   LL_SYSCFG_GetCM7BootAddress1
01255   * @retval Returned the CM7 Boot Address0
01256   */
01257 __STATIC_INLINE uint16_t LL_SYSCFG_GetCM7BootAddress1(void)
01258 {
01259   /* Get CM7 BOOT ADD0 */
01260 #if defined(DUAL_CORE)
01261   return (uint16_t)(READ_BIT(SYSCFG->UR3, SYSCFG_UR3_BCM7_ADD1));
01262 #else
01263   return (uint16_t)(READ_BIT(SYSCFG->UR3, SYSCFG_UR3_BOOT_ADD1));
01264 #endif /* DUAL_CORE */
01265 }
01266 
01267 #if defined(DUAL_CORE)
01268 /**
01269   * @brief  BootCM4 address 0 configuration
01270   * @rmtoll UR3   BCM4_ADD0   LL_SYSCFG_SetCM4BootAddress0
01271   * @param  BootAddress :Specifies the CM4 Boot Address to be loaded in Address0
01272   * @retval None
01273   */
01274 __STATIC_INLINE void LL_SYSCFG_SetCM4BootAddress0(uint16_t BootAddress)
01275 {
01276   /* Configure CM4 BOOT ADD0 */
01277   MODIFY_REG(SYSCFG->UR3, SYSCFG_UR3_BCM4_ADD0, ((uint32_t)BootAddress << SYSCFG_UR3_BCM4_ADD0_Pos));
01278 }
01279 
01280 /**
01281   * @brief  Get BootCM4 address 0
01282   * @rmtoll UR3   BCM4_ADD0   LL_SYSCFG_GetCM4BootAddress0
01283   * @retval Returned the CM4 Boot Address0
01284   */
01285 __STATIC_INLINE uint16_t LL_SYSCFG_GetCM4BootAddress0(void)
01286 {
01287   /* Get CM4 BOOT ADD0 */
01288   return (uint16_t)((uint32_t)READ_BIT(SYSCFG->UR3, SYSCFG_UR3_BCM4_ADD0) >> SYSCFG_UR3_BCM4_ADD0_Pos);
01289 }
01290 
01291 /**
01292   * @brief  BootCM4 address 1 configuration
01293   * @rmtoll UR4   BCM4_ADD1   LL_SYSCFG_SetCM4BootAddress1
01294   * @param  BootAddress :Specifies the CM4 Boot Address to be loaded in Address1
01295   * @retval None
01296   */
01297 __STATIC_INLINE void LL_SYSCFG_SetCM4BootAddress1(uint16_t BootAddress)
01298 {
01299   /* Configure CM4 BOOT ADD1 */
01300   MODIFY_REG(SYSCFG->UR4, SYSCFG_UR4_BCM4_ADD1, BootAddress);
01301 }
01302 
01303 /**
01304   * @brief  Get BootCM4 address 1
01305   * @rmtoll UR4   BCM4_ADD1   LL_SYSCFG_GetCM4BootAddress1
01306   * @retval Returned the CM4 Boot Address0
01307   */
01308 __STATIC_INLINE uint16_t LL_SYSCFG_GetCM4BootAddress1(void)
01309 {
01310   /* Get CM4 BOOT ADD0 */
01311   return (uint16_t)(READ_BIT(SYSCFG->UR4, SYSCFG_UR4_BCM4_ADD1));
01312 }
01313 #endif /*DUAL_CORE*/
01314 
01315 /**
01316   * @brief  Indicates if the flash protected area (Bank 1) is erased by a mass erase
01317   * @rmtoll UR4   MEPAD_BANK1   LL_SYSCFG_IsFlashB1ProtectedAreaErasable
01318   * @retval State of bit (1 or 0).
01319   */
01320 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1ProtectedAreaErasable(void)
01321 {
01322   return ((READ_BIT(SYSCFG->UR4, SYSCFG_UR4_MEPAD_BANK1) == SYSCFG_UR4_MEPAD_BANK1) ? 1UL : 0UL);
01323 }
01324 
01325 /**
01326   * @brief  Indicates if the flash secured area (Bank 1) is erased by a mass erase
01327   * @rmtoll UR5   MESAD_BANK1   LL_SYSCFG_IsFlashB1SecuredAreaErasable
01328   * @retval State of bit (1 or 0).
01329   */
01330 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1SecuredAreaErasable(void)
01331 {
01332   return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_MESAD_BANK1) == SYSCFG_UR5_MESAD_BANK1) ? 1UL : 0UL);
01333 }
01334 
01335 /**
01336   * @brief  Indicates if the sector 0 of the Flash memory bank 1 is write protected
01337   * @rmtoll UR5   WRPN_BANK1    LL_SYSCFG_IsFlashB1Sector0WriteProtected
01338   * @retval State of bit (1 or 0).
01339   */
01340 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector0WriteProtected(void)
01341 {
01342   return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR0_STATUS_BIT)) ? 1UL : 0UL);
01343 }
01344 
01345 /**
01346   * @brief  Indicates if the sector 1 of the Flash memory bank 1 is write protected
01347   * @rmtoll UR5   WRPN_BANK1    LL_SYSCFG_IsFlashB1Sector1WriteProtected
01348   * @retval State of bit (1 or 0).
01349   */
01350 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector1WriteProtected(void)
01351 {
01352   return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR1_STATUS_BIT)) ? 1UL : 0UL);
01353 }
01354 
01355 /**
01356   * @brief  Indicates if the sector 2 of the Flash memory bank 1 is write protected
01357   * @rmtoll UR5   WRPN_BANK1    LL_SYSCFG_IsFlashB1Sector2WriteProtected
01358   * @retval State of bit (1 or 0).
01359   */
01360 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector2WriteProtected(void)
01361 {
01362   return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR2_STATUS_BIT)) ? 1UL : 0UL);
01363 }
01364 
01365 /**
01366   * @brief  Indicates if the sector 3 of the Flash memory bank 1 is write protected
01367   * @rmtoll UR5   WRPN_BANK1    LL_SYSCFG_IsFlashB1Sector3WriteProtected
01368   * @retval State of bit (1 or 0).
01369   */
01370 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector3WriteProtected(void)
01371 {
01372   return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR3_STATUS_BIT)) ? 1UL : 0UL);
01373 }
01374 
01375 /**
01376   * @brief  Indicates if the sector 4 of the Flash memory bank 1 is write protected
01377   * @rmtoll UR5   WRPN_BANK1    LL_SYSCFG_IsFlashB1Sector4WriteProtected
01378   * @retval State of bit (1 or 0).
01379   */
01380 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector4WriteProtected(void)
01381 {
01382   return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR4_STATUS_BIT)) ? 1UL : 0UL);
01383 }
01384 
01385 /**
01386   * @brief  Indicates if the sector 5 of the Flash memory bank 1 is write protected
01387   * @rmtoll UR5   WRPN_BANK1    LL_SYSCFG_IsFlashB1Sector5WriteProtected
01388   * @retval State of bit (1 or 0).
01389   */
01390 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector5WriteProtected(void)
01391 {
01392   return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR5_STATUS_BIT)) ? 1UL : 0UL);
01393 }
01394 
01395 /**
01396   * @brief  Indicates if the sector 6 of the Flash memory bank 1 is write protected
01397   * @rmtoll UR5   WRPN_BANK1    LL_SYSCFG_IsFlashB1Sector6WriteProtected
01398   * @retval State of bit (1 or 0).
01399   */
01400 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector6WriteProtected(void)
01401 {
01402   return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR6_STATUS_BIT)) ? 1UL : 0UL);
01403 }
01404 
01405 /**
01406   * @brief  Indicates if the sector 7 of the Flash memory bank 1 is write protected
01407   * @rmtoll UR5   WRPN_BANK1    LL_SYSCFG_IsFlashB1Sector7WriteProtected
01408   * @retval State of bit (1 or 0).
01409   */
01410 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector7WriteProtected(void)
01411 {
01412   return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR7_STATUS_BIT)) ? 1UL : 0UL);
01413 }
01414 
01415 /**
01416   * @brief  Get the protected area start address for Flash bank 1
01417   * @rmtoll UR6   PABEG_BANK1    LL_SYSCFG_GetFlashB1ProtectedAreaStartAddress
01418   * @retval Returned the protected area start address for Flash bank 1
01419   */
01420 __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB1ProtectedAreaStartAddress(void)
01421 {
01422   return (uint32_t)(READ_BIT(SYSCFG->UR6, SYSCFG_UR6_PABEG_BANK1));
01423 }
01424 
01425 /**
01426   * @brief  Get the protected area end address for Flash bank 1
01427   * @rmtoll UR6   PAEND_BANK1   LL_SYSCFG_GetFlashB1ProtectedAreaEndAddress
01428   * @retval Returned the protected area end address for Flash bank 1
01429   */
01430 __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB1ProtectedAreaEndAddress(void)
01431 {
01432   return (uint32_t)(READ_BIT(SYSCFG->UR6, SYSCFG_UR6_PAEND_BANK1));
01433 }
01434 
01435 /**
01436   * @brief  Get the secured area start address for Flash bank 1
01437   * @rmtoll UR7   SABEG_BANK1   LL_SYSCFG_GetFlashB1SecuredAreaStartAddress
01438   * @retval Returned the secured area start address for Flash bank 1
01439   */
01440 __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB1SecuredAreaStartAddress(void)
01441 {
01442   return (uint32_t)(READ_BIT(SYSCFG->UR7, SYSCFG_UR7_SABEG_BANK1));
01443 }
01444 
01445 /**
01446   * @brief  Get the secured area end address for Flash bank 1
01447   * @rmtoll UR7   SAEND_BANK1   LL_SYSCFG_GetFlashB1SecuredAreaEndAddress
01448   * @retval Returned the secured area end address for Flash bank 1
01449   */
01450 __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB1SecuredAreaEndAddress(void)
01451 {
01452   return (uint32_t)(READ_BIT(SYSCFG->UR7, SYSCFG_UR7_SAEND_BANK1));
01453 }
01454 
01455 #ifdef SYSCFG_UR8_MEPAD_BANK2
01456 /**
01457   * @brief  Indicates if the flash protected area (Bank 2) is erased by a mass erase
01458   * @rmtoll UR8   MEPAD_BANK2   LL_SYSCFG_IsFlashB2ProtectedAreaErasable
01459   * @retval State of bit (1 or 0).
01460   */
01461 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2ProtectedAreaErasable(void)
01462 {
01463   return ((READ_BIT(SYSCFG->UR8, SYSCFG_UR8_MEPAD_BANK2) == SYSCFG_UR8_MEPAD_BANK2) ? 1UL : 0UL);
01464 }
01465 
01466 /**
01467   * @brief  Indicates if the flash secured area (Bank 2) is erased by a mass erase
01468   * @rmtoll UR8   MESAD_BANK2   LL_SYSCFG_IsFlashB2SecuredAreaErasable
01469   * @retval State of bit (1 or 0).
01470   */
01471 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2SecuredAreaErasable(void)
01472 {
01473   return ((READ_BIT(SYSCFG->UR8, SYSCFG_UR8_MESAD_BANK2) == SYSCFG_UR8_MESAD_BANK2) ? 1UL : 0UL);
01474 }
01475 #endif /*SYSCFG_UR8_MEPAD_BANK2*/
01476 
01477 #ifdef SYSCFG_UR9_WRPN_BANK2
01478 /**
01479   * @brief  Indicates if the sector 0 of the Flash memory bank 2 is write protected
01480   * @rmtoll UR9   WRPN_BANK2    LL_SYSCFG_IsFlashB2Sector0WriteProtected
01481   * @retval State of bit (1 or 0).
01482   */
01483 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector0WriteProtected(void)
01484 {
01485   return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR0_STATUS_BIT)) ? 1UL : 0UL);
01486 }
01487 
01488 /**
01489   * @brief  Indicates if the sector 1 of the Flash memory bank 2 is write protected
01490   * @rmtoll UR9   WRPN_BANK2    LL_SYSCFG_IsFlashB2Sector1WriteProtected
01491   * @retval State of bit (1 or 0).
01492   */
01493 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector1WriteProtected(void)
01494 {
01495   return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR1_STATUS_BIT)) ? 1UL : 0UL);
01496 }
01497 
01498 /**
01499   * @brief  Indicates if the sector 2 of the Flash memory bank 2 is write protected
01500   * @rmtoll UR9   WRPN_BANK2    LL_SYSCFG_IsFlashB2Sector2WriteProtected
01501   * @retval State of bit (1 or 0).
01502   */
01503 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector2WriteProtected(void)
01504 {
01505   return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR2_STATUS_BIT)) ? 1UL : 0UL);
01506 }
01507 
01508 /**
01509   * @brief  Indicates if the sector 3 of the Flash memory bank 2 is write protected
01510   * @rmtoll UR9   WRPN_BANK2    LL_SYSCFG_IsFlashB2Sector3WriteProtected
01511   * @retval State of bit (1 or 0).
01512   */
01513 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector3WriteProtected(void)
01514 {
01515   return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR3_STATUS_BIT)) ? 1UL : 0UL);
01516 }
01517 
01518 /**
01519   * @brief  Indicates if the sector 4 of the Flash memory bank 2 is write protected
01520   * @rmtoll UR9   WRPN_BANK2    LL_SYSCFG_IsFlashB2Sector4WriteProtected
01521   * @retval State of bit (1 or 0).
01522   */
01523 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector4WriteProtected(void)
01524 {
01525   return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR4_STATUS_BIT)) ? 1UL : 0UL);
01526 }
01527 
01528 /**
01529   * @brief  Indicates if the sector 5 of the Flash memory bank 2 is write protected
01530   * @rmtoll UR9   WRPN_BANK2    LL_SYSCFG_IsFlashB2Sector5WriteProtected
01531   * @retval State of bit (1 or 0).
01532   */
01533 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector5WriteProtected(void)
01534 {
01535   return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR5_STATUS_BIT)) ? 1UL : 0UL);
01536 }
01537 
01538 /**
01539   * @brief  Indicates if the sector 6 of the Flash memory bank 2 is write protected
01540   * @rmtoll UR9   WRPN_BANK2    LL_SYSCFG_IsFlashB2Sector6WriteProtected
01541   * @retval State of bit (1 or 0).
01542   */
01543 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector6WriteProtected(void)
01544 {
01545   return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR6_STATUS_BIT)) ? 1UL : 0UL);
01546 }
01547 
01548 /**
01549   * @brief  Indicates if the sector 7 of the Flash memory bank 2 is write protected
01550   * @rmtoll UR9   WRPN_BANK2    LL_SYSCFG_IsFlashB2Sector7WriteProtected
01551   * @retval State of bit (1 or 0).
01552   */
01553 __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector7WriteProtected(void)
01554 {
01555   return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR7_STATUS_BIT)) ? 1UL : 0UL);
01556 }
01557 
01558 /**
01559   * @brief  Get the protected area start address for Flash bank 2
01560   * @rmtoll UR9   PABEG_BANK2   LL_SYSCFG_GetFlashB2ProtectedAreaStartAddress
01561   * @retval Returned the protected area start address for Flash bank 2
01562   */
01563 __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB2ProtectedAreaStartAddress(void)
01564 {
01565   return (uint32_t)(READ_BIT(SYSCFG->UR9, SYSCFG_UR9_PABEG_BANK2));
01566 }
01567 #endif /*SYSCFG_UR9_WRPN_BANK2*/
01568 
01569 #ifdef SYSCFG_UR10_PAEND_BANK2
01570 /**
01571   * @brief  Get the protected area end address for Flash bank 2
01572   * @rmtoll UR10    PAEND_BANK2   LL_SYSCFG_GetFlashB2ProtectedAreaEndAddress
01573   * @retval Returned the protected area end address for Flash bank 2
01574   */
01575 __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB2ProtectedAreaEndAddress(void)
01576 {
01577   return (uint32_t)(READ_BIT(SYSCFG->UR10, SYSCFG_UR10_PAEND_BANK2));
01578 }
01579 
01580 /**
01581   * @brief  Get the secured area start address for Flash bank 2
01582   * @rmtoll UR10    SABEG_BANK2   LL_SYSCFG_GetFlashB2SecuredAreaStartAddress
01583   * @retval Returned the secured area start address for Flash bank 2
01584   */
01585 __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB2SecuredAreaStartAddress(void)
01586 {
01587   return (uint32_t)(READ_BIT(SYSCFG->UR10, SYSCFG_UR10_SABEG_BANK2));
01588 }
01589 #endif /*SYSCFG_UR10_PAEND_BANK2*/
01590 
01591 #ifdef SYSCFG_UR11_SAEND_BANK2
01592 /**
01593   * @brief  Get the secured area end address for Flash bank 2
01594   * @rmtoll UR11    SAEND_BANK2   LL_SYSCFG_GetFlashB2SecuredAreaEndAddress
01595   * @retval Returned the secured area end address for Flash bank 2
01596   */
01597 __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB2SecuredAreaEndAddress(void)
01598 {
01599   return (uint32_t)(READ_BIT(SYSCFG->UR11, SYSCFG_UR11_SAEND_BANK2));
01600 }
01601 #endif /*SYSCFG_UR11_SAEND_BANK2*/
01602 
01603 /**
01604   * @brief  Get the Independent Watchdog 1 control mode (Software or Hardware)
01605   * @rmtoll UR11    IWDG1M    LL_SYSCFG_GetIWDG1ControlMode
01606   * @retval Returned value can be one of the following values:
01607   *         @arg @ref LL_SYSCFG_IWDG1_SW_CONTROL_MODE
01608   *         @arg @ref LL_SYSCFG_IWDG1_HW_CONTROL_MODE
01609   */
01610 __STATIC_INLINE uint32_t LL_SYSCFG_GetIWDG1ControlMode(void)
01611 {
01612   return (uint32_t)(READ_BIT(SYSCFG->UR11, SYSCFG_UR11_IWDG1M));
01613 }
01614 
01615 #if defined (DUAL_CORE)
01616 /**
01617   * @brief  Get the Independent Watchdog 2 control mode (Software or Hardware)
01618   * @rmtoll UR12    IWDG2M    LL_SYSCFG_GetIWDG2ControlMode
01619   * @retval Returned value can be one of the following values:
01620   *         @arg @ref LL_SYSCFG_IWDG2_SW_CONTROL_MODE
01621   *         @arg @ref LL_SYSCFG_IWDG2_HW_CONTROL_MODE
01622   */
01623 __STATIC_INLINE uint32_t LL_SYSCFG_GetIWDG2ControlMode(void)
01624 {
01625   return (uint32_t)(READ_BIT(SYSCFG->UR12, SYSCFG_UR12_IWDG2M));
01626 }
01627 #endif /* DUAL_CORE */
01628 
01629 /**
01630   * @brief  Indicates the Secure mode status
01631   * @rmtoll UR12    SECURE    LL_SYSCFG_IsSecureModeEnabled
01632   * @retval State of bit (1 or 0).
01633   */
01634 __STATIC_INLINE uint32_t LL_SYSCFG_IsSecureModeEnabled(void)
01635 {
01636   return ((READ_BIT(SYSCFG->UR12, SYSCFG_UR12_SECURE) == SYSCFG_UR12_SECURE) ? 1UL : 0UL);
01637 }
01638 
01639 /**
01640   * @brief  Indicates if a reset is generated when D1 domain enters DStandby mode
01641   * @rmtoll UR13    D1SBRST   LL_SYSCFG_IsD1StandbyGenerateReset
01642   * @retval State of bit (1 or 0).
01643   */
01644 __STATIC_INLINE uint32_t LL_SYSCFG_IsD1StandbyGenerateReset(void)
01645 {
01646   return ((READ_BIT(SYSCFG->UR13, SYSCFG_UR13_D1SBRST) == 0U) ? 1UL : 0UL);
01647 }
01648 
01649 /**
01650   * @brief  Get the secured DTCM RAM size
01651   * @rmtoll UR13    SDRS    LL_SYSCFG_GetSecuredDTCMSize
01652   * @retval Returned value can be one of the following values:
01653   *           @arg @ref LL_SYSCFG_DTCM_RAM_SIZE_2KB
01654   *           @arg @ref LL_SYSCFG_DTCM_RAM_SIZE_4KB
01655   *           @arg @ref LL_SYSCFG_DTCM_RAM_SIZE_8KB
01656   *           @arg @ref LL_SYSCFG_DTCM_RAM_SIZE_16KB
01657   */
01658 __STATIC_INLINE uint32_t LL_SYSCFG_GetSecuredDTCMSize(void)
01659 {
01660   return (uint32_t)(READ_BIT(SYSCFG->UR13, SYSCFG_UR13_SDRS));
01661 }
01662 
01663 /**
01664   * @brief  Indicates if a reset is generated when D1 domain enters DStop mode
01665   * @rmtoll UR14    D1STPRST    LL_SYSCFG_IsD1StopGenerateReset
01666   * @retval State of bit (1 or 0).
01667   */
01668 __STATIC_INLINE uint32_t LL_SYSCFG_IsD1StopGenerateReset(void)
01669 {
01670   return ((READ_BIT(SYSCFG->UR14, SYSCFG_UR14_D1STPRST) == 0U) ? 1UL : 0UL);
01671 }
01672 
01673 #if defined (DUAL_CORE)
01674 /**
01675   * @brief  Indicates if a reset is generated when D2 domain enters DStandby mode
01676   * @rmtoll UR14    D2SBRST   LL_SYSCFG_IsD2StandbyGenerateReset
01677   * @retval State of bit (1 or 0).
01678   */
01679 __STATIC_INLINE uint32_t LL_SYSCFG_IsD2StandbyGenerateReset(void)
01680 {
01681   return ((READ_BIT(SYSCFG->UR14, SYSCFG_UR14_D2SBRST) == 0U) ? 1UL : 0UL);
01682 }
01683 
01684 /**
01685   * @brief  Indicates if a reset is generated when D2 domain enters DStop mode
01686   * @rmtoll UR15    D2STPRST    LL_SYSCFG_IsD2StopGenerateReset
01687   * @retval State of bit (1 or 0).
01688   */
01689 __STATIC_INLINE uint32_t LL_SYSCFG_IsD2StopGenerateReset(void)
01690 {
01691   return ((READ_BIT(SYSCFG->UR15, SYSCFG_UR15_D2STPRST) == 0U) ? 1UL : 0UL);
01692 }
01693 #endif /* DUAL_CORE */
01694 
01695 /**
01696   * @brief  Indicates if the independent watchdog is frozen in Standby mode
01697   * @rmtoll UR15    FZIWDGSTB   LL_SYSCFG_IsIWDGFrozenInStandbyMode
01698   * @retval State of bit (1 or 0).
01699   */
01700 __STATIC_INLINE uint32_t LL_SYSCFG_IsIWDGFrozenInStandbyMode(void)
01701 {
01702   return ((READ_BIT(SYSCFG->UR15, SYSCFG_UR15_FZIWDGSTB) == 0U) ? 1UL : 0UL);
01703 }
01704 
01705 /**
01706   * @brief  Indicates if the independent watchdog is frozen in Stop mode
01707   * @rmtoll UR16    FZIWDGSTP   LL_SYSCFG_IsIWDGFrozenInStopMode
01708   * @retval State of bit (1 or 0).
01709   */
01710 __STATIC_INLINE uint32_t LL_SYSCFG_IsIWDGFrozenInStopMode(void)
01711 {
01712   return ((READ_BIT(SYSCFG->UR16, SYSCFG_UR16_FZIWDGSTP) == 0U) ? 1UL : 0UL);
01713 }
01714 
01715 /**
01716   * @brief  Indicates if the device private key is programmed
01717   * @rmtoll UR16    PKP   LL_SYSCFG_IsPrivateKeyProgrammed
01718   * @retval State of bit (1 or 0).
01719   */
01720 __STATIC_INLINE uint32_t LL_SYSCFG_IsPrivateKeyProgrammed(void)
01721 {
01722   return ((READ_BIT(SYSCFG->UR16, SYSCFG_UR16_PKP) == SYSCFG_UR16_PKP) ? 1UL : 0UL);
01723 }
01724 
01725 /**
01726   * @brief  Indicates if the Product is working on the full voltage range or not
01727   * @rmtoll UR17    IOHSLV    LL_SYSCFG_IsActiveFlag_IOHSLV
01728   * @note   When the IOHSLV option bit is set the Product is working below 2.7 V.
01729   *         When the IOHSLV option bit is reset the Product is working on the
01730   *         full voltage range.
01731   * @retval State of bit (1 or 0).
01732   */
01733 __STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_IOHSLV(void)
01734 {
01735   return ((READ_BIT(SYSCFG->UR17, SYSCFG_UR17_IOHSLV) == SYSCFG_UR17_IOHSLV) ? 1UL : 0UL);
01736 }
01737 
01738 #ifdef SYSCFG_UR17_TCM_AXI_CFG
01739 /**
01740   * @brief  Get the size of ITCM-RAM and AXI-SRAM
01741   * @rmtoll UR17    TCM_AXI_CFG    LL_SYSCFG_Get_ITCM_AXI_RAM_Size
01742   * @retval Returned value can be one of the following values:
01743   *           @arg @ref LL_SYSCFG_ITCM_AXI_64KB_320KB
01744   *           @arg @ref LL_SYSCFG_ITCM_AXI_128KB_256KB
01745   *           @arg @ref LL_SYSCFG_ITCM_AXI_192KB_192KB
01746   *           @arg @ref LL_SYSCFG_ITCM_AXI_256KB_128KB
01747   */
01748 __STATIC_INLINE uint32_t LL_SYSCFG_Get_ITCM_AXI_RAM_Size(void)
01749 {
01750   return (uint32_t)(READ_BIT(SYSCFG->UR17, SYSCFG_UR17_TCM_AXI_CFG));
01751 }
01752 #endif /*SYSCFG_UR17_TCM_AXI_CFG*/
01753 
01754 #ifdef SYSCFG_UR18_CPU_FREQ_BOOST
01755 /**
01756   * @brief  Indicates if the CPU maximum frequency boost is enabled
01757   * @rmtoll UR18    CPU_FREQ_BOOST   LL_SYSCFG_IsCpuFreqBoostEnabled
01758   * @retval State of bit (1 or 0).
01759   */
01760 __STATIC_INLINE uint32_t LL_SYSCFG_IsCpuFreqBoostEnabled(void)
01761 {
01762   return ((READ_BIT(SYSCFG->UR18, SYSCFG_UR18_CPU_FREQ_BOOST) == SYSCFG_UR18_CPU_FREQ_BOOST) ? 1UL : 0UL);
01763 }
01764 #endif /*SYSCFG_UR18_CPU_FREQ_BOOST*/
01765 
01766 #endif /*SYSCFG_UR0_RDP*/
01767 
01768 /**
01769   * @}
01770   */
01771 
01772 /** @defgroup SYSTEM_LL_EF_DBGMCU DBGMCU
01773   * @{
01774   */
01775 
01776 /**
01777   * @brief  Return the device identifier
01778   * @rmtoll DBGMCU_IDCODE DEV_ID        LL_DBGMCU_GetDeviceID
01779   * @retval Values between Min_Data=0x00 and Max_Data=0xFFF
01780   */
01781 __STATIC_INLINE uint32_t LL_DBGMCU_GetDeviceID(void)
01782 {
01783   return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_DEV_ID));
01784 }
01785 
01786 /**
01787   * @brief  Return the device revision identifier
01788   * @note This field indicates the revision of the device.
01789           For example, it is read as RevA -> 0x1000, Cat 2 revZ -> 0x1001
01790   * @rmtoll DBGMCU_IDCODE REV_ID        LL_DBGMCU_GetRevisionID
01791   * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF
01792   */
01793 __STATIC_INLINE uint32_t LL_DBGMCU_GetRevisionID(void)
01794 {
01795   return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_REV_ID) >> DBGMCU_IDCODE_REV_ID_Pos);
01796 }
01797 
01798 /**
01799   * @brief  Enable D1 Domain/CDomain debug during SLEEP mode
01800   * @rmtoll DBGMCU_CR    DBGSLEEP_D1/DBGSLEEP_CD     LL_DBGMCU_EnableD1DebugInSleepMode
01801   * @retval None
01802   */
01803 __STATIC_INLINE void LL_DBGMCU_EnableD1DebugInSleepMode(void)
01804 {
01805   SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEPD1);
01806 }
01807 
01808 /**
01809   * @brief  Disable D1 Domain/CDomain debug during SLEEP mode
01810   * @rmtoll DBGMCU_CR    DBGSLEEP_D1/DBGSLEEP_CD     LL_DBGMCU_DisableD1DebugInSleepMode
01811   * @retval None
01812   */
01813 __STATIC_INLINE void LL_DBGMCU_DisableD1DebugInSleepMode(void)
01814 {
01815   CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEPD1);
01816 }
01817 
01818 /**
01819   * @brief  Enable D1 Domain/CDomain debug during STOP mode
01820   * @rmtoll DBGMCU_CR    DBGSTOP_D1/DBGSLEEP_CD     LL_DBGMCU_EnableD1DebugInStopMode
01821   * @retval None
01822   */
01823 __STATIC_INLINE void LL_DBGMCU_EnableD1DebugInStopMode(void)
01824 {
01825   SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD1);
01826 }
01827 
01828 /**
01829   * @brief  Disable D1 Domain/CDomain debug during STOP mode
01830   * @rmtoll DBGMCU_CR    DBGSTOP_D1/DBGSLEEP_CD     LL_DBGMCU_DisableD1DebugInStopMode
01831   * @retval None
01832   */
01833 __STATIC_INLINE void LL_DBGMCU_DisableD1DebugInStopMode(void)
01834 {
01835   CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD1);
01836 }
01837 
01838 /**
01839   * @brief  Enable D1 Domain/CDomain debug during STANDBY mode
01840   * @rmtoll DBGMCU_CR    DBGSTBY_D1/DBGSLEEP_CD     LL_DBGMCU_EnableD1DebugInStandbyMode
01841   * @retval None
01842   */
01843 __STATIC_INLINE void LL_DBGMCU_EnableD1DebugInStandbyMode(void)
01844 {
01845   SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD1);
01846 }
01847 
01848 /**
01849   * @brief  Disable D1 Domain/CDomain debug during STANDBY mode
01850   * @rmtoll DBGMCU_CR    DBGSTBY_D1/DBGSLEEP_CD     LL_DBGMCU_DisableD1DebugInStandbyMode
01851   * @retval None
01852   */
01853 __STATIC_INLINE void LL_DBGMCU_DisableD1DebugInStandbyMode(void)
01854 {
01855   CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD1);
01856 }
01857 
01858 #if defined (DUAL_CORE)
01859 /**
01860   * @brief  Enable D2 Domain debug during SLEEP mode
01861   * @rmtoll DBGMCU_CR    DBGSLEEP_D2     LL_DBGMCU_EnableD2DebugInSleepMode
01862   * @retval None
01863   */
01864 __STATIC_INLINE void LL_DBGMCU_EnableD2DebugInSleepMode(void)
01865 {
01866   SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEPD2);
01867 }
01868 
01869 /**
01870   * @brief  Disable D2 Domain debug during SLEEP mode
01871   * @rmtoll DBGMCU_CR    DBGSLEEP_D2     LL_DBGMCU_DisableD2DebugInSleepMode
01872   * @retval None
01873   */
01874 __STATIC_INLINE void LL_DBGMCU_DisableD2DebugInSleepMode(void)
01875 {
01876   CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEPD2);
01877 }
01878 
01879 /**
01880   * @brief  Enable D2 Domain debug during STOP mode
01881   * @rmtoll DBGMCU_CR    DBGSTOP_D2     LL_DBGMCU_EnableD2DebugInStopMode
01882   * @retval None
01883   */
01884 __STATIC_INLINE void LL_DBGMCU_EnableD2DebugInStopMode(void)
01885 {
01886   SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD2);
01887 }
01888 
01889 /**
01890   * @brief  Disable D2 Domain debug during STOP mode
01891   * @rmtoll DBGMCU_CR    DBGSTOP_D2     LL_DBGMCU_DisableD2DebugInStopMode
01892   * @retval None
01893   */
01894 __STATIC_INLINE void LL_DBGMCU_DisableD2DebugInStopMode(void)
01895 {
01896   CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD2);
01897 }
01898 
01899 /**
01900   * @brief  Enable D2 Domain debug during STANDBY mode
01901   * @rmtoll DBGMCU_CR    DBGSTBY_D2     LL_DBGMCU_EnableD2DebugInStandbyMode
01902   * @retval None
01903   */
01904 __STATIC_INLINE void LL_DBGMCU_EnableD2DebugInStandbyMode(void)
01905 {
01906   SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD2);
01907 }
01908 
01909 /**
01910   * @brief  Disable D2 Domain debug during STANDBY mode
01911   * @rmtoll DBGMCU_CR    DBGSTBY_D2     LL_DBGMCU_DisableD2DebugInStandbyMode
01912   * @retval None
01913   */
01914 __STATIC_INLINE void LL_DBGMCU_DisableD2DebugInStandbyMode(void)
01915 {
01916   CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD2);
01917 }
01918 #endif /* DUAL_CORE */
01919 
01920 
01921 #if defined(DBGMCU_CR_DBG_STOPD3)
01922 /**
01923   * @brief  Enable D3 Domain/SRDomain debug during STOP mode
01924   * @rmtoll DBGMCU_CR    DBGSTOP_D3/DBGSTOP_SRD    LL_DBGMCU_EnableD3DebugInStopMode
01925   * @retval None
01926   */
01927 __STATIC_INLINE void LL_DBGMCU_EnableD3DebugInStopMode(void)
01928 {
01929   SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD3);
01930 }
01931 
01932 /**
01933   * @brief  Disable D3 Domain/SRDomain debug during STOP mode
01934   * @rmtoll DBGMCU_CR    DBGSTOP_D3/DBGSTOP_SRD     LL_DBGMCU_DisableD3DebugInStopMode
01935   * @retval None
01936   */
01937 __STATIC_INLINE void LL_DBGMCU_DisableD3DebugInStopMode(void)
01938 {
01939   CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD3);
01940 }
01941 #endif /*DBGMCU_CR_DBG_STOPD3*/
01942 
01943 #if defined(DBGMCU_CR_DBG_STANDBYD3)
01944 /**
01945   * @brief  Enable D3 Domain/SRDomain debug during STANDBY mode
01946   * @rmtoll DBGMCU_CR    DBGSTBY_D3/DBGSTBY_SRD     LL_DBGMCU_EnableD3DebugInStandbyMode
01947   * @retval None
01948   */
01949 __STATIC_INLINE void LL_DBGMCU_EnableD3DebugInStandbyMode(void)
01950 {
01951   SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD3);
01952 }
01953 
01954 /**
01955   * @brief  Disable D3 Domain/SRDomain debug during STANDBY mode
01956   * @rmtoll DBGMCU_CR    DBGSTBY_D3/DBGSTBY_SRD     LL_DBGMCU_DisableD3DebugInStandbyMode
01957   * @retval None
01958   */
01959 __STATIC_INLINE void LL_DBGMCU_DisableD3DebugInStandbyMode(void)
01960 {
01961   CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD3);
01962 }
01963 #endif /*DBGMCU_CR_DBG_STANDBYD3*/
01964 
01965 /**
01966   * @brief  Enable the trace port clock
01967   * @rmtoll DBGMCU_CR    TRACECKEN     LL_DBGMCU_EnableTracePortClock
01968   * @retval None
01969   */
01970 __STATIC_INLINE void LL_DBGMCU_EnableTracePortClock(void)
01971 {
01972   SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TRACECKEN);
01973 }
01974 
01975 /**
01976   * @brief  Disable the trace port clock
01977   * @rmtoll DBGMCU_CR    TRACECKEN     LL_DBGMCU_DisableTracePortClock
01978   * @retval None
01979   */
01980 __STATIC_INLINE void LL_DBGMCU_DisableTracePortClock(void)
01981 {
01982   CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TRACECKEN);
01983 }
01984 
01985 /**
01986   * @brief  Enable the Domain1/CDomain debug clock enable
01987   * @rmtoll DBGMCU_CR    CKD1EN/CKCDEN     LL_DBGMCU_EnableD1DebugClock
01988   * @retval None
01989   */
01990 __STATIC_INLINE void LL_DBGMCU_EnableD1DebugClock(void)
01991 {
01992   SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CKD1EN);
01993 }
01994 
01995 /**
01996   * @brief  Disable the Domain1/CDomain debug clock enable
01997   * @rmtoll DBGMCU_CR    CKD1EN/CKCDEN     LL_DBGMCU_DisableD1DebugClock
01998   * @retval None
01999   */
02000 __STATIC_INLINE void LL_DBGMCU_DisableD1DebugClock(void)
02001 {
02002   CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CKD1EN);
02003 }
02004 
02005 /**
02006   * @brief  Enable the Domain3/SRDomain debug clock enable
02007   * @rmtoll DBGMCU_CR    CKD3EN/CKSRDEN     LL_DBGMCU_EnableD3DebugClock
02008   * @retval None
02009   */
02010 __STATIC_INLINE void LL_DBGMCU_EnableD3DebugClock(void)
02011 {
02012   SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CKD3EN);
02013 }
02014 
02015 /**
02016   * @brief  Disable the Domain3/SRDomain debug clock enable
02017   * @rmtoll DBGMCU_CR    CKD3EN/CKSRDEN    LL_DBGMCU_DisableD3DebugClock
02018   * @retval None
02019   */
02020 __STATIC_INLINE void LL_DBGMCU_DisableD3DebugClock(void)
02021 {
02022   CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CKD3EN);
02023 }
02024 
02025 #define LL_DBGMCU_TRGIO_INPUT_DIRECTION   0U
02026 #define LL_DBGMCU_TRGIO_OUTPUT_DIRECTION  DBGMCU_CR_DBG_TRGOEN
02027 /**
02028   * @brief  Set the direction of the bi-directional trigger pin TRGIO
02029   * @rmtoll DBGMCU_CR    TRGOEN    LL_DBGMCU_SetExternalTriggerPinDirection\n
02030   * @param  PinDirection This parameter can be one of the following values:
02031   *         @arg @ref LL_DBGMCU_TRGIO_INPUT_DIRECTION
02032   *         @arg @ref LL_DBGMCU_TRGIO_OUTPUT_DIRECTION
02033   * @retval None
02034   */
02035 __STATIC_INLINE void LL_DBGMCU_SetExternalTriggerPinDirection(uint32_t PinDirection)
02036 {
02037   MODIFY_REG(DBGMCU->CR, DBGMCU_CR_DBG_TRGOEN, PinDirection);
02038 }
02039 
02040 /**
02041   * @brief  Get the direction of the bi-directional trigger pin TRGIO
02042   * @rmtoll DBGMCU_CR    TRGOEN    LL_DBGMCU_GetExternalTriggerPinDirection\n
02043   * @retval Returned value can be one of the following values:
02044   *         @arg @ref LL_DBGMCU_TRGIO_INPUT_DIRECTION
02045   *         @arg @ref LL_DBGMCU_TRGIO_OUTPUT_DIRECTION
02046   */
02047 __STATIC_INLINE uint32_t LL_DBGMCU_GetExternalTriggerPinDirection(void)
02048 {
02049   return (uint32_t)(READ_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TRGOEN));
02050 }
02051 
02052 /**
02053   * @brief  Freeze APB1 group1 peripherals
02054   * @rmtoll DBGMCU_APB1LFZ1   TIM2      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02055   *         DBGMCU_APB1LFZ1   TIM3      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02056   *         DBGMCU_APB1LFZ1   TIM4      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02057   *         DBGMCU_APB1LFZ1   TIM5      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02058   *         DBGMCU_APB1LFZ1   TIM6      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02059   *         DBGMCU_APB1LFZ1   TIM7      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02060   *         DBGMCU_APB1LFZ1   TIM12     LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02061   *         DBGMCU_APB1LFZ1   TIM13     LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02062   *         DBGMCU_APB1LFZ1   TIM14     LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02063   *         DBGMCU_APB1LFZ1   LPTIM1    LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02064   *         DBGMCU_APB1LFZ1   I2C1      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02065   *         DBGMCU_APB1LFZ1   I2C2      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02066   *         DBGMCU_APB1LFZ1   I2C3      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02067   *         DBGMCU_APB1LFZ1   I2C5      LL_DBGMCU_APB1_GRP1_FreezePeriph\n (*)
02068   * @param  Periphs This parameter can be a combination of the following values:
02069   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP
02070   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP
02071   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP
02072   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP
02073   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP
02074   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP
02075   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM12_STOP
02076   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM13_STOP
02077   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM14_STOP
02078   *         @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP
02079   *         @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP
02080   *         @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP
02081   *         @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP
02082   *         @arg @ref LL_DBGMCU_APB1_GRP1_I2C5_STOP (*)
02083   *
02084   *         (*) value not defined in all devices
02085   * @retval None
02086   */
02087 __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_FreezePeriph(uint32_t Periphs)
02088 {
02089   SET_BIT(DBGMCU->APB1LFZ1, Periphs);
02090 }
02091 
02092 /**
02093   * @brief  Unfreeze APB1 peripherals (group1 peripherals)
02094   * @rmtoll DBGMCU_APB1LFZ1   TIM2      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02095   *         DBGMCU_APB1LFZ1   TIM3      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02096   *         DBGMCU_APB1LFZ1   TIM4      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02097   *         DBGMCU_APB1LFZ1   TIM5      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02098   *         DBGMCU_APB1LFZ1   TIM6      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02099   *         DBGMCU_APB1LFZ1   TIM7      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02100   *         DBGMCU_APB1LFZ1   TIM12     LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02101   *         DBGMCU_APB1LFZ1   TIM13     LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02102   *         DBGMCU_APB1LFZ1   TIM14     LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02103   *         DBGMCU_APB1LFZ1   LPTIM1    LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02104   *         DBGMCU_APB1LFZ1   I2C1      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02105   *         DBGMCU_APB1LFZ1   I2C2      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02106   *         DBGMCU_APB1LFZ1   I2C3      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02107   *         DBGMCU_APB1LFZ1   I2C5      LL_DBGMCU_APB1_GRP1_FreezePeriph\n
02108   * @param  Periphs This parameter can be a combination of the following values:
02109   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP
02110   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP
02111   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP
02112   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP
02113   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP
02114   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP
02115   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM12_STOP
02116   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM13_STOP
02117   *         @arg @ref LL_DBGMCU_APB1_GRP1_TIM14_STOP
02118   *         @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP
02119   *         @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP
02120   *         @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP
02121   *         @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP
02122   *         @arg @ref LL_DBGMCU_APB1_GRP1_I2C5_STOP (*)
02123   *
02124   *         (*) value not defined in all devices
02125   * @retval None
02126   */
02127 __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_UnFreezePeriph(uint32_t Periphs)
02128 {
02129   CLEAR_BIT(DBGMCU->APB1LFZ1, Periphs);
02130 }
02131 
02132 #ifdef DBGMCU_APB1HFZ1_DBG_FDCAN
02133 /**
02134   * @brief  Freeze APB1 group2 peripherals
02135   * @rmtoll DBGMCU_APB1HFZ1   FDCAN   LL_DBGMCU_APB1_GRP2_FreezePeriph\n
02136   * @param  Periphs This parameter can be a combination of the following values:
02137   *         @arg @ref LL_DBGMCU_APB1_GRP2_FDCAN_STOP
02138   * @retval None
02139   */
02140 __STATIC_INLINE void LL_DBGMCU_APB1_GRP2_FreezePeriph(uint32_t Periphs)
02141 {
02142   SET_BIT(DBGMCU->APB1HFZ1, Periphs);
02143 }
02144 
02145 /**
02146   * @brief  Unfreeze APB1 group2 peripherals
02147   * @rmtoll DBGMCU_APB1HFZ1   FDCAN   LL_DBGMCU_APB1_GRP2_UnFreezePeriph\n
02148   * @param  Periphs This parameter can be a combination of the following values:
02149   *         @arg @ref LL_DBGMCU_APB1_GRP2_FDCAN_STOP
02150   * @retval None
02151   */
02152 __STATIC_INLINE void LL_DBGMCU_APB1_GRP2_UnFreezePeriph(uint32_t Periphs)
02153 {
02154   CLEAR_BIT(DBGMCU->APB1HFZ1, Periphs);
02155 }
02156 #endif /*DBGMCU_APB1HFZ1_DBG_FDCAN*/
02157 
02158 #if defined(TIM23) || defined(TIM24)
02159 /**
02160   * @brief  Freeze APB1 group2 peripherals
02161   * @rmtoll DBGMCU_APB1HFZ1   TIM23   LL_DBGMCU_APB1_GRP2_FreezePeriph\n
02162   *         DBGMCU_APB1HFZ1   TIM24   LL_DBGMCU_APB1_GRP2_FreezePeriph\n
02163   * @param  Periphs This parameter can be a combination of the following values:
02164   *         @arg @ref LL_DBGMCU_APB1_GRP2_TIM23_STOP
02165   *         @arg @ref LL_DBGMCU_APB1_GRP2_TIM24_STOP
02166   * @retval None
02167   */
02168 __STATIC_INLINE void LL_DBGMCU_APB1_GRP2_FreezePeriph(uint32_t Periphs)
02169 {
02170   SET_BIT(DBGMCU->APB1HFZ1, Periphs);
02171 }
02172 
02173 /**
02174   * @brief  Unfreeze APB1 group2 peripherals
02175   * @rmtoll DBGMCU_APB1HFZ1   TIM23   LL_DBGMCU_APB1_GRP2_UnFreezePeriph\n
02176             DBGMCU_APB1HFZ1   TIM24   LL_DBGMCU_APB1_GRP2_UnFreezePeriph\n
02177   * @param  Periphs This parameter can be a combination of the following values:
02178   *         @arg @ref LL_DBGMCU_APB1_GRP2_TIM23_STOP
02179   *         @arg @ref LL_DBGMCU_APB1_GRP2_TIM24_STOP
02180   * @retval None
02181   */
02182 __STATIC_INLINE void LL_DBGMCU_APB1_GRP2_UnFreezePeriph(uint32_t Periphs)
02183 {
02184   CLEAR_BIT(DBGMCU->APB1HFZ1, Periphs);
02185 }
02186 #endif /* TIM23 || TIM24 */
02187 
02188 /**
02189   * @brief  Freeze APB2 peripherals
02190   * @rmtoll DBGMCU_APB2FZ1    TIM1     LL_DBGMCU_APB2_GRP1_FreezePeriph\n
02191   *         DBGMCU_APB2FZ1    TIM8     LL_DBGMCU_APB2_GRP1_FreezePeriph\n
02192   *         DBGMCU_APB2FZ1    TIM15    LL_DBGMCU_APB2_GRP1_FreezePeriph\n
02193   *         DBGMCU_APB2FZ1    TIM16    LL_DBGMCU_APB2_GRP1_FreezePeriph\n
02194   *         DBGMCU_APB2FZ1    TIM17    LL_DBGMCU_APB2_GRP1_FreezePeriph
02195   *         DBGMCU_APB2FZ1    HRTIM    LL_DBGMCU_APB2_GRP1_FreezePeriph
02196   * @param  Periphs This parameter can be a combination of the following values:
02197   *         @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP
02198   *         @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP
02199   *         @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP
02200   *         @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP
02201   *         @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP
02202   *         @arg @ref LL_DBGMCU_APB2_GRP1_HRTIM_STOP (*)
02203   *
02204   *         (*) value not defined in all devices
02205   * @retval None
02206   */
02207 __STATIC_INLINE void LL_DBGMCU_APB2_GRP1_FreezePeriph(uint32_t Periphs)
02208 {
02209   SET_BIT(DBGMCU->APB2FZ1, Periphs);
02210 }
02211 
02212 /**
02213   * @brief  Unfreeze APB2 peripherals
02214   * @rmtoll DBGMCU_APB2FZ1    TIM1     LL_DBGMCU_APB2_GRP1_FreezePeriph\n
02215   *         DBGMCU_APB2FZ1    TIM8     LL_DBGMCU_APB2_GRP1_FreezePeriph\n
02216   *         DBGMCU_APB2FZ1    TIM15    LL_DBGMCU_APB2_GRP1_FreezePeriph\n
02217   *         DBGMCU_APB2FZ1    TIM16    LL_DBGMCU_APB2_GRP1_FreezePeriph\n
02218   *         DBGMCU_APB2FZ1    TIM17    LL_DBGMCU_APB2_GRP1_FreezePeriph
02219   *         DBGMCU_APB2FZ1    HRTIM    LL_DBGMCU_APB2_GRP1_FreezePeriph
02220   * @param  Periphs This parameter can be a combination of the following values:
02221   *         @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP
02222   *         @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP
02223   *         @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP
02224   *         @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP
02225   *         @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP
02226   *         @arg @ref LL_DBGMCU_APB2_GRP1_HRTIM_STOP (*)
02227   *
02228   *         (*) value not defined in all devices
02229   * @retval None
02230   */
02231 __STATIC_INLINE void LL_DBGMCU_APB2_GRP1_UnFreezePeriph(uint32_t Periphs)
02232 {
02233   CLEAR_BIT(DBGMCU->APB2FZ1, Periphs);
02234 }
02235 
02236 /**
02237   * @brief  Freeze APB3 peripherals
02238   * @rmtoll DBGMCU_APB3FZ1    WWDG1     LL_DBGMCU_APB3_GRP1_FreezePeriph\n
02239   * @param  Periphs This parameter can be a combination of the following values:
02240   *         @arg @ref LL_DBGMCU_APB3_GRP1_WWDG1_STOP
02241   * @retval None
02242   */
02243 __STATIC_INLINE void LL_DBGMCU_APB3_GRP1_FreezePeriph(uint32_t Periphs)
02244 {
02245   SET_BIT(DBGMCU->APB3FZ1, Periphs);
02246 }
02247 
02248 /**
02249   * @brief  Unfreeze APB3 peripherals
02250   * @rmtoll DBGMCU_APB3FZ1    WWDG1     LL_DBGMCU_APB3_GRP1_UnFreezePeriph\n
02251   * @param  Periphs This parameter can be a combination of the following values:
02252   *         @arg @ref LL_DBGMCU_APB3_GRP1_WWDG1_STOP
02253   * @retval None
02254   */
02255 __STATIC_INLINE void LL_DBGMCU_APB3_GRP1_UnFreezePeriph(uint32_t Periphs)
02256 {
02257   CLEAR_BIT(DBGMCU->APB3FZ1, Periphs);
02258 }
02259 
02260 /**
02261   * @brief  Freeze APB4 peripherals
02262   * @rmtoll DBGMCU_APB4FZ1    I2C4      LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02263   * @rmtoll DBGMCU_APB4FZ1    LPTIM2    LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02264   * @rmtoll DBGMCU_APB4FZ1    LPTIM3    LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02265   * @rmtoll DBGMCU_APB4FZ1    LPTIM4    LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02266   * @rmtoll DBGMCU_APB4FZ1    LPTIM5    LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02267   * @rmtoll DBGMCU_APB4FZ1    RTC       LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02268   * @rmtoll DBGMCU_APB4FZ1    WDGLSD1   LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02269   * @param  Periphs This parameter can be a combination of the following values:
02270   *         @arg @ref LL_DBGMCU_APB4_GRP1_I2C4_STOP
02271   *         @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM2_STOP
02272   *         @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM3_STOP
02273   *         @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM4_STOP (*)
02274   *         @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM5_STOP (*)
02275   *         @arg @ref LL_DBGMCU_APB4_GRP1_RTC_STOP
02276   *         @arg @ref LL_DBGMCU_APB4_GRP1_IWDG1_STOP
02277   *
02278   *         (*) value not defined in all devices
02279   * @retval None
02280   */
02281 __STATIC_INLINE void LL_DBGMCU_APB4_GRP1_FreezePeriph(uint32_t Periphs)
02282 {
02283   SET_BIT(DBGMCU->APB4FZ1, Periphs);
02284 }
02285 
02286 /**
02287   * @brief  Unfreeze APB4 peripherals
02288   * @rmtoll DBGMCU_APB4FZ1    I2C4      LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02289   * @rmtoll DBGMCU_APB4FZ1    LPTIM2    LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02290   * @rmtoll DBGMCU_APB4FZ1    LPTIM3    LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02291   * @rmtoll DBGMCU_APB4FZ1    LPTIM4    LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02292   * @rmtoll DBGMCU_APB4FZ1    LPTIM5    LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02293   * @rmtoll DBGMCU_APB4FZ1    RTC       LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02294   * @rmtoll DBGMCU_APB4FZ1    WDGLSD1   LL_DBGMCU_APB4_GRP1_FreezePeriph\n
02295   * @param  Periphs This parameter can be a combination of the following values:
02296   *         @arg @ref LL_DBGMCU_APB4_GRP1_I2C4_STOP
02297   *         @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM2_STOP
02298   *         @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM3_STOP
02299   *         @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM4_STOP (*)
02300   *         @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM5_STOP (*)
02301   *         @arg @ref LL_DBGMCU_APB4_GRP1_RTC_STOP
02302   *         @arg @ref LL_DBGMCU_APB4_GRP1_IWDG1_STOP
02303   *
02304   *         (*) value not defined in all devices
02305   * @retval None
02306   */
02307 __STATIC_INLINE void LL_DBGMCU_APB4_GRP1_UnFreezePeriph(uint32_t Periphs)
02308 {
02309   CLEAR_BIT(DBGMCU->APB4FZ1, Periphs);
02310 }
02311 /**
02312   * @}
02313   */
02314 
02315 /** @defgroup SYSTEM_LL_EF_FLASH FLASH
02316   * @{
02317   */
02318 
02319 /**
02320   * @brief  Set FLASH Latency
02321   * @rmtoll FLASH_ACR    LATENCY       LL_FLASH_SetLatency
02322   * @param  Latency This parameter can be one of the following values:
02323   *         @arg @ref LL_FLASH_LATENCY_0
02324   *         @arg @ref LL_FLASH_LATENCY_1
02325   *         @arg @ref LL_FLASH_LATENCY_2
02326   *         @arg @ref LL_FLASH_LATENCY_3
02327   *         @arg @ref LL_FLASH_LATENCY_4
02328   *         @arg @ref LL_FLASH_LATENCY_5
02329   *         @arg @ref LL_FLASH_LATENCY_6
02330   *         @arg @ref LL_FLASH_LATENCY_7
02331   * @retval None
02332   */
02333 __STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency)
02334 {
02335   MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency);
02336 }
02337 
02338 /**
02339   * @brief  Get FLASH Latency
02340   * @rmtoll FLASH_ACR    LATENCY       LL_FLASH_GetLatency
02341   * @retval Returned value can be one of the following values:
02342   *         @arg @ref LL_FLASH_LATENCY_0
02343   *         @arg @ref LL_FLASH_LATENCY_1
02344   *         @arg @ref LL_FLASH_LATENCY_2
02345   *         @arg @ref LL_FLASH_LATENCY_3
02346   *         @arg @ref LL_FLASH_LATENCY_4
02347   *         @arg @ref LL_FLASH_LATENCY_5
02348   *         @arg @ref LL_FLASH_LATENCY_6
02349   *         @arg @ref LL_FLASH_LATENCY_7
02350   */
02351 __STATIC_INLINE uint32_t LL_FLASH_GetLatency(void)
02352 {
02353   return (uint32_t)(READ_BIT(FLASH->ACR, FLASH_ACR_LATENCY));
02354 }
02355 
02356 /**
02357   * @}
02358   */
02359 
02360 #if defined(DUAL_CORE)
02361 /** @defgroup SYSTEM_LL_EF_ART ART
02362   * @{
02363   */
02364 
02365 /**
02366   * @brief  Enable the Cortex-M4 ART cache.
02367   * @rmtoll ART_CTR    EN   LL_ART_Enable
02368   * @retval None
02369   */
02370 __STATIC_INLINE void LL_ART_Enable(void)
02371 {
02372  SET_BIT(ART->CTR, ART_CTR_EN);
02373 }
02374 
02375 /**
02376   * @brief  Disable the Cortex-M4 ART cache.
02377   * @rmtoll ART_CTR    EN   LL_ART_Disable
02378   * @retval None
02379   */
02380 __STATIC_INLINE void LL_ART_Disable(void)
02381 {
02382  CLEAR_BIT(ART->CTR, ART_CTR_EN);
02383 }
02384 
02385 /**
02386   * @brief  Check if the Cortex-M4 ART cache is enabled
02387   * @rmtoll ART_CTR   EN    LL_ART_IsEnabled
02388   * @retval State of bit (1 or 0).
02389   */
02390 __STATIC_INLINE uint32_t LL_ART_IsEnabled(void)
02391 {
02392   return ((READ_BIT(ART->CTR, ART_CTR_EN) == ART_CTR_EN) ? 1UL : 0UL);
02393 }
02394 
02395 /**
02396   * @brief  Set the Cortex-M4 ART cache Base Address.
02397   * @rmtoll ART_CTR    PCACHEADDR   LL_ART_SetBaseAddress
02398   * @param  BaseAddress Specifies the Base address of 1 Mbyte address page (cacheable page)
02399             from which the ART accelerator loads code to the cache.
02400   * @retval None
02401   */
02402 __STATIC_INLINE void LL_ART_SetBaseAddress(uint32_t BaseAddress)
02403 {
02404  MODIFY_REG(ART->CTR, ART_CTR_PCACHEADDR, (((BaseAddress) >> 12U) & 0x000FFF00UL));
02405 }
02406 
02407 /**
02408   * @brief  Get the Cortex-M4 ART cache Base Address.
02409   * @rmtoll ART_CTR    PCACHEADDR   LL_ART_GetBaseAddress
02410   * @retval the Base address of 1 Mbyte address page (cacheable page)
02411             from which the ART accelerator loads code to the cache
02412   */
02413 __STATIC_INLINE uint32_t LL_ART_GetBaseAddress(void)
02414 {
02415   return (uint32_t)(READ_BIT(ART->CTR, ART_CTR_PCACHEADDR) << 12U);
02416 }
02417 #endif /* DUAL_CORE */
02418 
02419 /**
02420   * @}
02421   */
02422 
02423 /**
02424   * @}
02425   */
02426 
02427 /**
02428   * @}
02429   */
02430 
02431 #endif /* defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) */
02432 
02433 /**
02434   * @}
02435   */
02436 
02437 #ifdef __cplusplus
02438 }
02439 #endif
02440 
02441 #endif /* __STM32H7xx_LL_SYSTEM_H */
02442