STM32H735xx HAL User Manual
stm32h7xx_hal_rcc_ex.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32h7xx_hal_rcc_ex.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of RCC HAL Extension module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2017 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file in
00013   * the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   ******************************************************************************
00016   */
00017 
00018 /* Define to prevent recursive inclusion -------------------------------------*/
00019 #ifndef STM32H7xx_HAL_RCC_EX_H
00020 #define STM32H7xx_HAL_RCC_EX_H
00021 
00022 #ifdef __cplusplus
00023  extern "C" {
00024 #endif
00025 
00026 /* Includes ------------------------------------------------------------------*/
00027 #include "stm32h7xx_hal_def.h"
00028 
00029 /** @addtogroup STM32H7xx_HAL_Driver
00030   * @{
00031   */
00032 
00033 /** @addtogroup RCCEx
00034   * @{
00035   */
00036 
00037 /* Exported types ------------------------------------------------------------*/
00038 /** @defgroup RCCEx_Exported_Types RCCEx Exported Types
00039   * @{
00040   */
00041 
00042 /**
00043   * @brief  PLL2 Clock structure definition
00044   */
00045 typedef struct
00046 {
00047 
00048   uint32_t PLL2M;       /*!< PLL2M: Division factor for PLL2 VCO input clock.
00049                              This parameter must be a number between Min_Data = 1 and Max_Data = 63    */
00050 
00051   uint32_t PLL2N;       /*!< PLL2N: Multiplication factor for PLL2 VCO output clock.
00052                              This parameter must be a number between Min_Data = 4 and Max_Data = 512
00053                              or between Min_Data = 8 and Max_Data = 420(*)
00054                              (*) : For stm32h7a3xx and stm32h7b3xx family lines.                       */   
00055 
00056   uint32_t PLL2P;       /*!< PLL2P: Division factor for system clock.
00057                              This parameter must be a number between Min_Data = 2 and Max_Data = 128
00058                              odd division factors are not allowed                                      */
00059 
00060   uint32_t PLL2Q;        /*!< PLL2Q: Division factor for peripheral clocks.
00061                              This parameter must be a number between Min_Data = 1 and Max_Data = 128   */
00062 
00063   uint32_t PLL2R;        /*!< PLL2R: Division factor for peripheral clocks.
00064                              This parameter must be a number between Min_Data = 1 and Max_Data = 128   */
00065   uint32_t PLL2RGE;      /*!<PLL2RGE: PLL2 clock Input range
00066                           This parameter must be a value of @ref RCC_PLL2_VCI_Range                    */
00067   uint32_t PLL2VCOSEL;   /*!<PLL2VCOSEL: PLL2 clock Output range
00068                           This parameter must be a value of @ref RCC_PLL2_VCO_Range                    */
00069 
00070   uint32_t PLL2FRACN;    /*!<PLL2FRACN: Specifies Fractional Part Of The Multiplication Factor for
00071                             PLL2 VCO It should be a value between 0 and 8191                           */
00072 }RCC_PLL2InitTypeDef;
00073 
00074 /**
00075   * @brief  PLL3 Clock structure definition
00076   */
00077 typedef struct
00078 {
00079 
00080   uint32_t PLL3M;       /*!< PLL3M: Division factor for PLL3 VCO input clock.
00081                              This parameter must be a number between Min_Data = 1 and Max_Data = 63    */
00082 
00083   uint32_t PLL3N;       /*!< PLL3N: Multiplication factor for PLL3 VCO output clock.
00084                              This parameter must be a number between Min_Data = 4 and Max_Data = 512
00085                              or between Min_Data = 8 and Max_Data = 420(*)
00086                              (*) : For stm32h7a3xx and stm32h7b3xx family lines.                       */  
00087 
00088   uint32_t PLL3P;       /*!< PLL3P: Division factor for system clock.
00089                              This parameter must be a number between Min_Data = 2 and Max_Data = 128
00090                              odd division factors are not allowed                                      */
00091 
00092   uint32_t PLL3Q;        /*!< PLL3Q: Division factor for peripheral clocks.
00093                              This parameter must be a number between Min_Data = 1 and Max_Data = 128   */
00094 
00095   uint32_t PLL3R;        /*!< PLL3R: Division factor for peripheral clocks.
00096                              This parameter must be a number between Min_Data = 1 and Max_Data = 128   */
00097   uint32_t PLL3RGE;      /*!<PLL3RGE: PLL3 clock Input range
00098                           This parameter must be a value of @ref RCC_PLL3_VCI_Range                    */
00099   uint32_t PLL3VCOSEL;   /*!<PLL3VCOSEL: PLL3 clock Output range
00100                           This parameter must be a value of @ref RCC_PLL3_VCO_Range                    */
00101 
00102   uint32_t PLL3FRACN;    /*!<PLL3FRACN: Specifies Fractional Part Of The Multiplication Factor for
00103                             PLL3 VCO It should be a value between 0 and 8191                           */
00104 }RCC_PLL3InitTypeDef;
00105 
00106 /**
00107   * @brief  RCC PLL1 Clocks structure definition
00108   */
00109 typedef struct
00110 {
00111   uint32_t PLL1_P_Frequency;
00112   uint32_t PLL1_Q_Frequency;
00113   uint32_t PLL1_R_Frequency;
00114 }PLL1_ClocksTypeDef;
00115 
00116 /**
00117   * @brief  RCC PLL2 Clocks structure definition
00118   */
00119 typedef struct
00120 {
00121   uint32_t PLL2_P_Frequency;
00122   uint32_t PLL2_Q_Frequency;
00123   uint32_t PLL2_R_Frequency;
00124 }PLL2_ClocksTypeDef;
00125 
00126 /**
00127   * @brief  RCC PLL3 Clocks structure definition
00128   */
00129 typedef struct
00130 {
00131   uint32_t PLL3_P_Frequency;
00132   uint32_t PLL3_Q_Frequency;
00133   uint32_t PLL3_R_Frequency;
00134 }PLL3_ClocksTypeDef;
00135 
00136 
00137 /**
00138   * @brief  RCC extended clocks structure definition
00139   */
00140 typedef struct
00141 {
00142   uint32_t PeriphClockSelection;   /*!< The Extended Clock to be configured.
00143                                         This parameter can be a value of @ref RCCEx_Periph_Clock_Selection */
00144 
00145   RCC_PLL2InitTypeDef PLL2;        /*!< PLL2structure parameters.
00146                                         This parameter will be used only when PLL2 is selected as kernel clock Source for some peripherals */
00147 
00148   RCC_PLL3InitTypeDef PLL3;        /*!< PLL3 structure parameters.
00149                                         This parameter will be used only when PLL2 is selected as kernel clock Source for some peripherals */
00150 
00151   uint32_t FmcClockSelection;     /*!< Specifies FMC clock source
00152                                         This parameter can be a value of @ref RCCEx_FMC_Clock_Source     */
00153 
00154 #if defined(QUADSPI)
00155   uint32_t QspiClockSelection;    /*!< Specifies QSPI clock source
00156                                         This parameter can be a value of @ref RCCEx_QSPI_Clock_Source    */
00157 #endif /* QUADSPI */
00158 
00159 #if defined(OCTOSPI1) || defined(OCTOSPI2)
00160   uint32_t OspiClockSelection;    /*!< Specifies OSPI clock source
00161                                         This parameter can be a value of @ref RCCEx_OSPI_Clock_Source    */
00162 #endif /*(OCTOSPI1) || (OCTOSPI2)*/
00163 
00164 
00165 #if defined(DSI)
00166   uint32_t DsiClockSelection;     /*!< Specifies DSI clock source
00167                                      This parameter can be a value of @ref RCCEx_DSI_Clock_Source        */
00168 #endif /* DSI */
00169 
00170   uint32_t SdmmcClockSelection;    /*!< Specifies SDMMC clock source
00171                                         This parameter can be a value of @ref RCCEx_SDMMC_Clock_Source   */
00172 
00173   uint32_t CkperClockSelection;   /*!< Specifies CKPER clock source
00174                                         This parameter can be a value of @ref RCCEx_CLKP_Clock_Source   */
00175 
00176   uint32_t Sai1ClockSelection;     /*!< Specifies SAI1 clock source
00177                                         This parameter can be a value of @ref RCCEx_SAI1_Clock_Source    */
00178 
00179 #if defined(SAI3)
00180   uint32_t Sai23ClockSelection;     /*!< Specifies SAI2/3 clock source
00181                                          This parameter can be a value of @ref RCCEx_SAI23_Clock_Source  */
00182 #endif /* SAI3 */
00183 
00184 #if defined(RCC_CDCCIP1R_SAI2ASEL)
00185   uint32_t Sai2AClockSelection;     /*!< Specifies SAI2A clock source
00186                                         This parameter can be a value of @ref RCCEx_SAI2A_Clock_Source  */
00187 #endif /* RCC_CDCCIP1R_SAI2ASEL */
00188 
00189 #if defined(RCC_CDCCIP1R_SAI2BSEL)
00190   uint32_t Sai2BClockSelection;     /*!< Specifies SAI2B clock source
00191                                          This parameter can be a value of @ref RCCEx_SAI2B_Clock_Source    */
00192 #endif /* RCC_CDCCIP1R_SAI2BSEL */
00193 
00194   uint32_t Spi123ClockSelection;     /*!< Specifies SPI1/2/3 clock source
00195                                           This parameter can be a value of @ref RCCEx_SPI123_Clock_Source    */
00196 
00197   uint32_t Spi45ClockSelection;     /*!< Specifies SPI4/5 clock source
00198                                          This parameter can be a value of @ref RCCEx_SPI45_Clock_Source    */
00199 
00200   uint32_t SpdifrxClockSelection;   /*!< Specifies SPDIFRX Clock clock source
00201                                         This parameter can be a value of @ref RCCEx_SPDIFRX_Clock_Source */
00202 
00203   uint32_t Dfsdm1ClockSelection;    /*!< Specifies DFSDM1 Clock clock source
00204                                         This parameter can be a value of @ref RCCEx_DFSDM1_Clock_Source  */
00205 
00206 #if defined(DFSDM2_BASE)
00207   uint32_t Dfsdm2ClockSelection;    /*!< Specifies DFSDM2 Clock clock source
00208                                         This parameter can be a value of @ref RCCEx_DFSDM2_Clock_Source  */
00209 #endif /* DFSDM2_BASE */
00210 
00211 #if defined(FDCAN1) || defined(FDCAN2)
00212   uint32_t FdcanClockSelection;   /*!< Specifies FDCAN Clock clock source
00213                                         This parameter can be a value of @ref RCCEx_FDCAN_Clock_Source   */
00214 #endif /*FDCAN1 || FDCAN2*/
00215 
00216   uint32_t Swpmi1ClockSelection;   /*!< Specifies SWPMI1 Clock clock source
00217                                         This parameter can be a value of @ref RCCEx_SWPMI1_Clock_Source  */
00218 
00219   uint32_t Usart234578ClockSelection;   /*!< Specifies USART2/3/4/5/7/8 clock source
00220                                              This parameter can be a value of @ref RCCEx_USART234578_Clock_Source  */
00221 
00222   uint32_t Usart16ClockSelection;  /*!< Specifies USART1/6 clock source
00223                                         This parameter can be a value of @ref RCCEx_USART16_Clock_Source  */
00224 
00225    uint32_t RngClockSelection;      /*!< Specifies RNG clock source
00226                                         This parameter can be a value of @ref RCCEx_RNG_Clock_Source     */
00227 
00228 #if defined(I2C5)
00229    uint32_t I2c1235ClockSelection;  /*!< Specifies I2C1/2/3/5 clock source
00230                                         This parameter can be a value of @ref RCCEx_I2C1235_Clock_Source    */
00231 #else 
00232    uint32_t I2c123ClockSelection;   /*!< Specifies I2C1/2/3 clock source
00233                                         This parameter can be a value of @ref RCCEx_I2C1235_Clock_Source    */
00234 #endif /*I2C5*/
00235 
00236   uint32_t UsbClockSelection;      /*!< Specifies USB clock source
00237                                         This parameter can be a value of @ref RCCEx_USB_Clock_Source     */
00238 
00239   uint32_t CecClockSelection;     /*!< Specifies CEC clock source
00240                                         This parameter can be a value of @ref RCCEx_CEC_Clock_Source     */
00241 
00242   uint32_t Lptim1ClockSelection;   /*!< Specifies LPTIM1 clock source
00243                                         This parameter can be a value of @ref RCCEx_LPTIM1_Clock_Source  */
00244 
00245   uint32_t Lpuart1ClockSelection;  /*!< Specifies LPUART1 clock source
00246                                         This parameter can be a value of @ref RCCEx_LPUART1_Clock_Source */
00247 
00248   uint32_t I2c4ClockSelection;     /*!< Specifies I2C4 clock source
00249                                         This parameter can be a value of @ref RCCEx_I2C4_Clock_Source    */
00250 
00251   uint32_t Lptim2ClockSelection;   /*!< Specifies LPTIM2 clock source
00252                                         This parameter can be a value of @ref RCCEx_LPTIM2_Clock_Source  */
00253 
00254   uint32_t Lptim345ClockSelection;   /*!< Specifies LPTIM3/4/5 clock source
00255                                           This parameter can be a value of @ref RCCEx_LPTIM345_Clock_Source  */
00256 
00257   uint32_t AdcClockSelection;      /*!< Specifies ADC interface clock source
00258                                         This parameter can be a value of @ref RCCEx_ADC_Clock_Source     */
00259 #if defined(SAI4)
00260   uint32_t Sai4AClockSelection;     /*!< Specifies SAI4A clock source
00261                                         This parameter can be a value of @ref RCCEx_SAI4A_Clock_Source   */
00262 
00263   uint32_t Sai4BClockSelection;     /*!< Specifies SAI4B clock source
00264                                         This parameter can be a value of @ref RCCEx_SAI4B_Clock_Source   */
00265 #endif /* SAI4 */
00266 
00267   uint32_t Spi6ClockSelection;     /*!< Specifies SPI6 clock source
00268                                         This parameter can be a value of @ref RCCEx_SPI6_Clock_Source    */
00269 
00270   uint32_t RTCClockSelection;      /*!< Specifies RTC Clock clock source
00271                                         This parameter can be a value of @ref RCC_RTC_Clock_Source       */
00272 
00273 #if defined(HRTIM1)
00274   uint32_t Hrtim1ClockSelection;      /*!< Specifies HRTIM1 Clock clock source
00275                                         This parameter can be a value of @ref RCCEx_HRTIM1_Clock_Source   */
00276 #endif /* HRTIM1 */
00277 
00278   uint32_t TIMPresSelection;       /*!< Specifies TIM Clock Prescalers Selection.
00279                                        This parameter can be a value of @ref RCCEx_TIM_Prescaler_Selection */
00280 }RCC_PeriphCLKInitTypeDef;
00281 
00282 /*!< Alias for Inter STM32H7 lines compatibility regarding RCC_PeriphCLKInitTypeDef field : I2C5 available on some lines only  */
00283 #if defined(I2C5)
00284 #define I2c123ClockSelection I2c1235ClockSelection
00285 #else
00286 #define I2c1235ClockSelection I2c123ClockSelection
00287 #endif /*I2C5*/
00288 
00289 
00290 /**
00291   * @brief RCC_CRS Init structure definition
00292   */
00293 typedef struct
00294 {
00295   uint32_t Prescaler;             /*!< Specifies the division factor of the SYNC signal.
00296                                      This parameter can be a value of @ref RCCEx_CRS_SynchroDivider  */
00297 
00298   uint32_t Source;                /*!< Specifies the SYNC signal source.
00299                                      This parameter can be a value of @ref RCCEx_CRS_SynchroSource   */
00300 
00301   uint32_t Polarity;              /*!< Specifies the input polarity for the SYNC signal source.
00302                                      This parameter can be a value of @ref RCCEx_CRS_SynchroPolarity */
00303 
00304   uint32_t ReloadValue;           /*!< Specifies the value to be loaded in the frequency error counter with each SYNC event.
00305                                       It can be calculated in using macro __HAL_RCC_CRS_RELOADVALUE_CALCULATE(__FTARGET__, __FSYNC__)
00306                                      This parameter must be a number between 0 and 0xFFFF or a value of @ref RCCEx_CRS_ReloadValueDefault .*/
00307 
00308   uint32_t ErrorLimitValue;       /*!< Specifies the value to be used to evaluate the captured frequency error value.
00309                                      This parameter must be a number between 0 and 0xFF or a value of @ref RCCEx_CRS_ErrorLimitDefault */
00310 
00311   uint32_t HSI48CalibrationValue; /*!< Specifies a user-programmable trimming value to the HSI48 oscillator.
00312                                      This parameter must be a number between 0 and 0x3F or a value of @ref RCCEx_CRS_HSI48CalibrationDefault */
00313 
00314 }RCC_CRSInitTypeDef;
00315 
00316 /**
00317   * @brief RCC_CRS Synchronization structure definition
00318   */
00319 typedef struct
00320 {
00321   uint32_t ReloadValue;           /*!< Specifies the value loaded in the Counter reload value.
00322                                      This parameter must be a number between 0 and 0xFFFF */
00323 
00324   uint32_t HSI48CalibrationValue; /*!< Specifies value loaded in HSI48 oscillator smooth trimming.
00325                                      This parameter must be a number between 0 and 0x3F */
00326 
00327   uint32_t FreqErrorCapture;      /*!< Specifies the value loaded in the .FECAP, the frequency error counter
00328                                                                     value latched in the time of the last SYNC event.
00329                                     This parameter must be a number between 0 and 0xFFFF */
00330 
00331   uint32_t FreqErrorDirection;    /*!< Specifies the value loaded in the .FEDIR, the counting direction of the
00332                                                                     frequency error counter latched in the time of the last SYNC event.
00333                                                                     It shows whether the actual frequency is below or above the target.
00334                                     This parameter must be a value of @ref RCCEx_CRS_FreqErrorDirection*/
00335 
00336 }RCC_CRSSynchroInfoTypeDef;
00337 
00338 /**
00339   * @}
00340   */
00341 
00342 
00343 /* Exported constants --------------------------------------------------------*/
00344 /** @defgroup RCCEx_Exported_Constants  RCCEx Exported Constants
00345   * @{
00346   */
00347 
00348 /** @defgroup RCCEx_Periph_Clock_Selection  RCCEx Periph Clock Selection
00349   * @{
00350   */
00351 
00352 #if defined(UART9) && defined(USART10)
00353 #define RCC_PERIPHCLK_USART16910       (0x00000001U)
00354 #define RCC_PERIPHCLK_USART1           RCC_PERIPHCLK_USART16910
00355 #define RCC_PERIPHCLK_USART6           RCC_PERIPHCLK_USART16910
00356 #define RCC_PERIPHCLK_UART9            RCC_PERIPHCLK_USART16910
00357 #define RCC_PERIPHCLK_USART10          RCC_PERIPHCLK_USART16910
00358 /*alias*/
00359 #define RCC_PERIPHCLK_USART16          RCC_PERIPHCLK_USART16910
00360 #else
00361 #define RCC_PERIPHCLK_USART16          (0x00000001U)
00362 #define RCC_PERIPHCLK_USART1           RCC_PERIPHCLK_USART16
00363 #define RCC_PERIPHCLK_USART6           RCC_PERIPHCLK_USART16
00364 /* alias */
00365 #define RCC_PERIPHCLK_USART16910       RCC_PERIPHCLK_USART16
00366 #endif /* UART9 && USART10*/
00367 #define RCC_PERIPHCLK_USART234578      (0x00000002U)
00368 #define RCC_PERIPHCLK_USART2           RCC_PERIPHCLK_USART234578
00369 #define RCC_PERIPHCLK_USART3           RCC_PERIPHCLK_USART234578
00370 #define RCC_PERIPHCLK_UART4            RCC_PERIPHCLK_USART234578
00371 #define RCC_PERIPHCLK_UART5            RCC_PERIPHCLK_USART234578
00372 #define RCC_PERIPHCLK_UART7            RCC_PERIPHCLK_USART234578
00373 #define RCC_PERIPHCLK_UART8            RCC_PERIPHCLK_USART234578
00374 #define RCC_PERIPHCLK_LPUART1          (0x00000004U)
00375 #if defined(I2C5)
00376 #define RCC_PERIPHCLK_I2C1235          (0x00000008U)
00377 #define RCC_PERIPHCLK_I2C1             RCC_PERIPHCLK_I2C1235
00378 #define RCC_PERIPHCLK_I2C2             RCC_PERIPHCLK_I2C1235
00379 #define RCC_PERIPHCLK_I2C3             RCC_PERIPHCLK_I2C1235
00380 /* alias */
00381 #define RCC_PERIPHCLK_I2C123           RCC_PERIPHCLK_I2C1235
00382 #else
00383 #define RCC_PERIPHCLK_I2C123           (0x00000008U)
00384 #define RCC_PERIPHCLK_I2C1             RCC_PERIPHCLK_I2C123
00385 #define RCC_PERIPHCLK_I2C2             RCC_PERIPHCLK_I2C123
00386 #define RCC_PERIPHCLK_I2C3             RCC_PERIPHCLK_I2C123
00387 #endif /*I2C5*/
00388 #define RCC_PERIPHCLK_I2C4             (0x00000010U)
00389 #if defined(I2C5)
00390 #define RCC_PERIPHCLK_I2C5             RCC_PERIPHCLK_I2C1235
00391 #endif /*I2C5*/
00392 #define RCC_PERIPHCLK_LPTIM1           (0x00000020U)
00393 #define RCC_PERIPHCLK_LPTIM2           (0x00000040U)
00394 #define RCC_PERIPHCLK_LPTIM345         (0x00000080U)
00395 #define RCC_PERIPHCLK_LPTIM3           RCC_PERIPHCLK_LPTIM345
00396 #if defined(LPTIM4)
00397 #define RCC_PERIPHCLK_LPTIM4           RCC_PERIPHCLK_LPTIM345
00398 #endif /*LPTIM4*/
00399 #if defined(LPTIM5)
00400 #define RCC_PERIPHCLK_LPTIM5           RCC_PERIPHCLK_LPTIM345
00401 #endif /*LPTIM5*/
00402 #define RCC_PERIPHCLK_SAI1             (0x00000100U)
00403 #if defined(SAI3)
00404 #define RCC_PERIPHCLK_SAI23            (0x00000200U)
00405 #define RCC_PERIPHCLK_SAI2             RCC_PERIPHCLK_SAI23
00406 #define RCC_PERIPHCLK_SAI3             RCC_PERIPHCLK_SAI23
00407 #endif /* SAI3 */
00408 #if defined(RCC_CDCCIP1R_SAI2ASEL_0)
00409 #define RCC_PERIPHCLK_SAI2A            (0x00000200U)
00410 #endif /* RCC_CDCCIP1R_SAI2ASEL_0 */
00411 #if defined(RCC_CDCCIP1R_SAI2BSEL_0)
00412 #define RCC_PERIPHCLK_SAI2B            (0x00000400U)
00413 #endif /* RCC_CDCCIP1R_SAI2BSEL_0 */
00414 #if defined(SAI4)
00415 #define RCC_PERIPHCLK_SAI4A            (0x00000400U)
00416 #define RCC_PERIPHCLK_SAI4B            (0x00000800U)
00417 #endif /* SAI4 */
00418 #define RCC_PERIPHCLK_SPI123           (0x00001000U)
00419 #define RCC_PERIPHCLK_SPI1             RCC_PERIPHCLK_SPI123
00420 #define RCC_PERIPHCLK_SPI2             RCC_PERIPHCLK_SPI123
00421 #define RCC_PERIPHCLK_SPI3             RCC_PERIPHCLK_SPI123
00422 #define RCC_PERIPHCLK_SPI45            (0x00002000U)
00423 #define RCC_PERIPHCLK_SPI4             RCC_PERIPHCLK_SPI45
00424 #define RCC_PERIPHCLK_SPI5             RCC_PERIPHCLK_SPI45
00425 #define RCC_PERIPHCLK_SPI6             (0x00004000U)
00426 #define RCC_PERIPHCLK_FDCAN            (0x00008000U)
00427 #define RCC_PERIPHCLK_SDMMC            (0x00010000U)
00428 #define RCC_PERIPHCLK_RNG              (0x00020000U)
00429 #define RCC_PERIPHCLK_USB              (0x00040000U)
00430 #define RCC_PERIPHCLK_ADC              (0x00080000U)
00431 #define RCC_PERIPHCLK_SWPMI1           (0x00100000U)
00432 #define RCC_PERIPHCLK_DFSDM1           (0x00200000U)
00433 #if defined(DFSDM2_BASE)
00434 #define RCC_PERIPHCLK_DFSDM2           (0x00000800U)
00435 #endif /* DFSDM2 */
00436 #define RCC_PERIPHCLK_RTC              (0x00400000U)
00437 #define RCC_PERIPHCLK_CEC              (0x00800000U)
00438 #define RCC_PERIPHCLK_FMC              (0x01000000U)
00439 #if defined(QUADSPI)
00440 #define RCC_PERIPHCLK_QSPI             (0x02000000U)
00441 #endif /* QUADSPI */
00442 #if defined(OCTOSPI1) || defined(OCTOSPI2)
00443 #define RCC_PERIPHCLK_OSPI             (0x02000000U)
00444 #endif /* defined(OCTOSPI1) || defined(OCTOSPI2) */
00445 #define RCC_PERIPHCLK_DSI              (0x04000000U)
00446 #define RCC_PERIPHCLK_SPDIFRX          (0x08000000U)
00447 #if defined(HRTIM1)
00448 #define RCC_PERIPHCLK_HRTIM1           (0x10000000U)
00449 #endif /* HRTIM1 */
00450 #if defined(LTDC)
00451 #define RCC_PERIPHCLK_LTDC             (0x20000000U)
00452 #endif /* LTDC */
00453 #define RCC_PERIPHCLK_TIM              (0x40000000U)
00454 #define RCC_PERIPHCLK_CKPER            (0x80000000U)
00455 
00456 /**
00457   * @}
00458   */
00459 
00460 
00461 /** @defgroup RCC_PLL2_Clock_Output  RCC PLL2 Clock Output
00462   * @{
00463   */
00464 #define RCC_PLL2_DIVP                RCC_PLLCFGR_DIVP2EN
00465 #define RCC_PLL2_DIVQ                RCC_PLLCFGR_DIVQ2EN
00466 #define RCC_PLL2_DIVR                RCC_PLLCFGR_DIVR2EN
00467 
00468 /**
00469   * @}
00470   */
00471 
00472 /** @defgroup RCC_PLL3_Clock_Output  RCC PLL3 Clock Output
00473   * @{
00474   */
00475 #define RCC_PLL3_DIVP                RCC_PLLCFGR_DIVP3EN
00476 #define RCC_PLL3_DIVQ                RCC_PLLCFGR_DIVQ3EN
00477 #define RCC_PLL3_DIVR                RCC_PLLCFGR_DIVR3EN
00478 
00479 /**
00480   * @}
00481   */
00482 
00483 /** @defgroup RCC_PLL2_VCI_Range  RCC PLL2 VCI Range
00484   * @{
00485   */
00486 #define RCC_PLL2VCIRANGE_0                RCC_PLLCFGR_PLL2RGE_0        /*!< Clock range frequency between 1 and 2 MHz  */
00487 #define RCC_PLL2VCIRANGE_1                RCC_PLLCFGR_PLL2RGE_1        /*!< Clock range frequency between 2 and 4 MHz  */
00488 #define RCC_PLL2VCIRANGE_2                RCC_PLLCFGR_PLL2RGE_2        /*!< Clock range frequency between 4 and 8 MHz  */
00489 #define RCC_PLL2VCIRANGE_3                RCC_PLLCFGR_PLL2RGE_3        /*!< Clock range frequency between 8 and 16 MHz */
00490 
00491 /**
00492   * @}
00493   */
00494 
00495 
00496 /** @defgroup RCC_PLL2_VCO_Range  RCC PLL2 VCO Range
00497   * @{
00498   */
00499 #define RCC_PLL2VCOWIDE                 (0x00000000U)
00500 #define RCC_PLL2VCOMEDIUM               RCC_PLLCFGR_PLL2VCOSEL
00501 
00502 /**
00503   * @}
00504   */
00505 
00506 /** @defgroup RCC_PLL3_VCI_Range  RCC PLL3 VCI Range
00507   * @{
00508   */
00509 #define RCC_PLL3VCIRANGE_0                RCC_PLLCFGR_PLL3RGE_0         /*!< Clock range frequency between 1 and 2 MHz  */
00510 #define RCC_PLL3VCIRANGE_1                RCC_PLLCFGR_PLL3RGE_1         /*!< Clock range frequency between 2 and 4 MHz  */
00511 #define RCC_PLL3VCIRANGE_2                RCC_PLLCFGR_PLL3RGE_2         /*!< Clock range frequency between 4 and 8 MHz  */
00512 #define RCC_PLL3VCIRANGE_3                RCC_PLLCFGR_PLL3RGE_3         /*!< Clock range frequency between 8 and 16 MHz */
00513 
00514 /**
00515   * @}
00516   */
00517 
00518 
00519 /** @defgroup RCC_PLL3_VCO_Range  RCC PLL3 VCO Range
00520   * @{
00521   */
00522 #define RCC_PLL3VCOWIDE                 (0x00000000U)
00523 #define RCC_PLL3VCOMEDIUM               RCC_PLLCFGR_PLL3VCOSEL
00524 
00525 /**
00526   * @}
00527   */
00528 
00529 /** @defgroup RCCEx_USART16_Clock_Source  RCCEx USART1/6 Clock Source
00530   * @{
00531   */
00532 #if defined(RCC_D2CCIP2R_USART16SEL)
00533 #define RCC_USART16CLKSOURCE_D2PCLK2    (0x00000000U)
00534 /* alias */
00535 #define RCC_USART16CLKSOURCE_PCLK2        RCC_USART16CLKSOURCE_D2PCLK2
00536 #define RCC_USART16CLKSOURCE_PLL2         RCC_D2CCIP2R_USART16SEL_0
00537 #define RCC_USART16CLKSOURCE_PLL3         RCC_D2CCIP2R_USART16SEL_1
00538 #define RCC_USART16CLKSOURCE_HSI         (RCC_D2CCIP2R_USART16SEL_0 | RCC_D2CCIP2R_USART16SEL_1)
00539 #define RCC_USART16CLKSOURCE_CSI          RCC_D2CCIP2R_USART16SEL_2
00540 #define RCC_USART16CLKSOURCE_LSE         (RCC_D2CCIP2R_USART16SEL_0 | RCC_D2CCIP2R_USART16SEL_2)
00541 
00542 #elif defined(RCC_CDCCIP2R_USART16910SEL)
00543 #define RCC_USART16910CLKSOURCE_CDPCLK2   (0x00000000U)
00544 /* alias */
00545 #define RCC_USART16910CLKSOURCE_D2PCLK2   RCC_USART16910CLKSOURCE_CDPCLK2
00546 #define RCC_USART16910CLKSOURCE_PLL2      RCC_CDCCIP2R_USART16910SEL_0
00547 #define RCC_USART16910CLKSOURCE_PLL3      RCC_CDCCIP2R_USART16910SEL_1
00548 #define RCC_USART16910CLKSOURCE_HSI      (RCC_CDCCIP2R_USART16910SEL_0 | RCC_CDCCIP2R_USART16910SEL_1)
00549 #define RCC_USART16910CLKSOURCE_CSI       RCC_CDCCIP2R_USART16910SEL_2
00550 #define RCC_USART16910CLKSOURCE_LSE      (RCC_CDCCIP2R_USART16910SEL_0 | RCC_CDCCIP2R_USART16910SEL_2)
00551 
00552 /*  Aliases */
00553 #define RCC_USART16CLKSOURCE_CDPCLK2     RCC_USART16910CLKSOURCE_CDPCLK2
00554 #define RCC_USART16CLKSOURCE_PCLK2       RCC_USART16CLKSOURCE_CDPCLK2
00555 #define RCC_USART16CLKSOURCE_D2PCLK2     RCC_USART16CLKSOURCE_CDPCLK2
00556 #define RCC_USART16CLKSOURCE_PLL2        RCC_USART16910CLKSOURCE_PLL2
00557 #define RCC_USART16CLKSOURCE_PLL3        RCC_USART16910CLKSOURCE_PLL3
00558 #define RCC_USART16CLKSOURCE_HSI         RCC_USART16910CLKSOURCE_HSI
00559 #define RCC_USART16CLKSOURCE_CSI         RCC_USART16910CLKSOURCE_CSI
00560 #define RCC_USART16CLKSOURCE_LSE         RCC_USART16910CLKSOURCE_LSE
00561 
00562 #else  /* RCC_D2CCIP2R_USART16910SEL */
00563 #define RCC_USART16910CLKSOURCE_D2PCLK2   (0x00000000U)
00564 #define RCC_USART16910CLKSOURCE_PLL2      RCC_D2CCIP2R_USART16910SEL_0
00565 #define RCC_USART16910CLKSOURCE_PLL3      RCC_D2CCIP2R_USART16910SEL_1
00566 #define RCC_USART16910CLKSOURCE_HSI      (RCC_D2CCIP2R_USART16910SEL_0 | RCC_D2CCIP2R_USART16910SEL_1)
00567 #define RCC_USART16910CLKSOURCE_CSI       RCC_D2CCIP2R_USART16910SEL_2
00568 #define RCC_USART16910CLKSOURCE_LSE      (RCC_D2CCIP2R_USART16910SEL_0 | RCC_D2CCIP2R_USART16910SEL_2)
00569 
00570 /*  Aliases */
00571 #define RCC_USART16CLKSOURCE_D2PCLK2     RCC_USART16910CLKSOURCE_D2PCLK2
00572 #define RCC_USART16CLKSOURCE_PCLK2       RCC_USART16910CLKSOURCE_D2PCLK2
00573 #define RCC_USART16CLKSOURCE_PLL2        RCC_USART16910CLKSOURCE_PLL2
00574 #define RCC_USART16CLKSOURCE_PLL3        RCC_USART16910CLKSOURCE_PLL3
00575 #define RCC_USART16CLKSOURCE_HSI         RCC_USART16910CLKSOURCE_HSI
00576 #define RCC_USART16CLKSOURCE_CSI         RCC_USART16910CLKSOURCE_CSI
00577 #define RCC_USART16CLKSOURCE_LSE         RCC_USART16910CLKSOURCE_LSE
00578 #endif /* RCC_D2CCIP2R_USART16SEL */
00579 /**
00580   * @}
00581   */
00582 
00583 /** @defgroup RCCEx_USART1_Clock_Source  RCCEx USART1 Clock Source
00584   * @{
00585   */
00586 #define RCC_USART1CLKSOURCE_D2PCLK2   RCC_USART16CLKSOURCE_D2PCLK2
00587 #define RCC_USART1CLKSOURCE_PLL2      RCC_USART16CLKSOURCE_PLL2
00588 #define RCC_USART1CLKSOURCE_PLL3      RCC_USART16CLKSOURCE_PLL3
00589 #define RCC_USART1CLKSOURCE_HSI       RCC_USART16CLKSOURCE_HSI
00590 #define RCC_USART1CLKSOURCE_CSI       RCC_USART16CLKSOURCE_CSI
00591 #define RCC_USART1CLKSOURCE_LSE       RCC_USART16CLKSOURCE_LSE
00592 /**
00593   * @}
00594   */
00595 
00596 /** @defgroup RCCEx_USART6_Clock_Source  RCCEx USART6 Clock Source
00597   * @{
00598   */
00599 #define RCC_USART6CLKSOURCE_D2PCLK2   RCC_USART16CLKSOURCE_D2PCLK2
00600 #define RCC_USART6CLKSOURCE_PLL2      RCC_USART16CLKSOURCE_PLL2
00601 #define RCC_USART6CLKSOURCE_PLL3      RCC_USART16CLKSOURCE_PLL3
00602 #define RCC_USART6CLKSOURCE_HSI       RCC_USART16CLKSOURCE_HSI
00603 #define RCC_USART6CLKSOURCE_CSI       RCC_USART16CLKSOURCE_CSI
00604 #define RCC_USART6CLKSOURCE_LSE       RCC_USART16CLKSOURCE_LSE
00605 
00606 /**
00607   * @}
00608   */
00609 
00610 #if defined(UART9)
00611 /** @defgroup RCCEx_UART9_Clock_Source  RCCEx UART9 Clock Source
00612   * @{
00613   */
00614 #define RCC_UART9CLKSOURCE_D2PCLK2   RCC_USART16CLKSOURCE_D2PCLK2
00615 #define RCC_UART9CLKSOURCE_PLL2      RCC_USART16CLKSOURCE_PLL2
00616 #define RCC_UART9CLKSOURCE_PLL3      RCC_USART16CLKSOURCE_PLL3
00617 #define RCC_UART9CLKSOURCE_HSI       RCC_USART16CLKSOURCE_HSI
00618 #define RCC_UART9CLKSOURCE_CSI       RCC_USART16CLKSOURCE_CSI
00619 #define RCC_UART9CLKSOURCE_LSE       RCC_USART16CLKSOURCE_LSE
00620 /**
00621   * @}
00622   */
00623 #endif /* UART9 */
00624 
00625 #if defined(USART10)
00626 /** @defgroup RCCEx_USART10_Clock_Source  RCCEx USART10 Clock Source
00627   * @{
00628   */
00629 #define RCC_USART10CLKSOURCE_D2PCLK2   RCC_USART16CLKSOURCE_D2PCLK2
00630 #define RCC_USART10CLKSOURCE_PLL2      RCC_USART16CLKSOURCE_PLL2
00631 #define RCC_USART10CLKSOURCE_PLL3      RCC_USART16CLKSOURCE_PLL3
00632 #define RCC_USART10CLKSOURCE_HSI       RCC_USART16CLKSOURCE_HSI
00633 #define RCC_USART10CLKSOURCE_CSI       RCC_USART16CLKSOURCE_CSI
00634 #define RCC_USART10CLKSOURCE_LSE       RCC_USART16CLKSOURCE_LSE
00635 /**
00636   * @}
00637   */
00638 #endif /* USART10 */
00639 
00640 /** @defgroup RCCEx_USART234578_Clock_Source  RCCEx USART2/3/4/5/7/8 Clock Source
00641   * @{
00642   */
00643 #if defined(RCC_D2CCIP2R_USART28SEL)
00644 #define RCC_USART234578CLKSOURCE_D2PCLK1    (0x00000000U)
00645 /* alias */
00646 #define RCC_USART234578CLKSOURCE_PCLK1      RCC_USART234578CLKSOURCE_D2PCLK1
00647 #define RCC_USART234578CLKSOURCE_PLL2       RCC_D2CCIP2R_USART28SEL_0
00648 #define RCC_USART234578CLKSOURCE_PLL3       RCC_D2CCIP2R_USART28SEL_1
00649 #define RCC_USART234578CLKSOURCE_HSI        (RCC_D2CCIP2R_USART28SEL_0 | RCC_D2CCIP2R_USART28SEL_1)
00650 #define RCC_USART234578CLKSOURCE_CSI        RCC_D2CCIP2R_USART28SEL_2
00651 #define RCC_USART234578CLKSOURCE_LSE        (RCC_D2CCIP2R_USART28SEL_0 | RCC_D2CCIP2R_USART28SEL_2)
00652 #else
00653 #define RCC_USART234578CLKSOURCE_CDPCLK1   (0x00000000U)
00654 /* alias */
00655 #define RCC_USART234578CLKSOURCE_PCLK1     RCC_USART234578CLKSOURCE_CDPCLK1
00656 #define RCC_USART234578CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_CDPCLK1
00657 #define RCC_USART234578CLKSOURCE_PLL2      RCC_CDCCIP2R_USART234578SEL_0
00658 #define RCC_USART234578CLKSOURCE_PLL3      RCC_CDCCIP2R_USART234578SEL_1
00659 #define RCC_USART234578CLKSOURCE_HSI      (RCC_CDCCIP2R_USART234578SEL_0 | RCC_CDCCIP2R_USART234578SEL_1)
00660 #define RCC_USART234578CLKSOURCE_CSI       RCC_CDCCIP2R_USART234578SEL_2
00661 #define RCC_USART234578CLKSOURCE_LSE      (RCC_CDCCIP2R_USART234578SEL_0 | RCC_CDCCIP2R_USART234578SEL_2)
00662 #endif /* RCC_D2CCIP2R_USART28SEL */
00663 /**
00664   * @}
00665   */
00666 
00667 /** @defgroup RCCEx_USART2_Clock_Source  RCCEx USART2 Clock Source
00668   * @{
00669   */
00670 #define RCC_USART2CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_D2PCLK1
00671 #define RCC_USART2CLKSOURCE_PLL2      RCC_USART234578CLKSOURCE_PLL2
00672 #define RCC_USART2CLKSOURCE_PLL3      RCC_USART234578CLKSOURCE_PLL3
00673 #define RCC_USART2CLKSOURCE_HSI       RCC_USART234578CLKSOURCE_HSI
00674 #define RCC_USART2CLKSOURCE_CSI       RCC_USART234578CLKSOURCE_CSI
00675 #define RCC_USART2CLKSOURCE_LSE       RCC_USART234578CLKSOURCE_LSE
00676 
00677 /**
00678   * @}
00679   */
00680 
00681 /** @defgroup RCCEx_USART3_Clock_Source  RCCEx USART3 Clock Source
00682   * @{
00683   */
00684 #define RCC_USART3CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_D2PCLK1
00685 #define RCC_USART3CLKSOURCE_PLL2      RCC_USART234578CLKSOURCE_PLL2
00686 #define RCC_USART3CLKSOURCE_PLL3      RCC_USART234578CLKSOURCE_PLL3
00687 #define RCC_USART3CLKSOURCE_HSI       RCC_USART234578CLKSOURCE_HSI
00688 #define RCC_USART3CLKSOURCE_CSI       RCC_USART234578CLKSOURCE_CSI
00689 #define RCC_USART3CLKSOURCE_LSE       RCC_USART234578CLKSOURCE_LSE
00690 
00691 /**
00692   * @}
00693   */
00694 
00695 /** @defgroup RCCEx_UART4_Clock_Source  RCCEx UART4 Clock Source
00696   * @{
00697   */
00698 #define RCC_UART4CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_D2PCLK1
00699 #define RCC_UART4CLKSOURCE_PLL2      RCC_USART234578CLKSOURCE_PLL2
00700 #define RCC_UART4CLKSOURCE_PLL3      RCC_USART234578CLKSOURCE_PLL3
00701 #define RCC_UART4CLKSOURCE_HSI       RCC_USART234578CLKSOURCE_HSI
00702 #define RCC_UART4CLKSOURCE_CSI       RCC_USART234578CLKSOURCE_CSI
00703 #define RCC_UART4CLKSOURCE_LSE       RCC_USART234578CLKSOURCE_LSE
00704 
00705 /**
00706   * @}
00707   */
00708 
00709 /** @defgroup RCCEx_UART5_Clock_Source  RCCEx UART5 Clock Source
00710   * @{
00711   */
00712 #define RCC_UART5CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_D2PCLK1
00713 #define RCC_UART5CLKSOURCE_PLL2      RCC_USART234578CLKSOURCE_PLL2
00714 #define RCC_UART5CLKSOURCE_PLL3      RCC_USART234578CLKSOURCE_PLL3
00715 #define RCC_UART5CLKSOURCE_HSI       RCC_USART234578CLKSOURCE_HSI
00716 #define RCC_UART5CLKSOURCE_CSI       RCC_USART234578CLKSOURCE_CSI
00717 #define RCC_UART5CLKSOURCE_LSE       RCC_USART234578CLKSOURCE_LSE
00718 
00719 /**
00720   * @}
00721   */
00722 
00723 /** @defgroup RCCEx_UART7_Clock_Source  RCCEx UART7 Clock Source
00724   * @{
00725   */
00726 #define RCC_UART7CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_D2PCLK1
00727 #define RCC_UART7CLKSOURCE_PLL2      RCC_USART234578CLKSOURCE_PLL2
00728 #define RCC_UART7CLKSOURCE_PLL3      RCC_USART234578CLKSOURCE_PLL3
00729 #define RCC_UART7CLKSOURCE_HSI       RCC_USART234578CLKSOURCE_HSI
00730 #define RCC_UART7CLKSOURCE_CSI       RCC_USART234578CLKSOURCE_CSI
00731 #define RCC_UART7CLKSOURCE_LSE       RCC_USART234578CLKSOURCE_LSE
00732 
00733 /**
00734   * @}
00735   */
00736 
00737 /** @defgroup RCCEx_UART8_Clock_Source  RCCEx UART8 Clock Source
00738   * @{
00739   */
00740 #define RCC_UART8CLKSOURCE_D2PCLK1   RCC_USART234578CLKSOURCE_D2PCLK1
00741 #define RCC_UART8CLKSOURCE_PLL2      RCC_USART234578CLKSOURCE_PLL2
00742 #define RCC_UART8CLKSOURCE_PLL3      RCC_USART234578CLKSOURCE_PLL3
00743 #define RCC_UART8CLKSOURCE_HSI       RCC_USART234578CLKSOURCE_HSI
00744 #define RCC_UART8CLKSOURCE_CSI       RCC_USART234578CLKSOURCE_CSI
00745 #define RCC_UART8CLKSOURCE_LSE       RCC_USART234578CLKSOURCE_LSE
00746 
00747 /**
00748   * @}
00749   */
00750 
00751 /** @defgroup RCCEx_LPUART1_Clock_Source  RCCEx LPUART1 Clock Source
00752   * @{
00753   */
00754 #if defined(RCC_D3CCIPR_LPUART1SEL)
00755 #define RCC_LPUART1CLKSOURCE_D3PCLK1    (0x00000000U)
00756 /* alias */
00757 #define RCC_LPUART1CLKSOURCE_PCLK4     RCC_LPUART1CLKSOURCE_D3PCLK1
00758 #define RCC_LPUART1CLKSOURCE_PLL2      RCC_D3CCIPR_LPUART1SEL_0
00759 #define RCC_LPUART1CLKSOURCE_PLL3      RCC_D3CCIPR_LPUART1SEL_1
00760 #define RCC_LPUART1CLKSOURCE_HSI       (RCC_D3CCIPR_LPUART1SEL_0 | RCC_D3CCIPR_LPUART1SEL_1)
00761 #define RCC_LPUART1CLKSOURCE_CSI        RCC_D3CCIPR_LPUART1SEL_2
00762 #define RCC_LPUART1CLKSOURCE_LSE       (RCC_D3CCIPR_LPUART1SEL_2 | RCC_D3CCIPR_LPUART1SEL_0)
00763 #else
00764 #define RCC_LPUART1CLKSOURCE_SRDPCLK4   (0x00000000U)
00765 /* alias*/
00766 #define RCC_LPUART1CLKSOURCE_PCLK4     RCC_LPUART1CLKSOURCE_SRDPCLK4
00767 #define RCC_LPUART1CLKSOURCE_D3PCLK1   RCC_LPUART1CLKSOURCE_SRDPCLK4
00768 #define RCC_LPUART1CLKSOURCE_PLL2      RCC_SRDCCIPR_LPUART1SEL_0
00769 #define RCC_LPUART1CLKSOURCE_PLL3      RCC_SRDCCIPR_LPUART1SEL_1
00770 #define RCC_LPUART1CLKSOURCE_HSI       (RCC_SRDCCIPR_LPUART1SEL_0 | RCC_SRDCCIPR_LPUART1SEL_1)
00771 #define RCC_LPUART1CLKSOURCE_CSI        RCC_SRDCCIPR_LPUART1SEL_2
00772 #define RCC_LPUART1CLKSOURCE_LSE       (RCC_SRDCCIPR_LPUART1SEL_2 | RCC_SRDCCIPR_LPUART1SEL_0)
00773 #endif /* RCC_D3CCIPR_LPUART1SEL */
00774 /**
00775   * @}
00776   */
00777 
00778 /** @defgroup RCCEx_I2C1235_Clock_Source  RCCEx I2C1/2/3/5 Clock Source
00779   * @{
00780   */
00781 #if defined (RCC_D2CCIP2R_I2C123SEL)
00782 #define RCC_I2C123CLKSOURCE_D2PCLK1      (0x00000000U)
00783 #define RCC_I2C123CLKSOURCE_PLL3         RCC_D2CCIP2R_I2C123SEL_0
00784 #define RCC_I2C123CLKSOURCE_HSI          RCC_D2CCIP2R_I2C123SEL_1
00785 #define RCC_I2C123CLKSOURCE_CSI         (RCC_D2CCIP2R_I2C123SEL_0 | RCC_D2CCIP2R_I2C123SEL_1)
00786 /* aliases */
00787 #define RCC_I2C1235CLKSOURCE_D2PCLK1     RCC_I2C123CLKSOURCE_D2PCLK1
00788 #define RCC_I2C1235CLKSOURCE_PLL3        RCC_I2C123CLKSOURCE_PLL3
00789 #define RCC_I2C1235CLKSOURCE_HSI         RCC_I2C123CLKSOURCE_HSI
00790 #define RCC_I2C1235CLKSOURCE_CSI         RCC_I2C123CLKSOURCE_CSI
00791 #elif defined(RCC_CDCCIP2R_I2C123SEL)
00792 #define RCC_I2C123CLKSOURCE_CDPCLK1      (0x00000000U)
00793 /* alias */
00794 #define RCC_I2C123CLKSOURCE_D2PCLK1      RCC_I2C123CLKSOURCE_CDPCLK1
00795 #define RCC_I2C123CLKSOURCE_PLL3         RCC_CDCCIP2R_I2C123SEL_0
00796 #define RCC_I2C123CLKSOURCE_HSI          RCC_CDCCIP2R_I2C123SEL_1
00797 #define RCC_I2C123CLKSOURCE_CSI         (RCC_CDCCIP2R_I2C123SEL_0 | RCC_CDCCIP2R_I2C123SEL_1)
00798 /* aliases */
00799 #define RCC_I2C1235CLKSOURCE_D2PCLK1     RCC_I2C123CLKSOURCE_D2PCLK1
00800 #define RCC_I2C1235CLKSOURCE_PLL3        RCC_I2C123CLKSOURCE_PLL3
00801 #define RCC_I2C1235CLKSOURCE_HSI         RCC_I2C123CLKSOURCE_HSI
00802 #define RCC_I2C1235CLKSOURCE_CSI         RCC_I2C123CLKSOURCE_CSI
00803 #elif defined(I2C5)
00804 #define RCC_I2C1235CLKSOURCE_D2PCLK1      (0x00000000U)
00805 #define RCC_I2C1235CLKSOURCE_PLL3        RCC_D2CCIP2R_I2C1235SEL_0
00806 #define RCC_I2C1235CLKSOURCE_HSI         RCC_D2CCIP2R_I2C1235SEL_1
00807 #define RCC_I2C1235CLKSOURCE_CSI         (RCC_D2CCIP2R_I2C1235SEL_0 | RCC_D2CCIP2R_I2C1235SEL_1)
00808 /* aliases */
00809 #define RCC_I2C123CLKSOURCE_D2PCLK1      RCC_I2C1235CLKSOURCE_D2PCLK1
00810 #define RCC_I2C123CLKSOURCE_PLL3         RCC_I2C1235CLKSOURCE_PLL3
00811 #define RCC_I2C123CLKSOURCE_HSI          RCC_I2C1235CLKSOURCE_HSI
00812 #define RCC_I2C123CLKSOURCE_CSI          RCC_I2C1235CLKSOURCE_CSI
00813 #endif /* RCC_D2CCIP2R_I2C123SEL */
00814 /**
00815   * @}
00816   */
00817 
00818 /** @defgroup RCCEx_I2C1_Clock_Source  RCCEx I2C1 Clock Source
00819   * @{
00820   */
00821 #if defined(I2C5)
00822 #define RCC_I2C1CLKSOURCE_D2PCLK1     RCC_I2C1235CLKSOURCE_D2PCLK1
00823 #define RCC_I2C1CLKSOURCE_PLL3        RCC_I2C1235CLKSOURCE_PLL3
00824 #define RCC_I2C1CLKSOURCE_HSI         RCC_I2C1235CLKSOURCE_HSI
00825 #define RCC_I2C1CLKSOURCE_CSI         RCC_I2C1235CLKSOURCE_CSI
00826 #else
00827 #define RCC_I2C1CLKSOURCE_D2PCLK1     RCC_I2C123CLKSOURCE_D2PCLK1
00828 #define RCC_I2C1CLKSOURCE_PLL3        RCC_I2C123CLKSOURCE_PLL3
00829 #define RCC_I2C1CLKSOURCE_HSI         RCC_I2C123CLKSOURCE_HSI
00830 #define RCC_I2C1CLKSOURCE_CSI         RCC_I2C123CLKSOURCE_CSI
00831 #endif /*I2C5*/
00832 
00833 /**
00834   * @}
00835   */
00836 
00837 /** @defgroup RCCEx_I2C2_Clock_Source  RCCEx I2C2 Clock Source
00838   * @{
00839   */
00840 #if defined(I2C5)
00841 #define RCC_I2C2CLKSOURCE_D2PCLK1     RCC_I2C1235CLKSOURCE_D2PCLK1
00842 #define RCC_I2C2CLKSOURCE_PLL3        RCC_I2C1235CLKSOURCE_PLL3
00843 #define RCC_I2C2CLKSOURCE_HSI         RCC_I2C1235CLKSOURCE_HSI
00844 #define RCC_I2C2CLKSOURCE_CSI         RCC_I2C1235CLKSOURCE_CSI
00845 #else
00846 #define RCC_I2C2CLKSOURCE_D2PCLK1     RCC_I2C123CLKSOURCE_D2PCLK1
00847 #define RCC_I2C2CLKSOURCE_PLL3        RCC_I2C123CLKSOURCE_PLL3
00848 #define RCC_I2C2CLKSOURCE_HSI         RCC_I2C123CLKSOURCE_HSI
00849 #define RCC_I2C2CLKSOURCE_CSI         RCC_I2C123CLKSOURCE_CSI
00850 #endif /*I2C5*/
00851 
00852 /**
00853   * @}
00854   */
00855 
00856 /** @defgroup RCCEx_I2C3_Clock_Source  RCCEx I2C3 Clock Source
00857   * @{
00858   */
00859 #if defined(I2C5)
00860 #define RCC_I2C3CLKSOURCE_D2PCLK1     RCC_I2C1235CLKSOURCE_D2PCLK1
00861 #define RCC_I2C3CLKSOURCE_PLL3        RCC_I2C1235CLKSOURCE_PLL3
00862 #define RCC_I2C3CLKSOURCE_HSI         RCC_I2C1235CLKSOURCE_HSI
00863 #define RCC_I2C3CLKSOURCE_CSI         RCC_I2C1235CLKSOURCE_CSI
00864 #else
00865 #define RCC_I2C3CLKSOURCE_D2PCLK1     RCC_I2C123CLKSOURCE_D2PCLK1
00866 #define RCC_I2C3CLKSOURCE_PLL3        RCC_I2C123CLKSOURCE_PLL3
00867 #define RCC_I2C3CLKSOURCE_HSI         RCC_I2C123CLKSOURCE_HSI
00868 #define RCC_I2C3CLKSOURCE_CSI         RCC_I2C123CLKSOURCE_CSI
00869 #endif /*I2C5*/
00870 
00871 /**
00872   * @}
00873   */
00874 
00875 /** @defgroup RCCEx_I2C4_Clock_Source  RCCEx I2C4 Clock Source
00876   * @{
00877   */
00878 #if defined(RCC_D3CCIPR_I2C4SEL)
00879 #define RCC_I2C4CLKSOURCE_D3PCLK1      (0x00000000U)
00880 #define RCC_I2C4CLKSOURCE_PLL3         RCC_D3CCIPR_I2C4SEL_0
00881 #define RCC_I2C4CLKSOURCE_HSI          RCC_D3CCIPR_I2C4SEL_1
00882 #define RCC_I2C4CLKSOURCE_CSI         (RCC_D3CCIPR_I2C4SEL_0 | RCC_D3CCIPR_I2C4SEL_1)
00883 #else
00884 #define RCC_I2C4CLKSOURCE_SRDPCLK4     (0x00000000U)
00885 /* alias */
00886 #define RCC_I2C4CLKSOURCE_D3PCLK1     RCC_I2C4CLKSOURCE_SRDPCLK4
00887 #define RCC_I2C4CLKSOURCE_PLL3         RCC_SRDCCIPR_I2C4SEL_0
00888 #define RCC_I2C4CLKSOURCE_HSI          RCC_SRDCCIPR_I2C4SEL_1
00889 #define RCC_I2C4CLKSOURCE_CSI         (RCC_SRDCCIPR_I2C4SEL_0 | RCC_SRDCCIPR_I2C4SEL_1)
00890 #endif /* RCC_D3CCIPR_I2C4SEL */
00891 
00892 /**
00893   * @}
00894   */
00895 #if defined(I2C5)
00896 /** @defgroup RCCEx_I2C5_Clock_Source  RCCEx I2C5 Clock Source
00897   * @{
00898   */
00899 #define RCC_I2C5CLKSOURCE_D2PCLK1      RCC_I2C1235CLKSOURCE_D2PCLK1
00900 #define RCC_I2C5CLKSOURCE_PLL3         RCC_I2C1235CLKSOURCE_PLL3
00901 #define RCC_I2C5CLKSOURCE_HSI          RCC_I2C1235CLKSOURCE_HSI
00902 #define RCC_I2C5CLKSOURCE_CSI          RCC_I2C1235CLKSOURCE_CSI
00903 
00904 /**
00905   * @}
00906   */
00907 #endif /*I2C5*/
00908 
00909 /** @defgroup RCCEx_RNG_Clock_Source  RCCEx RNG Clock Source
00910   * @{
00911   */
00912 #if defined(RCC_D2CCIP2R_RNGSEL)
00913 #define RCC_RNGCLKSOURCE_HSI48        (0x00000000U)
00914 #define RCC_RNGCLKSOURCE_PLL           RCC_D2CCIP2R_RNGSEL_0
00915 #define RCC_RNGCLKSOURCE_LSE           RCC_D2CCIP2R_RNGSEL_1
00916 #define RCC_RNGCLKSOURCE_LSI           RCC_D2CCIP2R_RNGSEL
00917 #else
00918 #define RCC_RNGCLKSOURCE_HSI48        (0x00000000U)
00919 #define RCC_RNGCLKSOURCE_PLL           RCC_CDCCIP2R_RNGSEL_0
00920 #define RCC_RNGCLKSOURCE_LSE           RCC_CDCCIP2R_RNGSEL_1
00921 #define RCC_RNGCLKSOURCE_LSI           RCC_CDCCIP2R_RNGSEL
00922 #endif /* RCC_D2CCIP2R_RNGSEL */
00923 
00924 /**
00925   * @}
00926   */
00927 #if defined(HRTIM1)
00928 
00929 /** @defgroup RCCEx_HRTIM1_Clock_Source RCC Extended HRTIM1 Clock Source
00930   * @{
00931   */
00932 #define RCC_HRTIM1CLK_TIMCLK                (0x00000000U)
00933 #define RCC_HRTIM1CLK_CPUCLK                RCC_CFGR_HRTIMSEL
00934 
00935 /**
00936   * @}
00937   */
00938 #endif /*HRTIM1*/
00939 
00940 /** @defgroup RCCEx_USB_Clock_Source  RCCEx USB Clock Source
00941   * @{
00942   */
00943 #if defined(RCC_D2CCIP2R_USBSEL)
00944 #define RCC_USBCLKSOURCE_PLL                  RCC_D2CCIP2R_USBSEL_0
00945 #define RCC_USBCLKSOURCE_PLL3                 RCC_D2CCIP2R_USBSEL_1
00946 #define RCC_USBCLKSOURCE_HSI48                RCC_D2CCIP2R_USBSEL
00947 #else
00948 #define RCC_USBCLKSOURCE_PLL                  RCC_CDCCIP2R_USBSEL_0
00949 #define RCC_USBCLKSOURCE_PLL3                 RCC_CDCCIP2R_USBSEL_1
00950 #define RCC_USBCLKSOURCE_HSI48                RCC_CDCCIP2R_USBSEL
00951 #endif /* RCC_D2CCIP2R_USBSEL */
00952 
00953 /**
00954   * @}
00955   */
00956 
00957 /** @defgroup RCCEx_SAI1_Clock_Source SAI1 Clock Source
00958   * @{
00959   */
00960 #if defined(RCC_D2CCIP1R_SAI1SEL)
00961 #define RCC_SAI1CLKSOURCE_PLL         (0x00000000U)
00962 #define RCC_SAI1CLKSOURCE_PLL2         RCC_D2CCIP1R_SAI1SEL_0
00963 #define RCC_SAI1CLKSOURCE_PLL3         RCC_D2CCIP1R_SAI1SEL_1
00964 #define RCC_SAI1CLKSOURCE_PIN         (RCC_D2CCIP1R_SAI1SEL_0 | RCC_D2CCIP1R_SAI1SEL_1)
00965 #define RCC_SAI1CLKSOURCE_CLKP         RCC_D2CCIP1R_SAI1SEL_2
00966 #else
00967 #define RCC_SAI1CLKSOURCE_PLL         (0x00000000U)
00968 #define RCC_SAI1CLKSOURCE_PLL2         RCC_CDCCIP1R_SAI1SEL_0
00969 #define RCC_SAI1CLKSOURCE_PLL3         RCC_CDCCIP1R_SAI1SEL_1
00970 #define RCC_SAI1CLKSOURCE_PIN         (RCC_CDCCIP1R_SAI1SEL_0 | RCC_CDCCIP1R_SAI1SEL_1)
00971 #define RCC_SAI1CLKSOURCE_CLKP         RCC_CDCCIP1R_SAI1SEL_2
00972 #endif /* RCC_D2CCIP1R_SAI1SEL */
00973 /**
00974   * @}
00975   */
00976 
00977 #if defined(SAI3)
00978 /** @defgroup RCCEx_SAI23_Clock_Source SAI2/3 Clock Source
00979   * @{
00980   */
00981 #define RCC_SAI23CLKSOURCE_PLL         (0x00000000U)
00982 #define RCC_SAI23CLKSOURCE_PLL2         RCC_D2CCIP1R_SAI23SEL_0
00983 #define RCC_SAI23CLKSOURCE_PLL3         RCC_D2CCIP1R_SAI23SEL_1
00984 #define RCC_SAI23CLKSOURCE_PIN         (RCC_D2CCIP1R_SAI23SEL_0 | RCC_D2CCIP1R_SAI23SEL_1)
00985 #define RCC_SAI23CLKSOURCE_CLKP         RCC_D2CCIP1R_SAI23SEL_2
00986 /**
00987   * @}
00988   */
00989 
00990 /** @defgroup RCCEx_SAI2_Clock_Source SAI2 Clock Source
00991   * @{
00992   */
00993 #define RCC_SAI2CLKSOURCE_PLL         RCC_SAI23CLKSOURCE_PLL
00994 #define RCC_SAI2CLKSOURCE_PLL2        RCC_SAI23CLKSOURCE_PLL2
00995 #define RCC_SAI2CLKSOURCE_PLL3        RCC_SAI23CLKSOURCE_PLL3
00996 #define RCC_SAI2CLKSOURCE_PIN         RCC_SAI23CLKSOURCE_PIN
00997 #define RCC_SAI2CLKSOURCE_CLKP        RCC_SAI23CLKSOURCE_CLKP
00998 
00999 /**
01000   * @}
01001   */
01002 
01003 /** @defgroup RCCEx_SAI3_Clock_Source SAI3 Clock Source
01004   * @{
01005   */
01006 #define RCC_SAI3CLKSOURCE_PLL         RCC_SAI23CLKSOURCE_PLL
01007 #define RCC_SAI3CLKSOURCE_PLL2        RCC_SAI23CLKSOURCE_PLL2
01008 #define RCC_SAI3CLKSOURCE_PLL3        RCC_SAI23CLKSOURCE_PLL3
01009 #define RCC_SAI3CLKSOURCE_PIN         RCC_SAI23CLKSOURCE_PIN
01010 #define RCC_SAI3CLKSOURCE_CLKP        RCC_SAI23CLKSOURCE_CLKP
01011 /**
01012   * @}
01013   */
01014 #endif /* SAI3 */
01015 
01016 #if defined(RCC_CDCCIP1R_SAI2ASEL)
01017 /** @defgroup RCCEx_SAI2A_Clock_Source SAI2A Clock Source
01018   * @{
01019   */
01020 #define RCC_SAI2ACLKSOURCE_PLL         (0x00000000U)
01021 #define RCC_SAI2ACLKSOURCE_PLL2         RCC_CDCCIP1R_SAI2ASEL_0
01022 #define RCC_SAI2ACLKSOURCE_PLL3         RCC_CDCCIP1R_SAI2ASEL_1
01023 #define RCC_SAI2ACLKSOURCE_PIN         (RCC_CDCCIP1R_SAI2ASEL_0 | RCC_CDCCIP1R_SAI2ASEL_1)
01024 #define RCC_SAI2ACLKSOURCE_CLKP         RCC_CDCCIP1R_SAI2ASEL_2
01025 #define RCC_SAI2ACLKSOURCE_SPDIF       (RCC_CDCCIP1R_SAI2ASEL_0 | RCC_CDCCIP1R_SAI2ASEL_2)
01026  /**
01027   * @}
01028   */
01029 #endif /* RCC_CDCCIP1R_SAI2ASEL */
01030 
01031 #if defined(RCC_CDCCIP1R_SAI2BSEL)
01032 /** @defgroup RCCEx_SAI2B_Clock_Source SAI2B Clock Source
01033   * @{
01034   */
01035 #define RCC_SAI2BCLKSOURCE_PLL         (0x00000000U)
01036 #define RCC_SAI2BCLKSOURCE_PLL2         RCC_CDCCIP1R_SAI2BSEL_0
01037 #define RCC_SAI2BCLKSOURCE_PLL3         RCC_CDCCIP1R_SAI2BSEL_1
01038 #define RCC_SAI2BCLKSOURCE_PIN         (RCC_CDCCIP1R_SAI2BSEL_0 | RCC_CDCCIP1R_SAI2BSEL_1)
01039 #define RCC_SAI2BCLKSOURCE_CLKP         RCC_CDCCIP1R_SAI2BSEL_2
01040 #define RCC_SAI2BCLKSOURCE_SPDIF       (RCC_CDCCIP1R_SAI2BSEL_0 | RCC_CDCCIP1R_SAI2BSEL_2)
01041 /**
01042   * @}
01043   */
01044 #endif /* RCC_CDCCIP1R_SAI2BSEL */
01045 
01046 
01047 /** @defgroup RCCEx_SPI123_Clock_Source SPI1/2/3 Clock Source
01048   * @{
01049   */
01050 #if defined(RCC_D2CCIP1R_SPI123SEL)
01051 #define RCC_SPI123CLKSOURCE_PLL         (0x00000000U)
01052 #define RCC_SPI123CLKSOURCE_PLL2         RCC_D2CCIP1R_SPI123SEL_0
01053 #define RCC_SPI123CLKSOURCE_PLL3         RCC_D2CCIP1R_SPI123SEL_1
01054 #define RCC_SPI123CLKSOURCE_PIN         (RCC_D2CCIP1R_SPI123SEL_0 | RCC_D2CCIP1R_SPI123SEL_1)
01055 #define RCC_SPI123CLKSOURCE_CLKP         RCC_D2CCIP1R_SPI123SEL_2
01056 #else
01057 #define RCC_SPI123CLKSOURCE_PLL         (0x00000000U)
01058 #define RCC_SPI123CLKSOURCE_PLL2         RCC_CDCCIP1R_SPI123SEL_0
01059 #define RCC_SPI123CLKSOURCE_PLL3         RCC_CDCCIP1R_SPI123SEL_1
01060 #define RCC_SPI123CLKSOURCE_PIN         (RCC_CDCCIP1R_SPI123SEL_0 | RCC_CDCCIP1R_SPI123SEL_1)
01061 #define RCC_SPI123CLKSOURCE_CLKP         RCC_CDCCIP1R_SPI123SEL_2
01062 #endif /* RCC_D2CCIP1R_SPI123SEL */
01063 /**
01064   * @}
01065   */
01066 
01067 /** @defgroup RCCEx_SPI1_Clock_Source SPI1 Clock Source
01068   * @{
01069   */
01070 #define RCC_SPI1CLKSOURCE_PLL         RCC_SPI123CLKSOURCE_PLL
01071 #define RCC_SPI1CLKSOURCE_PLL2        RCC_SPI123CLKSOURCE_PLL2
01072 #define RCC_SPI1CLKSOURCE_PLL3        RCC_SPI123CLKSOURCE_PLL3
01073 #define RCC_SPI1CLKSOURCE_PIN         RCC_SPI123CLKSOURCE_PIN
01074 #define RCC_SPI1CLKSOURCE_CLKP        RCC_SPI123CLKSOURCE_CLKP
01075 
01076 /**
01077   * @}
01078   */
01079 
01080 /** @defgroup RCCEx_SPI2_Clock_Source SPI2 Clock Source
01081   * @{
01082   */
01083 #define RCC_SPI2CLKSOURCE_PLL         RCC_SPI123CLKSOURCE_PLL
01084 #define RCC_SPI2CLKSOURCE_PLL2        RCC_SPI123CLKSOURCE_PLL2
01085 #define RCC_SPI2CLKSOURCE_PLL3        RCC_SPI123CLKSOURCE_PLL3
01086 #define RCC_SPI2CLKSOURCE_PIN         RCC_SPI123CLKSOURCE_PIN
01087 #define RCC_SPI2CLKSOURCE_CLKP        RCC_SPI123CLKSOURCE_CLKP
01088 
01089 /**
01090   * @}
01091   */
01092 
01093 /** @defgroup RCCEx_SPI3_Clock_Source SPI3 Clock Source
01094   * @{
01095   */
01096 #define RCC_SPI3CLKSOURCE_PLL         RCC_SPI123CLKSOURCE_PLL
01097 #define RCC_SPI3CLKSOURCE_PLL2        RCC_SPI123CLKSOURCE_PLL2
01098 #define RCC_SPI3CLKSOURCE_PLL3        RCC_SPI123CLKSOURCE_PLL3
01099 #define RCC_SPI3CLKSOURCE_PIN         RCC_SPI123CLKSOURCE_PIN
01100 #define RCC_SPI3CLKSOURCE_CLKP        RCC_SPI123CLKSOURCE_CLKP
01101 
01102 /**
01103   * @}
01104   */
01105 
01106 /** @defgroup RCCEx_SPI45_Clock_Source SPI4/5 Clock Source
01107   * @{
01108   */
01109 #if defined(RCC_D2CCIP1R_SPI45SEL)
01110 #define RCC_SPI45CLKSOURCE_D2PCLK1     (0x00000000U)
01111 #define RCC_SPI45CLKSOURCE_PCLK1        RCC_SPI45CLKSOURCE_D2PCLK1
01112 #define RCC_SPI45CLKSOURCE_PLL2         RCC_D2CCIP1R_SPI45SEL_0
01113 #define RCC_SPI45CLKSOURCE_PLL3         RCC_D2CCIP1R_SPI45SEL_1
01114 #define RCC_SPI45CLKSOURCE_HSI         (RCC_D2CCIP1R_SPI45SEL_0 | RCC_D2CCIP1R_SPI45SEL_1)
01115 #define RCC_SPI45CLKSOURCE_CSI          RCC_D2CCIP1R_SPI45SEL_2
01116 #define RCC_SPI45CLKSOURCE_HSE         (RCC_D2CCIP1R_SPI45SEL_0 | RCC_D2CCIP1R_SPI45SEL_2)
01117 #else
01118 #define RCC_SPI45CLKSOURCE_CDPCLK1     (0x00000000U)
01119 /* aliases */
01120 #define RCC_SPI45CLKSOURCE_D2PCLK1      RCC_SPI45CLKSOURCE_CDPCLK1  /* D2PCLK1 is used in STM32H74xxx, STM32H75xxx, STM32H72xxx and STM32H73xxx family lines */
01121 #define RCC_SPI45CLKSOURCE_PCLK1        RCC_SPI45CLKSOURCE_CDPCLK1
01122 #define RCC_SPI45CLKSOURCE_PLL2         RCC_CDCCIP1R_SPI45SEL_0
01123 #define RCC_SPI45CLKSOURCE_PLL3         RCC_CDCCIP1R_SPI45SEL_1
01124 #define RCC_SPI45CLKSOURCE_HSI         (RCC_CDCCIP1R_SPI45SEL_0 | RCC_CDCCIP1R_SPI45SEL_1)
01125 #define RCC_SPI45CLKSOURCE_CSI          RCC_CDCCIP1R_SPI45SEL_2
01126 #define RCC_SPI45CLKSOURCE_HSE         (RCC_CDCCIP1R_SPI45SEL_0 | RCC_CDCCIP1R_SPI45SEL_2)
01127 #endif /* RCC_D2CCIP1R_SPI45SEL */
01128 /**
01129   * @}
01130   */
01131 
01132 /** @defgroup RCCEx_SPI4_Clock_Source SPI4 Clock Source
01133   * @{
01134   */
01135 #define RCC_SPI4CLKSOURCE_D2PCLK1     RCC_SPI45CLKSOURCE_D2PCLK1
01136 #define RCC_SPI4CLKSOURCE_PLL2        RCC_SPI45CLKSOURCE_PLL2
01137 #define RCC_SPI4CLKSOURCE_PLL3        RCC_SPI45CLKSOURCE_PLL3
01138 #define RCC_SPI4CLKSOURCE_HSI         RCC_SPI45CLKSOURCE_HSI
01139 #define RCC_SPI4CLKSOURCE_CSI         RCC_SPI45CLKSOURCE_CSI
01140 #define RCC_SPI4CLKSOURCE_HSE         RCC_SPI45CLKSOURCE_HSE
01141 
01142 /**
01143   * @}
01144   */
01145 
01146 /** @defgroup RCCEx_SPI5_Clock_Source SPI5 Clock Source
01147   * @{
01148   */
01149 #define RCC_SPI5CLKSOURCE_D2PCLK1     RCC_SPI45CLKSOURCE_D2PCLK1
01150 #define RCC_SPI5CLKSOURCE_PLL2        RCC_SPI45CLKSOURCE_PLL2
01151 #define RCC_SPI5CLKSOURCE_PLL3        RCC_SPI45CLKSOURCE_PLL3
01152 #define RCC_SPI5CLKSOURCE_HSI         RCC_SPI45CLKSOURCE_HSI
01153 #define RCC_SPI5CLKSOURCE_CSI         RCC_SPI45CLKSOURCE_CSI
01154 #define RCC_SPI5CLKSOURCE_HSE         RCC_SPI45CLKSOURCE_HSE
01155 
01156 /**
01157   * @}
01158   */
01159 
01160 /** @defgroup RCCEx_SPI6_Clock_Source SPI6 Clock Source
01161   * @{
01162   */
01163 #if defined(RCC_D3CCIPR_SPI6SEL)
01164 #define RCC_SPI6CLKSOURCE_D3PCLK1     (0x00000000U)
01165 #define RCC_SPI6CLKSOURCE_PCLK4        RCC_SPI6CLKSOURCE_D3PCLK1
01166 #define RCC_SPI6CLKSOURCE_PLL2         RCC_D3CCIPR_SPI6SEL_0
01167 #define RCC_SPI6CLKSOURCE_PLL3         RCC_D3CCIPR_SPI6SEL_1
01168 #define RCC_SPI6CLKSOURCE_HSI         (RCC_D3CCIPR_SPI6SEL_0 | RCC_D3CCIPR_SPI6SEL_1)
01169 #define RCC_SPI6CLKSOURCE_CSI          RCC_D3CCIPR_SPI6SEL_2
01170 #define RCC_SPI6CLKSOURCE_HSE         (RCC_D3CCIPR_SPI6SEL_0 | RCC_D3CCIPR_SPI6SEL_2)
01171 #else
01172 #define RCC_SPI6CLKSOURCE_SRDPCLK4    (0x00000000U)
01173 /* alias */
01174 #define RCC_SPI6CLKSOURCE_D3PCLK1      RCC_SPI6CLKSOURCE_SRDPCLK4  /* D3PCLK1 is used in STM32H74xxx, STM32H75xxx, STM32H72xxx and STM32H73xxx family lines */
01175 #define RCC_SPI6CLKSOURCE_PCLK4        RCC_SPI6CLKSOURCE_SRDPCLK4
01176 #define RCC_SPI6CLKSOURCE_PLL2         RCC_SRDCCIPR_SPI6SEL_0
01177 #define RCC_SPI6CLKSOURCE_PLL3         RCC_SRDCCIPR_SPI6SEL_1
01178 #define RCC_SPI6CLKSOURCE_HSI         (RCC_SRDCCIPR_SPI6SEL_0 | RCC_SRDCCIPR_SPI6SEL_1)
01179 #define RCC_SPI6CLKSOURCE_CSI          RCC_SRDCCIPR_SPI6SEL_2
01180 #define RCC_SPI6CLKSOURCE_HSE         (RCC_SRDCCIPR_SPI6SEL_0 | RCC_SRDCCIPR_SPI6SEL_2)
01181 #define RCC_SPI6CLKSOURCE_PIN         (RCC_SRDCCIPR_SPI6SEL_1 | RCC_SRDCCIPR_SPI6SEL_2)
01182 #endif /* RCC_D3CCIPR_SPI6SEL */
01183 
01184 /**
01185   * @}
01186   */
01187 
01188 
01189 #if defined(SAI4_Block_A)
01190 /** @defgroup RCCEx_SAI4A_Clock_Source SAI4A Clock Source
01191   * @{
01192   */
01193 #define RCC_SAI4ACLKSOURCE_PLL         (0x00000000U)
01194 #define RCC_SAI4ACLKSOURCE_PLL2         RCC_D3CCIPR_SAI4ASEL_0
01195 #define RCC_SAI4ACLKSOURCE_PLL3         RCC_D3CCIPR_SAI4ASEL_1
01196 #define RCC_SAI4ACLKSOURCE_PIN         (RCC_D3CCIPR_SAI4ASEL_0 | RCC_D3CCIPR_SAI4ASEL_1)
01197 #define RCC_SAI4ACLKSOURCE_CLKP         RCC_D3CCIPR_SAI4ASEL_2
01198 #if defined(RCC_VER_3_0)
01199 #define RCC_SAI4ACLKSOURCE_SPDIF       (RCC_D3CCIPR_SAI4ASEL_2 | RCC_D3CCIPR_SAI4ASEL_0)
01200 #endif /*RCC_VER_3_0*/
01201 
01202 /**
01203   * @}
01204   */
01205 #endif /* SAI4_Block_A */
01206 
01207 
01208 
01209 #if defined(SAI4_Block_B)
01210 /** @defgroup RCCEx_SAI4B_Clock_Source SAI4B Clock Source
01211   * @{
01212   */
01213 #define RCC_SAI4BCLKSOURCE_PLL         (0x00000000U)
01214 #define RCC_SAI4BCLKSOURCE_PLL2         RCC_D3CCIPR_SAI4BSEL_0
01215 #define RCC_SAI4BCLKSOURCE_PLL3         RCC_D3CCIPR_SAI4BSEL_1
01216 #define RCC_SAI4BCLKSOURCE_PIN         (RCC_D3CCIPR_SAI4BSEL_0 | RCC_D3CCIPR_SAI4BSEL_1)
01217 #define RCC_SAI4BCLKSOURCE_CLKP         RCC_D3CCIPR_SAI4BSEL_2
01218 #if defined(RCC_VER_3_0)
01219 #define RCC_SAI4BCLKSOURCE_SPDIF       (RCC_D3CCIPR_SAI4BSEL_2 | RCC_D3CCIPR_SAI4BSEL_0)
01220 #endif /* RCC_VER_3_0 */
01221 
01222 /**
01223   * @}
01224   */
01225 #endif /* SAI4_Block_B */
01226 
01227 
01228 /** @defgroup RCCEx_LPTIM1_Clock_Source  RCCEx LPTIM1 Clock Source
01229   * @{
01230   */
01231 #if defined(RCC_D2CCIP2R_LPTIM1SEL)
01232 #define RCC_LPTIM1CLKSOURCE_D2PCLK1        (0x00000000U)
01233 /* alias */
01234 #define RCC_LPTIM1CLKSOURCE_PCLK1         RCC_LPTIM1CLKSOURCE_D2PCLK1
01235 #define RCC_LPTIM1CLKSOURCE_PLL2          RCC_D2CCIP2R_LPTIM1SEL_0
01236 #define RCC_LPTIM1CLKSOURCE_PLL3          RCC_D2CCIP2R_LPTIM1SEL_1
01237 #define RCC_LPTIM1CLKSOURCE_LSE          (RCC_D2CCIP2R_LPTIM1SEL_0 | RCC_D2CCIP2R_LPTIM1SEL_1)
01238 #define RCC_LPTIM1CLKSOURCE_LSI           RCC_D2CCIP2R_LPTIM1SEL_2
01239 #define RCC_LPTIM1CLKSOURCE_CLKP         (RCC_D2CCIP2R_LPTIM1SEL_0 | RCC_D2CCIP2R_LPTIM1SEL_2)
01240 #else
01241 #define RCC_LPTIM1CLKSOURCE_CDPCLK1        (0x00000000U)
01242 /* alias */
01243 #define RCC_LPTIM1CLKSOURCE_PCLK1         RCC_LPTIM1CLKSOURCE_CDPCLK1
01244 #define RCC_LPTIM1CLKSOURCE_D2PCLK1       RCC_LPTIM1CLKSOURCE_CDPCLK1
01245 #define RCC_LPTIM1CLKSOURCE_PLL2          RCC_CDCCIP2R_LPTIM1SEL_0
01246 #define RCC_LPTIM1CLKSOURCE_PLL3          RCC_CDCCIP2R_LPTIM1SEL_1
01247 #define RCC_LPTIM1CLKSOURCE_LSE          (RCC_CDCCIP2R_LPTIM1SEL_0 | RCC_CDCCIP2R_LPTIM1SEL_1)
01248 #define RCC_LPTIM1CLKSOURCE_LSI           RCC_CDCCIP2R_LPTIM1SEL_2
01249 #define RCC_LPTIM1CLKSOURCE_CLKP         (RCC_CDCCIP2R_LPTIM1SEL_0 | RCC_CDCCIP2R_LPTIM1SEL_2)
01250 #endif /* RCC_D2CCIP2R_LPTIM1SEL */
01251 
01252 /**
01253   * @}
01254   */
01255 
01256 /** @defgroup RCCEx_LPTIM2_Clock_Source  RCCEx LPTIM2 Clock Source
01257   * @{
01258   */
01259 #if defined(RCC_D3CCIPR_LPTIM2SEL)
01260 #define RCC_LPTIM2CLKSOURCE_D3PCLK1       (0x00000000U)
01261 /* alias */
01262 #define RCC_LPTIM2CLKSOURCE_PCLK4         RCC_LPTIM2CLKSOURCE_D3PCLK1
01263 #define RCC_LPTIM2CLKSOURCE_PLL2          RCC_D3CCIPR_LPTIM2SEL_0
01264 #define RCC_LPTIM2CLKSOURCE_PLL3          RCC_D3CCIPR_LPTIM2SEL_1
01265 #define RCC_LPTIM2CLKSOURCE_LSE          (RCC_D3CCIPR_LPTIM2SEL_0 | RCC_D3CCIPR_LPTIM2SEL_1)
01266 #define RCC_LPTIM2CLKSOURCE_LSI           RCC_D3CCIPR_LPTIM2SEL_2
01267 #define RCC_LPTIM2CLKSOURCE_CLKP         (RCC_D3CCIPR_LPTIM2SEL_0 | RCC_D3CCIPR_LPTIM2SEL_2)
01268 #else
01269 #define RCC_LPTIM2CLKSOURCE_SRDPCLK4       (0x00000000U)
01270 /*alias*/
01271 #define RCC_LPTIM2CLKSOURCE_PCLK4         RCC_LPTIM2CLKSOURCE_SRDPCLK4
01272 #define RCC_LPTIM2CLKSOURCE_D3PCLK1       RCC_LPTIM2CLKSOURCE_SRDPCLK4
01273 #define RCC_LPTIM2CLKSOURCE_PLL2          RCC_SRDCCIPR_LPTIM2SEL_0
01274 #define RCC_LPTIM2CLKSOURCE_PLL3          RCC_SRDCCIPR_LPTIM2SEL_1
01275 #define RCC_LPTIM2CLKSOURCE_LSE          (RCC_SRDCCIPR_LPTIM2SEL_0 | RCC_SRDCCIPR_LPTIM2SEL_1)
01276 #define RCC_LPTIM2CLKSOURCE_LSI           RCC_SRDCCIPR_LPTIM2SEL_2
01277 #define RCC_LPTIM2CLKSOURCE_CLKP         (RCC_SRDCCIPR_LPTIM2SEL_0 | RCC_SRDCCIPR_LPTIM2SEL_2)
01278 #endif /* RCC_D3CCIPR_LPTIM2SEL */
01279 /**
01280   * @}
01281   */
01282 
01283 /** @defgroup RCCEx_LPTIM345_Clock_Source  RCCEx LPTIM3/4/5 Clock Source
01284   * @{
01285   */
01286 #if defined(RCC_D3CCIPR_LPTIM345SEL)
01287 #define RCC_LPTIM345CLKSOURCE_D3PCLK1        (0x00000000U)
01288 /* alias*/
01289 #define RCC_LPTIM345CLKSOURCE_PCLK4         RCC_LPTIM345CLKSOURCE_D3PCLK1
01290 #define RCC_LPTIM345CLKSOURCE_PLL2          RCC_D3CCIPR_LPTIM345SEL_0
01291 #define RCC_LPTIM345CLKSOURCE_PLL3          RCC_D3CCIPR_LPTIM345SEL_1
01292 #define RCC_LPTIM345CLKSOURCE_LSE          (RCC_D3CCIPR_LPTIM345SEL_0 | RCC_D3CCIPR_LPTIM345SEL_1)
01293 #define RCC_LPTIM345CLKSOURCE_LSI           RCC_D3CCIPR_LPTIM345SEL_2
01294 #define RCC_LPTIM345CLKSOURCE_CLKP         (RCC_D3CCIPR_LPTIM345SEL_0 | RCC_D3CCIPR_LPTIM345SEL_2)
01295 #else
01296 #define RCC_LPTIM345CLKSOURCE_SRDPCLK4      (0x00000000U)
01297 /* alias */
01298 #define RCC_LPTIM345CLKSOURCE_PCLK4         RCC_LPTIM345CLKSOURCE_SRDPCLK4
01299 #define RCC_LPTIM345CLKSOURCE_D3PCLK1       RCC_LPTIM345CLKSOURCE_SRDPCLK4
01300 #define RCC_LPTIM345CLKSOURCE_PLL2          RCC_SRDCCIPR_LPTIM3SEL_0
01301 #define RCC_LPTIM345CLKSOURCE_PLL3          RCC_SRDCCIPR_LPTIM3SEL_1
01302 #define RCC_LPTIM345CLKSOURCE_LSE          (RCC_SRDCCIPR_LPTIM3SEL_0 | RCC_SRDCCIPR_LPTIM3SEL_1)
01303 #define RCC_LPTIM345CLKSOURCE_LSI           RCC_SRDCCIPR_LPTIM3SEL_2
01304 #define RCC_LPTIM345CLKSOURCE_CLKP         (RCC_SRDCCIPR_LPTIM3SEL_0 | RCC_SRDCCIPR_LPTIM3SEL_2)
01305 #endif /* RCC_D3CCIPR_LPTIM345SEL */
01306 /**
01307   * @}
01308   */
01309 
01310 /** @defgroup RCCEx_LPTIM3_Clock_Source  RCCEx LPTIM3 Clock Source
01311   * @{
01312   */
01313 #define RCC_LPTIM3CLKSOURCE_D3PCLK1       RCC_LPTIM345CLKSOURCE_D3PCLK1
01314 #define RCC_LPTIM3CLKSOURCE_PLL2          RCC_LPTIM345CLKSOURCE_PLL2
01315 #define RCC_LPTIM3CLKSOURCE_PLL3          RCC_LPTIM345CLKSOURCE_PLL3
01316 #define RCC_LPTIM3CLKSOURCE_LSE           RCC_LPTIM345CLKSOURCE_LSE
01317 #define RCC_LPTIM3CLKSOURCE_LSI           RCC_LPTIM345CLKSOURCE_LSI
01318 #define RCC_LPTIM3CLKSOURCE_CLKP          RCC_LPTIM345CLKSOURCE_CLKP
01319 
01320 /**
01321   * @}
01322   */
01323 #if defined(LPTIM4)
01324 /** @defgroup RCCEx_LPTIM4_Clock_Source  RCCEx LPTIM4 Clock Source
01325   * @{
01326   */
01327 #define RCC_LPTIM4CLKSOURCE_D3PCLK1       RCC_LPTIM345CLKSOURCE_D3PCLK1
01328 #define RCC_LPTIM4CLKSOURCE_PLL2          RCC_LPTIM345CLKSOURCE_PLL2
01329 #define RCC_LPTIM4CLKSOURCE_PLL3          RCC_LPTIM345CLKSOURCE_PLL3
01330 #define RCC_LPTIM4CLKSOURCE_LSE           RCC_LPTIM345CLKSOURCE_LSE
01331 #define RCC_LPTIM4CLKSOURCE_LSI           RCC_LPTIM345CLKSOURCE_LSI
01332 #define RCC_LPTIM4CLKSOURCE_CLKP          RCC_LPTIM345CLKSOURCE_CLKP
01333 /**
01334   * @}
01335   */
01336 #endif /* LPTIM4 */
01337 
01338 #if defined(LPTIM5)
01339 /** @defgroup RCCEx_LPTIM5_Clock_Source  RCCEx LPTIM5 Clock Source
01340   * @{
01341   */
01342 #define RCC_LPTIM5CLKSOURCE_D3PCLK1       RCC_LPTIM345CLKSOURCE_D3PCLK1
01343 #define RCC_LPTIM5CLKSOURCE_PLL2          RCC_LPTIM345CLKSOURCE_PLL2
01344 #define RCC_LPTIM5CLKSOURCE_PLL3          RCC_LPTIM345CLKSOURCE_PLL3
01345 #define RCC_LPTIM5CLKSOURCE_LSE           RCC_LPTIM345CLKSOURCE_LSE
01346 #define RCC_LPTIM5CLKSOURCE_LSI           RCC_LPTIM345CLKSOURCE_LSI
01347 #define RCC_LPTIM5CLKSOURCE_CLKP          RCC_LPTIM345CLKSOURCE_CLKP
01348 
01349 /**
01350   * @}
01351   */
01352 #endif /* LPTIM5 */
01353 
01354 #if defined(QUADSPI)
01355 /** @defgroup RCCEx_QSPI_Clock_Source  RCCEx QSPI Clock Source
01356   * @{
01357   */
01358 #define RCC_QSPICLKSOURCE_D1HCLK       (0x00000000U)
01359 #define RCC_QSPICLKSOURCE_PLL          RCC_D1CCIPR_QSPISEL_0
01360 #define RCC_QSPICLKSOURCE_PLL2         RCC_D1CCIPR_QSPISEL_1
01361 #define RCC_QSPICLKSOURCE_CLKP         RCC_D1CCIPR_QSPISEL
01362 
01363 /**
01364   * @}
01365   */
01366 #endif /* QUADSPI */
01367 
01368 
01369 #if defined(OCTOSPI1) || defined(OCTOSPI2)
01370 /** @defgroup RCCEx_OSPI_Clock_Source  RCCEx OSPI Clock Source
01371   * @{
01372   */
01373 
01374 #if defined(RCC_CDCCIPR_OCTOSPISEL)
01375 #define RCC_OSPICLKSOURCE_CDHCLK       (0x00000000U)
01376 /*aliases*/
01377 #define RCC_OSPICLKSOURCE_D1HCLK       RCC_OSPICLKSOURCE_CDHCLK
01378 #define RCC_OSPICLKSOURCE_HCLK         RCC_OSPICLKSOURCE_CDHCLK
01379 #define RCC_OSPICLKSOURCE_PLL          RCC_CDCCIPR_OCTOSPISEL_0
01380 #define RCC_OSPICLKSOURCE_PLL2         RCC_CDCCIPR_OCTOSPISEL_1
01381 #define RCC_OSPICLKSOURCE_CLKP         RCC_CDCCIPR_OCTOSPISEL
01382 #else
01383 #define RCC_OSPICLKSOURCE_D1HCLK       (0x00000000U)
01384 #define RCC_OSPICLKSOURCE_HCLK         RCC_OSPICLKSOURCE_D1HCLK
01385 #define RCC_OSPICLKSOURCE_PLL          RCC_D1CCIPR_OCTOSPISEL_0
01386 #define RCC_OSPICLKSOURCE_PLL2         RCC_D1CCIPR_OCTOSPISEL_1
01387 #define RCC_OSPICLKSOURCE_CLKP         RCC_D1CCIPR_OCTOSPISEL
01388 #endif /* RCC_CDCCIPR_OCTOSPISEL */
01389 
01390 
01391 /**
01392   * @}
01393   */
01394 #endif /* defined(OCTOSPI1) || defined(OCTOSPI2) */
01395 
01396 #if defined(DSI)
01397 /** @defgroup RCCEx_DSI_Clock_Source  RCCEx DSI Clock Source
01398   * @{
01399   */
01400 #define RCC_DSICLKSOURCE_PHY       (0x00000000U)
01401 #define RCC_DSICLKSOURCE_PLL2       RCC_D1CCIPR_DSISEL
01402 
01403 /**
01404   * @}
01405   */
01406 #endif /* DSI */
01407 
01408 /** @defgroup RCCEx_FMC_Clock_Source  RCCEx FMC Clock Source
01409   * @{
01410   */
01411 #if defined(RCC_D1CCIPR_FMCSEL)
01412 #define RCC_FMCCLKSOURCE_D1HCLK       (0x00000000U)
01413 #define RCC_FMCCLKSOURCE_HCLK         RCC_FMCCLKSOURCE_D1HCLK
01414 #define RCC_FMCCLKSOURCE_PLL          RCC_D1CCIPR_FMCSEL_0
01415 #define RCC_FMCCLKSOURCE_PLL2         RCC_D1CCIPR_FMCSEL_1
01416 #define RCC_FMCCLKSOURCE_CLKP         RCC_D1CCIPR_FMCSEL
01417 #else
01418 #define RCC_FMCCLKSOURCE_CDHCLK       (0x00000000U)
01419 #define RCC_FMCCLKSOURCE_HCLK         RCC_FMCCLKSOURCE_CDHCLK
01420 /*alias*/
01421 #define RCC_FMCCLKSOURCE_D1HCLK       RCC_FMCCLKSOURCE_CDHCLK
01422 #define RCC_FMCCLKSOURCE_PLL          RCC_CDCCIPR_FMCSEL_0
01423 #define RCC_FMCCLKSOURCE_PLL2         RCC_CDCCIPR_FMCSEL_1
01424 #define RCC_FMCCLKSOURCE_CLKP         RCC_CDCCIPR_FMCSEL
01425 #endif /* RCC_D1CCIPR_FMCSEL */
01426 /**
01427   * @}
01428   */
01429 
01430 #if defined(FDCAN1) || defined(FDCAN2)
01431 /** @defgroup RCCEx_FDCAN_Clock_Source  RCCEx FDCAN Clock Source
01432   * @{
01433   */
01434 #if defined(RCC_D2CCIP1R_FDCANSEL)
01435 #define RCC_FDCANCLKSOURCE_HSE         (0x00000000U)
01436 #define RCC_FDCANCLKSOURCE_PLL          RCC_D2CCIP1R_FDCANSEL_0
01437 #define RCC_FDCANCLKSOURCE_PLL2         RCC_D2CCIP1R_FDCANSEL_1
01438 #else
01439 #define RCC_FDCANCLKSOURCE_HSE         (0x00000000U)
01440 #define RCC_FDCANCLKSOURCE_PLL          RCC_CDCCIP1R_FDCANSEL_0
01441 #define RCC_FDCANCLKSOURCE_PLL2         RCC_CDCCIP1R_FDCANSEL_1
01442 #endif /* D3_SRAM_BASE */
01443 /**
01444   * @}
01445   */
01446 #endif /*FDCAN1 || FDCAN2*/
01447 
01448 
01449 /** @defgroup RCCEx_SDMMC_Clock_Source  RCCEx SDMMC Clock Source
01450   * @{
01451   */
01452 #if defined(RCC_D1CCIPR_SDMMCSEL)
01453 #define RCC_SDMMCCLKSOURCE_PLL           (0x00000000U)
01454 #define RCC_SDMMCCLKSOURCE_PLL2           RCC_D1CCIPR_SDMMCSEL
01455 #else
01456 #define RCC_SDMMCCLKSOURCE_PLL           (0x00000000U)
01457 #define RCC_SDMMCCLKSOURCE_PLL2           RCC_CDCCIPR_SDMMCSEL
01458 #endif /* RCC_D1CCIPR_SDMMCSEL */
01459 /**
01460   * @}
01461   */
01462 
01463 
01464 /** @defgroup RCCEx_ADC_Clock_Source  RCCEx ADC Clock Source
01465   * @{
01466   */
01467 #if defined(RCC_D3CCIPR_ADCSEL_0)
01468 #define RCC_ADCCLKSOURCE_PLL2       (0x00000000U)
01469 #define RCC_ADCCLKSOURCE_PLL3       RCC_D3CCIPR_ADCSEL_0
01470 #define RCC_ADCCLKSOURCE_CLKP       RCC_D3CCIPR_ADCSEL_1
01471 #else
01472 #define RCC_ADCCLKSOURCE_PLL2       (0x00000000U)
01473 #define RCC_ADCCLKSOURCE_PLL3       RCC_SRDCCIPR_ADCSEL_0
01474 #define RCC_ADCCLKSOURCE_CLKP       RCC_SRDCCIPR_ADCSEL_1
01475 #endif /* RCC_D3CCIPR_ADCSEL_0  */
01476 /**
01477   * @}
01478   */
01479 
01480 /** @defgroup RCCEx_SWPMI1_Clock_Source  RCCEx SWPMI1 Clock Source
01481   * @{
01482   */
01483 #if defined(RCC_D2CCIP1R_SWPSEL)
01484 #define RCC_SWPMI1CLKSOURCE_D2PCLK1       (0x00000000U)
01485 #define RCC_SWPMI1CLKSOURCE_HSI            RCC_D2CCIP1R_SWPSEL
01486 #else
01487 #define RCC_SWPMI1CLKSOURCE_CDPCLK1       (0x00000000U)
01488 /* alias */
01489 #define RCC_SWPMI1CLKSOURCE_D2PCLK1        RCC_SWPMI1CLKSOURCE_CDPCLK1
01490 #define RCC_SWPMI1CLKSOURCE_HSI            RCC_CDCCIP1R_SWPSEL
01491 #endif /* RCC_D2CCIP1R_SWPSEL */
01492 /**
01493   * @}
01494   */
01495 
01496 /** @defgroup RCCEx_DFSDM1_Clock_Source  RCCEx DFSDM1 Clock Source
01497   * @{
01498   */
01499 #if defined(RCC_D2CCIP1R_DFSDM1SEL)
01500 #define RCC_DFSDM1CLKSOURCE_D2PCLK1        (0x00000000U)
01501 #define RCC_DFSDM1CLKSOURCE_SYS            RCC_D2CCIP1R_DFSDM1SEL
01502 #else
01503 #define RCC_DFSDM1CLKSOURCE_CDPCLK1        (0x00000000U)
01504 /* alias */
01505 #define RCC_DFSDM1CLKSOURCE_D2PCLK1        RCC_DFSDM1CLKSOURCE_CDPCLK1
01506 #define RCC_DFSDM1CLKSOURCE_SYS            RCC_CDCCIP1R_DFSDM1SEL
01507 #endif /* RCC_D2CCIP1R_DFSDM1SEL */
01508 /**
01509   * @}
01510   */
01511 
01512 #if defined(DFSDM2_BASE)
01513 /** @defgroup RCCEx_DFSDM2_Clock_Source  RCCEx DFSDM2 Clock Source
01514   * @{
01515   */
01516 #define RCC_DFSDM2CLKSOURCE_SRDPCLK4       (0x00000000U)
01517 /* alias */
01518 #define RCC_DFSDM2CLKSOURCE_SRDPCLK1       RCC_DFSDM2CLKSOURCE_SRDPCLK4
01519 #define RCC_DFSDM2CLKSOURCE_SYS            RCC_SRDCCIPR_DFSDM2SEL
01520 /**
01521   * @}
01522   */
01523 #endif /* DFSDM2 */
01524 
01525 /** @defgroup RCCEx_SPDIFRX_Clock_Source  RCCEx SPDIFRX Clock Source
01526   * @{
01527   */
01528 #if defined(RCC_D2CCIP1R_SPDIFSEL_0)
01529 #define RCC_SPDIFRXCLKSOURCE_PLL        (0x00000000U)
01530 #define RCC_SPDIFRXCLKSOURCE_PLL2       RCC_D2CCIP1R_SPDIFSEL_0
01531 #define RCC_SPDIFRXCLKSOURCE_PLL3       RCC_D2CCIP1R_SPDIFSEL_1
01532 #define RCC_SPDIFRXCLKSOURCE_HSI        RCC_D2CCIP1R_SPDIFSEL
01533 #else
01534 #define RCC_SPDIFRXCLKSOURCE_PLL        (0x00000000U)
01535 #define RCC_SPDIFRXCLKSOURCE_PLL2       RCC_CDCCIP1R_SPDIFSEL_0
01536 #define RCC_SPDIFRXCLKSOURCE_PLL3       RCC_CDCCIP1R_SPDIFSEL_1
01537 #define RCC_SPDIFRXCLKSOURCE_HSI        RCC_CDCCIP1R_SPDIFSEL
01538 #endif /* RCC_D2CCIP1R_SPDIFSEL_0 */
01539 /**
01540   * @}
01541   */
01542 
01543 /** @defgroup RCCEx_CEC_Clock_Source  RCCEx CEC Clock Source
01544   * @{
01545   */
01546 #if defined(RCC_D2CCIP2R_CECSEL_0)
01547 #define RCC_CECCLKSOURCE_LSE        (0x00000000U)
01548 #define RCC_CECCLKSOURCE_LSI         RCC_D2CCIP2R_CECSEL_0
01549 #define RCC_CECCLKSOURCE_CSI         RCC_D2CCIP2R_CECSEL_1
01550 #else
01551 #define RCC_CECCLKSOURCE_LSE        (0x00000000U)
01552 #define RCC_CECCLKSOURCE_LSI         RCC_CDCCIP2R_CECSEL_0
01553 #define RCC_CECCLKSOURCE_CSI         RCC_CDCCIP2R_CECSEL_1
01554 #endif /* RCC_D2CCIP2R_CECSEL_0 */
01555 /**
01556   * @}
01557   */
01558 
01559 
01560 /** @defgroup RCCEx_CLKP_Clock_Source  RCCEx CLKP Clock Source
01561   * @{
01562   */
01563 #if defined(RCC_D1CCIPR_CKPERSEL_0)
01564 #define RCC_CLKPSOURCE_HSI        (0x00000000U)
01565 #define RCC_CLKPSOURCE_CSI         RCC_D1CCIPR_CKPERSEL_0
01566 #define RCC_CLKPSOURCE_HSE         RCC_D1CCIPR_CKPERSEL_1
01567 #else
01568 #define RCC_CLKPSOURCE_HSI        (0x00000000U)
01569 #define RCC_CLKPSOURCE_CSI         RCC_CDCCIPR_CKPERSEL_0
01570 #define RCC_CLKPSOURCE_HSE         RCC_CDCCIPR_CKPERSEL_1
01571 #endif /* RCC_D1CCIPR_CKPERSEL_0 */
01572 /**
01573   * @}
01574   */
01575 
01576 /** @defgroup RCCEx_TIM_Prescaler_Selection RCCEx TIM Prescaler Selection
01577   * @{
01578   */
01579 #define RCC_TIMPRES_DESACTIVATED        (0x00000000U)
01580 #define RCC_TIMPRES_ACTIVATED            RCC_CFGR_TIMPRE
01581 
01582 /**
01583   * @}
01584   */
01585 
01586 #if defined(DUAL_CORE)
01587 
01588 /** @defgroup RCCEx_RCC_BootCx RCCEx RCC BootCx
01589   * @{
01590   */
01591 #define RCC_BOOT_C1        RCC_GCR_BOOT_C1
01592 #define RCC_BOOT_C2        RCC_GCR_BOOT_C2
01593 
01594 /**
01595   * @}
01596   */
01597 #endif /*DUAL_CORE*/
01598 
01599 #if defined(DUAL_CORE)
01600 /** @defgroup RCCEx_RCC_WWDGx  RCCEx RCC WWDGx
01601   * @{
01602   */
01603 #define RCC_WWDG1        RCC_GCR_WW1RSC
01604 #define RCC_WWDG2        RCC_GCR_WW2RSC
01605 
01606 /**
01607   * @}
01608   */
01609 
01610 #else
01611 
01612 /** @defgroup RCCEx_RCC_WWDGx  RCCEx RCC WWDGx
01613   * @{
01614   */
01615 #define RCC_WWDG1        RCC_GCR_WW1RSC
01616 
01617 /**
01618   * @}
01619   */
01620 
01621 #endif /*DUAL_CORE*/
01622 
01623 /** @defgroup RCCEx_EXTI_LINE_LSECSS  RCC LSE CSS external interrupt line
01624   * @{
01625   */
01626 #define RCC_EXTI_LINE_LSECSS           EXTI_IMR1_IM18        /*!< External interrupt line 18 connected to the LSE CSS EXTI Line */
01627 /**
01628   * @}
01629   */
01630 
01631 /** @defgroup RCCEx_CRS_Status RCCEx CRS Status
01632   * @{
01633   */
01634 #define RCC_CRS_NONE                   (0x00000000U)
01635 #define RCC_CRS_TIMEOUT                (0x00000001U)
01636 #define RCC_CRS_SYNCOK                 (0x00000002U)
01637 #define RCC_CRS_SYNCWARN               (0x00000004U)
01638 #define RCC_CRS_SYNCERR                (0x00000008U)
01639 #define RCC_CRS_SYNCMISS               (0x00000010U)
01640 #define RCC_CRS_TRIMOVF                (0x00000020U)
01641 /**
01642   * @}
01643   */
01644 
01645 /** @defgroup RCCEx_CRS_SynchroSource RCCEx CRS SynchroSource
01646   * @{
01647   */
01648 #define RCC_CRS_SYNC_SOURCE_PIN       (0x00000000U)                            /*!< Synchro Signal source external pin, Available on STM32H7 Rev.B and above devices only */
01649 #define RCC_CRS_SYNC_SOURCE_LSE        CRS_CFGR_SYNCSRC_0                      /*!< Synchro Signal source LSE */
01650 #define RCC_CRS_SYNC_SOURCE_USB1       CRS_CFGR_SYNCSRC_1                      /*!< Synchro Signal source USB1 SOF (default) */
01651 #define RCC_CRS_SYNC_SOURCE_USB2      (CRS_CFGR_SYNCSRC_1|CRS_CFGR_SYNCSRC_0)  /*!< Synchro Signal source USB2 SOF */
01652 
01653 
01654 /**
01655   * @}
01656   */
01657 
01658 /** @defgroup RCCEx_CRS_SynchroDivider RCCEx CRS SynchroDivider
01659   * @{
01660   */
01661 #define RCC_CRS_SYNC_DIV1        (0x00000000U)           /*!< Synchro Signal not divided (default) */
01662 #define RCC_CRS_SYNC_DIV2        CRS_CFGR_SYNCDIV_0                         /*!< Synchro Signal divided by 2 */
01663 #define RCC_CRS_SYNC_DIV4        CRS_CFGR_SYNCDIV_1                         /*!< Synchro Signal divided by 4 */
01664 #define RCC_CRS_SYNC_DIV8        (CRS_CFGR_SYNCDIV_1 | CRS_CFGR_SYNCDIV_0)  /*!< Synchro Signal divided by 8 */
01665 #define RCC_CRS_SYNC_DIV16       CRS_CFGR_SYNCDIV_2                        /*!< Synchro Signal divided by 16 */
01666 #define RCC_CRS_SYNC_DIV32       (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 32 */
01667 #define RCC_CRS_SYNC_DIV64       (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_1) /*!< Synchro Signal divided by 64 */
01668 #define RCC_CRS_SYNC_DIV128      CRS_CFGR_SYNCDIV                         /*!< Synchro Signal divided by 128 */
01669 /**
01670   * @}
01671   */
01672 
01673 /** @defgroup RCCEx_CRS_SynchroPolarity RCCEx CRS SynchroPolarity
01674   * @{
01675   */
01676 #define RCC_CRS_SYNC_POLARITY_RISING   (0x00000000U) /*!< Synchro Active on rising edge (default) */
01677 #define RCC_CRS_SYNC_POLARITY_FALLING  CRS_CFGR_SYNCPOL        /*!< Synchro Active on falling edge */
01678 /**
01679   * @}
01680   */
01681 
01682 /** @defgroup RCCEx_CRS_ReloadValueDefault RCCEx CRS ReloadValueDefault
01683   * @{
01684   */
01685 #define RCC_CRS_RELOADVALUE_DEFAULT    (0x0000BB7FU) /*!< The reset value of the RELOAD field corresponds
01686                                                                     to a target frequency of 48 MHz and a synchronization signal frequency of 1 kHz (SOF signal from USB). */
01687 /**
01688   * @}
01689   */
01690 
01691 /** @defgroup RCCEx_CRS_ErrorLimitDefault RCCEx CRS ErrorLimitDefault
01692   * @{
01693   */
01694 #define RCC_CRS_ERRORLIMIT_DEFAULT     (0x00000022U) /*!< Default Frequency error limit */
01695 /**
01696   * @}
01697   */
01698 
01699 /** @defgroup RCCEx_CRS_HSI48CalibrationDefault RCCEx CRS HSI48CalibrationDefault
01700   * @{
01701   */
01702 #define RCC_CRS_HSI48CALIBRATION_DEFAULT (0x00000020U) /*!< The default value is 32, which corresponds to the middle of the trimming interval.
01703                                                                       The trimming step is around 67 kHz between two consecutive TRIM steps. A higher TRIM value
01704                                                                       corresponds to a higher output frequency */
01705 /**
01706   * @}
01707   */
01708 
01709 /** @defgroup RCCEx_CRS_FreqErrorDirection RCCEx CRS FreqErrorDirection
01710   * @{
01711   */
01712 #define RCC_CRS_FREQERRORDIR_UP        (0x00000000U)   /*!< Upcounting direction, the actual frequency is above the target */
01713 #define RCC_CRS_FREQERRORDIR_DOWN      (CRS_ISR_FEDIR) /*!< Downcounting direction, the actual frequency is below the target */
01714 /**
01715   * @}
01716   */
01717 
01718 /** @defgroup RCCEx_CRS_Interrupt_Sources RCCEx CRS Interrupt Sources
01719   * @{
01720   */
01721 #define RCC_CRS_IT_SYNCOK              CRS_CR_SYNCOKIE       /*!< SYNC event OK */
01722 #define RCC_CRS_IT_SYNCWARN            CRS_CR_SYNCWARNIE     /*!< SYNC warning */
01723 #define RCC_CRS_IT_ERR                 CRS_CR_ERRIE          /*!< Error */
01724 #define RCC_CRS_IT_ESYNC               CRS_CR_ESYNCIE        /*!< Expected SYNC */
01725 #define RCC_CRS_IT_SYNCERR             CRS_CR_ERRIE          /*!< SYNC error */
01726 #define RCC_CRS_IT_SYNCMISS            CRS_CR_ERRIE          /*!< SYNC missed */
01727 #define RCC_CRS_IT_TRIMOVF             CRS_CR_ERRIE          /*!< Trimming overflow or underflow */
01728 
01729 /**
01730   * @}
01731   */
01732 
01733 /** @defgroup RCCEx_CRS_Flags RCCEx CRS Flags
01734   * @{
01735   */
01736 #define RCC_CRS_FLAG_SYNCOK            CRS_ISR_SYNCOKF       /*!< SYNC event OK flag     */
01737 #define RCC_CRS_FLAG_SYNCWARN          CRS_ISR_SYNCWARNF     /*!< SYNC warning flag      */
01738 #define RCC_CRS_FLAG_ERR               CRS_ISR_ERRF          /*!< Error flag        */
01739 #define RCC_CRS_FLAG_ESYNC             CRS_ISR_ESYNCF        /*!< Expected SYNC flag     */
01740 #define RCC_CRS_FLAG_SYNCERR           CRS_ISR_SYNCERR       /*!< SYNC error */
01741 #define RCC_CRS_FLAG_SYNCMISS          CRS_ISR_SYNCMISS      /*!< SYNC missed*/
01742 #define RCC_CRS_FLAG_TRIMOVF           CRS_ISR_TRIMOVF       /*!< Trimming overflow or underflow */
01743 
01744 /**
01745   * @}
01746   */
01747 
01748 /**
01749   * @}
01750   */
01751 
01752 
01753 
01754 /* Exported macro ------------------------------------------------------------*/
01755 /** @defgroup RCCEx_Exported_Macros RCCEx Exported Macros
01756   * @{
01757   */
01758 
01759 /** @brief  Macros to enable or disable PLL2.
01760   * @note   After enabling PLL2, the application software should wait on
01761   *         PLL2RDY flag to be set indicating that PLL2 clock is stable and can
01762   *         be used as kernel clock source.
01763   * @note   PLL2 is disabled by hardware when entering STOP and STANDBY modes.
01764   */
01765 #define __HAL_RCC_PLL2_ENABLE()         SET_BIT(RCC->CR, RCC_CR_PLL2ON)
01766 #define __HAL_RCC_PLL2_DISABLE()        CLEAR_BIT(RCC->CR, RCC_CR_PLL2ON)
01767 
01768 /**
01769   * @brief  Enables or disables each clock output (PLL2_P_CLK, PLL2_Q_CLK, PLL2_R_CLK)
01770   * @note   Enabling/disabling  those Clocks can be done only when the PLL2 is disabled,
01771   *         This is mainly used to save Power.
01772   * @param  __RCC_PLL2ClockOut__ Specifies the PLL2 clock to be outputted
01773   *          This parameter can be one of the following values:
01774   *            @arg RCC_PLL2_DIVP: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)
01775   *            @arg RCC_PLL2_DIVQ: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)
01776   *            @arg RCC_PLL2_DIVR: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)
01777   *
01778   * (*) : For stm32h72xxx and stm32h73xxx family lines and requires to enable the CPU_FREQ_BOOST flash option byte, 520MHZ otherwise.
01779   * (**) : For stm32h74xx and stm32h75xx family lines and requires the board to be connected on LDO regulator not SMPS, 400MHZ otherwise.
01780   * (***): For stm32h7a3xx, stm32h7b3xx and stm32h7b0xx family lines.
01781   *
01782   * @retval None
01783   */
01784 #define __HAL_RCC_PLL2CLKOUT_ENABLE(__RCC_PLL2ClockOut__)   SET_BIT(RCC->PLLCFGR, (__RCC_PLL2ClockOut__))
01785 
01786 #define __HAL_RCC_PLL2CLKOUT_DISABLE(__RCC_PLL2ClockOut__)  CLEAR_BIT(RCC->PLLCFGR, (__RCC_PLL2ClockOut__))
01787 
01788 /**
01789   * @brief  Enables or disables Fractional Part Of The Multiplication Factor of PLL2 VCO
01790   * @note   Enabling/disabling  Fractional Part can be any time  without the need to stop the PLL2
01791   * @retval None
01792   */
01793 #define __HAL_RCC_PLL2FRACN_ENABLE()   SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL2FRACEN)
01794 
01795 #define __HAL_RCC_PLL2FRACN_DISABLE()  CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL2FRACEN)
01796 
01797 /**
01798   * @brief  Macro to configures the PLL2  multiplication and division factors.
01799   * @note   This function must be used only when PLL2 is disabled.
01800   *
01801   * @param  __PLL2M__ specifies the division factor for PLL2 VCO input clock
01802   *          This parameter must be a number between 1 and 63.
01803   * @note   You have to set the PLLM parameter correctly to ensure that the VCO input
01804   *         frequency ranges from 1 to 16 MHz.
01805   *
01806   * @param  __PLL2N__ specifies the multiplication factor for PLL2 VCO output clock
01807   *          This parameter must be a number between 4 and 512 or between 8 and 420(*).
01808   * @note   You have to set the PLL2N parameter correctly to ensure that the VCO
01809   *         output frequency is between 150 and 420 MHz (when in medium VCO range) or
01810   *         between 192 and 836 MHZ or between 128 and 560 MHZ(*) (when in wide VCO range)
01811   *
01812   * @param  __PLL2P__ specifies the division factor for peripheral kernel clocks
01813   *          This parameter must be a number between 1 and 128.
01814   *
01815   * @param  __PLL2Q__ specifies the division factor for peripheral kernel clocks
01816   *          This parameter must be a number between 1 and 128.
01817   *
01818   * @param  __PLL2R__ specifies the division factor for peripheral kernel clocks
01819   *          This parameter must be a number between 1 and 128.
01820   *
01821   * @note   To insure an optimal behavior of the PLL when one of the post-divider (DIVP, DIVQ or DIVR)
01822   *         is not used, application shall clear the enable bit (DIVyEN) and assign lowest possible
01823   *         value to  __PLL2P__, __PLL2Q__ or __PLL2R__ parameters.
01824   * @retval None
01825   *
01826   *  (*) : For stm32h7a3xx and stm32h7b3xx family lines.
01827   */
01828 
01829 #define __HAL_RCC_PLL2_CONFIG(__PLL2M__, __PLL2N__, __PLL2P__, __PLL2Q__,__PLL2R__ ) \
01830                   do{ \
01831                        MODIFY_REG(RCC->PLLCKSELR, ( RCC_PLLCKSELR_DIVM2) , ( (__PLL2M__) <<12U));  \
01832                        WRITE_REG (RCC->PLL2DIVR , ( (((__PLL2N__) - 1U ) & RCC_PLL2DIVR_N2) | ((((__PLL2P__) -1U ) << 9U) & RCC_PLL2DIVR_P2) | \
01833                        ((((__PLL2Q__) -1U) << 16U) & RCC_PLL2DIVR_Q2) | ((((__PLL2R__)- 1U) << 24U) & RCC_PLL2DIVR_R2))); \
01834                     } while(0)
01835 
01836 /**
01837   * @brief  Macro to configures PLL2 clock Fractional Part Of The Multiplication Factor
01838   *
01839   * @note   These bits can be written at any time, allowing dynamic fine-tuning of the PLL2 VCO
01840   *
01841   * @param  __RCC_PLL2FRACN__ Specifies Fractional Part Of The Multiplication factor for PLL2 VCO
01842   *                           It should be a value between 0 and 8191
01843   * @note   Warning: the software has to set correctly these bits to insure that the VCO
01844   *                  output frequency is between its valid frequency range, which is:
01845   *                  192 to 836 MHz or 128 to 560 MHz(*) if PLL2VCOSEL = 0
01846   *                  150 to 420 MHz if PLL2VCOSEL = 1.
01847   *
01848   * (*) : For stm32h7a3xx and stm32h7b3xx family lines.
01849   *
01850   * @retval None
01851   */
01852 #define  __HAL_RCC_PLL2FRACN_CONFIG(__RCC_PLL2FRACN__) \
01853                  MODIFY_REG(RCC->PLL2FRACR, RCC_PLL2FRACR_FRACN2,((uint32_t)(__RCC_PLL2FRACN__) << RCC_PLL2FRACR_FRACN2_Pos))
01854 
01855 /** @brief  Macro to select  the PLL2  reference frequency range.
01856   * @param  __RCC_PLL2VCIRange__ specifies the PLL2 input frequency range
01857   *         This parameter can be one of the following values:
01858   *            @arg RCC_PLL2VCIRANGE_0: Range frequency is between 1 and 2 MHz
01859   *            @arg RCC_PLL2VCIRANGE_1: Range frequency is between 2 and 4 MHz
01860   *            @arg RCC_PLL2VCIRANGE_2: Range frequency is between 4 and 8 MHz
01861   *            @arg RCC_PLL2VCIRANGE_3: Range frequency is between 8 and 16 MHz
01862   * @retval None
01863   */
01864 #define __HAL_RCC_PLL2_VCIRANGE(__RCC_PLL2VCIRange__) \
01865                   MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL2RGE, (__RCC_PLL2VCIRange__))
01866 
01867 
01868 /** @brief  Macro to select  the PLL2  reference frequency range.
01869   * @param  __RCC_PLL2VCORange__ Specifies the PLL2 input frequency range
01870   *         This parameter can be one of the following values:
01871   *            @arg RCC_PLL2VCOWIDE: Range frequency is between 192 and 836 MHz or between 128 to 560 MHz(*)
01872   *            @arg RCC_PLL2VCOMEDIUM: Range frequency is between 150 and 420 MHz
01873   *
01874   * (*) : For stm32h7a3xx and stm32h7b3xx family lines.
01875   *
01876   * @retval None
01877   */
01878 #define __HAL_RCC_PLL2_VCORANGE(__RCC_PLL2VCORange__) \
01879                   MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL2VCOSEL, (__RCC_PLL2VCORange__))
01880 
01881 /** @brief  Macros to enable or disable the main PLL3.
01882   * @note   After enabling  PLL3, the application software should wait on
01883   *         PLL3RDY flag to be set indicating that PLL3 clock is stable and can
01884   *         be used as kernel clock source.
01885   * @note   PLL3 is disabled by hardware when entering STOP and STANDBY modes.
01886   */
01887 #define __HAL_RCC_PLL3_ENABLE()         SET_BIT(RCC->CR, RCC_CR_PLL3ON)
01888 #define __HAL_RCC_PLL3_DISABLE()        CLEAR_BIT(RCC->CR, RCC_CR_PLL3ON)
01889 
01890 /**
01891   * @brief  Enables or disables Fractional Part Of The Multiplication Factor of PLL3 VCO
01892   * @note   Enabling/disabling  Fractional Part can be any time  without the need to stop the PLL3
01893   * @retval None
01894   */
01895 #define __HAL_RCC_PLL3FRACN_ENABLE()   SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL3FRACEN)
01896 
01897 #define __HAL_RCC_PLL3FRACN_DISABLE()  CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLL3FRACEN)
01898 
01899 /**
01900   * @brief  Enables or disables each clock output (PLL3_P_CLK, PLL3_Q_CLK, PLL3_R_CLK)
01901   * @note   Enabling/disabling  those Clocks can be done only when the PLL3 is disabled,
01902   *         This is mainly used to save Power.
01903   * @param  __RCC_PLL3ClockOut__ specifies the PLL3 clock to be outputted
01904   *          This parameter can be one of the following values:
01905   *            @arg RCC_PLL3_DIVP: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)
01906   *            @arg RCC_PLL3_DIVQ: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)
01907   *            @arg RCC_PLL3_DIVR: This clock is used to generate peripherals clock up to 550MHZ(*), 480MHZ(**) or 280MHZ(***)
01908   *
01909   * (*) : For stm32h72xxx and stm32h73xxx family lines and requires to enable the CPU_FREQ_BOOST flash option byte, 520MHZ otherwise.
01910   * (**) : For stm32h74xx and stm32h75xx family lines and requires the board to be connected on LDO regulator not SMPS, 400MHZ otherwise.
01911   * (***): For stm32h7a3xx, stm32h7b3xx and stm32h7b0xx family lines.
01912   *
01913   * @retval None
01914   */
01915 #define __HAL_RCC_PLL3CLKOUT_ENABLE(__RCC_PLL3ClockOut__)   SET_BIT(RCC->PLLCFGR, (__RCC_PLL3ClockOut__))
01916 
01917 #define __HAL_RCC_PLL3CLKOUT_DISABLE(__RCC_PLL3ClockOut__)  CLEAR_BIT(RCC->PLLCFGR, (__RCC_PLL3ClockOut__))
01918 
01919 /**
01920   * @brief  Macro to configures the PLL3  multiplication and division factors.
01921   * @note   This function must be used only when PLL3 is disabled.
01922   *
01923   * @param  __PLL3M__ specifies the division factor for PLL3 VCO input clock
01924   *          This parameter must be a number between 1 and 63.
01925   * @note   You have to set the PLLM parameter correctly to ensure that the VCO input
01926   *         frequency ranges from 1 to 16 MHz.
01927   *
01928   * @param  __PLL3N__ specifies the multiplication factor for PLL3 VCO output clock
01929   *          This parameter must be a number between 4 and 512.
01930   * @note   You have to set the PLL3N parameter correctly to ensure that the VCO
01931   *         output frequency is between 150 and 420 MHz (when in medium VCO range) or
01932   *         between 192 and 836 MHZ or between 128 and 560 MHZ(*) (when in wide VCO range)
01933   *
01934   * @param  __PLL3P__ specifies the division factor for peripheral kernel clocks
01935   *          This parameter must be a number between 2 and 128 (where odd numbers not allowed)
01936   *
01937   * @param  __PLL3Q__ specifies the division factor for peripheral kernel clocks
01938   *          This parameter must be a number between 1 and 128
01939   *
01940   * @param  __PLL3R__ specifies the division factor for peripheral kernel clocks
01941   *          This parameter must be a number between 1 and 128
01942   *
01943   * @note   To insure an optimal behavior of the PLL when one of the post-divider (DIVP, DIVQ or DIVR)
01944   *         is not used, application shall clear the enable bit (DIVyEN) and assign lowest possible
01945   *         value to  __PLL3P__, __PLL3Q__ or __PLL3R__ parameters.
01946   * @retval None
01947   *
01948   *  (*) : For stm32h7a3xx and stm32h7b3xx family lines.
01949   */
01950 
01951 #define __HAL_RCC_PLL3_CONFIG(__PLL3M__, __PLL3N__, __PLL3P__, __PLL3Q__,__PLL3R__ ) \
01952                   do{ MODIFY_REG(RCC->PLLCKSELR, ( RCC_PLLCKSELR_DIVM3) , ( (__PLL3M__) <<20U));  \
01953                          WRITE_REG (RCC->PLL3DIVR , ( (((__PLL3N__) - 1U ) & RCC_PLL3DIVR_N3) | ((((__PLL3P__) -1U ) << 9U) & RCC_PLL3DIVR_P3) | \
01954                                    ((((__PLL3Q__) -1U) << 16U) & RCC_PLL3DIVR_Q3) | ((((__PLL3R__) - 1U) << 24U) & RCC_PLL3DIVR_R3))); \
01955                        } while(0)
01956 
01957 
01958 
01959 /**
01960   * @brief  Macro to configures  PLL3 clock Fractional Part of The Multiplication Factor
01961   *
01962   * @note   These bits can be written at any time, allowing dynamic fine-tuning of the PLL3 VCO
01963   *
01964   * @param  __RCC_PLL3FRACN__ specifies Fractional Part Of The Multiplication Factor for PLL3 VCO
01965   *                            It should be a value between 0 and 8191
01966   * @note   Warning: the software has to set correctly these bits to insure that the VCO
01967   *                  output frequency is between its valid frequency range, which is:
01968   *                  192 to 836 MHz or 128 to 560 MHz(*) if PLL3VCOSEL = 0
01969   *                  150 to 420 MHz if PLL3VCOSEL = 1.
01970   *
01971   * (*) : For stm32h7a3xx and stm32h7b3xx family lines.
01972   *
01973   * @retval None
01974   */
01975  #define  __HAL_RCC_PLL3FRACN_CONFIG(__RCC_PLL3FRACN__) MODIFY_REG(RCC->PLL3FRACR, RCC_PLL3FRACR_FRACN3, (uint32_t)(__RCC_PLL3FRACN__) << RCC_PLL3FRACR_FRACN3_Pos)
01976 
01977 /** @brief  Macro to select  the PLL3  reference frequency range.
01978   * @param  __RCC_PLL3VCIRange__ specifies the PLL1 input frequency range
01979   *         This parameter can be one of the following values:
01980   *            @arg RCC_PLL3VCIRANGE_0: Range frequency is between 1 and 2 MHz
01981   *            @arg RCC_PLL3VCIRANGE_1: Range frequency is between 2 and 4 MHz
01982   *            @arg RCC_PLL3VCIRANGE_2: Range frequency is between 4 and 8 MHz
01983   *            @arg RCC_PLL3VCIRANGE_3: Range frequency is between 8 and 16 MHz
01984   * @retval None
01985   */
01986 #define __HAL_RCC_PLL3_VCIRANGE(__RCC_PLL3VCIRange__) \
01987                   MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL3RGE, (__RCC_PLL3VCIRange__))
01988 
01989 
01990 /** @brief  Macro to select  the PLL3  reference frequency range.
01991   * @param  __RCC_PLL3VCORange__ specifies the PLL1 input frequency range
01992   *         This parameter can be one of the following values:
01993   *            @arg RCC_PLL3VCOWIDE: Range frequency is between 192 and 836 MHz  or between 128 to 560 MHz(*)
01994   *            @arg RCC_PLL3VCOMEDIUM: Range frequency is between 150 and 420 MHz
01995   *
01996   * (*) : For stm32h7a3xx and stm32h7b3xx family lines.
01997   *
01998   * @retval None
01999   */
02000 #define __HAL_RCC_PLL3_VCORANGE(__RCC_PLL3VCORange__) \
02001                   MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL3VCOSEL, (__RCC_PLL3VCORange__))
02002 /**
02003   * @brief  Macro to Configure the SAI1 clock source.
02004   * @param  __RCC_SAI1CLKSource__ defines the SAI1 clock source. This clock is derived
02005   *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)
02006   *          This parameter can be one of the following values:
02007   *             @arg RCC_SAI1CLKSOURCE_PLL: SAI1 clock = PLL
02008   *             @arg RCC_SAI1CLKSOURCE_PLL2: SAI1 clock = PLL2
02009   *             @arg RCC_SAI1CLKSOURCE_PLL3: SAI1 clock = PLL3
02010   *             @arg RCC_SAI1CLKSOURCE_OSC: SAI1 clock  = OSC
02011   *             @arg RCC_SAI1CLKSOURCE_PIN: SAI1 clock = External Clock
02012   * @retval None
02013   */
02014 #if defined(RCC_D2CCIP1R_SAI1SEL)
02015 #define __HAL_RCC_SAI1_CONFIG(__RCC_SAI1CLKSource__ )\
02016                   MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SAI1SEL, (__RCC_SAI1CLKSource__))
02017 #else
02018 #define __HAL_RCC_SAI1_CONFIG(__RCC_SAI1CLKSource__ )\
02019                   MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SAI1SEL, (__RCC_SAI1CLKSource__))
02020 #endif /* RCC_D2CCIP1R_SAI1SEL */
02021 
02022 /** @brief  Macro to get the SAI1 clock source.
02023   * @retval The clock source can be one of the following values:
02024   *             @arg RCC_SAI1CLKSOURCE_PLL: SAI1 clock = PLL
02025   *             @arg RCC_SAI1CLKSOURCE_PLL2: SAI1 clock = PLL2
02026   *             @arg RCC_SAI1CLKSOURCE_PLL3: SAI1 clock = PLL3
02027   *             @arg RCC_SAI1CLKSOURCE_CLKP: SAI1 clock  = CLKP
02028   *             @arg RCC_SAI1CLKSOURCE_PIN: SAI1 clock = External Clock
02029   */
02030 #if defined(RCC_D2CCIP1R_SAI1SEL)
02031 #define __HAL_RCC_GET_SAI1_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SAI1SEL)))
02032 #else
02033 #define __HAL_RCC_GET_SAI1_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SAI1SEL)))
02034 #endif /* RCC_D2CCIP1R_SAI1SEL */
02035 
02036 /**
02037   * @brief  Macro to Configure the SPDIFRX clock source.
02038   * @param  __RCC_SPDIFCLKSource__ defines the SPDIFRX clock source. This clock is derived
02039   *         from system PLL, PLL2, PLL3,  or internal OSC clock
02040   *          This parameter can be one of the following values:
02041   *             @arg RCC_SPDIFRXCLKSOURCE_PLL:  SPDIFRX clock = PLL
02042   *             @arg RCC_SPDIFRXCLKSOURCE_PLL2: SPDIFRX clock = PLL2
02043   *             @arg RCC_SPDIFRXCLKSOURCE_PLL3: SPDIFRX clock = PLL3
02044   *             @arg RCC_SPDIFRXCLKSOURCE_HSI:  SPDIFRX clock  = HSI
02045   * @retval None
02046   */
02047 #if defined(RCC_D2CCIP1R_SPDIFSEL)
02048 #define __HAL_RCC_SPDIFRX_CONFIG(__RCC_SPDIFCLKSource__ )\
02049                   MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SPDIFSEL, (__RCC_SPDIFCLKSource__))
02050 #else
02051 #define __HAL_RCC_SPDIFRX_CONFIG(__RCC_SPDIFCLKSource__ )\
02052                   MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SPDIFSEL, (__RCC_SPDIFCLKSource__))
02053 #endif /* RCC_D2CCIP1R_SPDIFSEL */
02054 
02055 /**
02056   * @brief  Macro to get the SPDIFRX clock source.
02057   * @retval None
02058   */
02059 #if defined(RCC_D2CCIP1R_SPDIFSEL)
02060 #define __HAL_RCC_GET_SPDIFRX_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SPDIFSEL)))
02061 #else
02062 #define __HAL_RCC_GET_SPDIFRX_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SPDIFSEL)))
02063 #endif /* RCC_D2CCIP1R_SPDIFSEL */
02064 
02065 #if defined(SAI3)
02066 /**
02067   * @brief  Macro to Configure the SAI2/3 clock source.
02068   * @param  __RCC_SAI23CLKSource__ defines the SAI2/3 clock source. This clock is derived
02069   *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)
02070   *          This parameter can be one of the following values:
02071   *             @arg RCC_SAI23CLKSOURCE_PLL: SAI2/3 clock = PLL
02072   *             @arg RCC_SAI23CLKSOURCE_PLL2: SAI2/3 clock = PLL2
02073   *             @arg RCC_SAI23CLKSOURCE_PLL3: SAI2/3 clock = PLL3
02074   *             @arg RCC_SAI23CLKSOURCE_CLKP: SAI2/3 clock  = CLKP
02075   *             @arg RCC_SAI23CLKSOURCE_PIN: SAI2/3 clock = External Clock
02076   * @retval None
02077   */
02078 #define __HAL_RCC_SAI23_CONFIG(__RCC_SAI23CLKSource__ )\
02079                   MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SAI23SEL, (__RCC_SAI23CLKSource__))
02080 
02081 /** @brief  Macro to get the SAI2/3 clock source.
02082   * @retval The clock source can be one of the following values:
02083   *             @arg RCC_SAI23CLKSOURCE_PLL: SAI2/3 clock = PLL
02084   *             @arg RCC_SAI23CLKSOURCE_PLL2: SAI2/3 clock = PLL2
02085   *             @arg RCC_SAI23CLKSOURCE_PLL3: SAI2/3 clock = PLL3
02086   *             @arg RCC_SAI23CLKSOURCE_CLKP: SAI2/3 clock  = CLKP
02087   *             @arg RCC_SAI23CLKSOURCE_PIN: SAI2/3 clock = External Clock
02088   */
02089 #define __HAL_RCC_GET_SAI23_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SAI23SEL)))
02090 
02091 /**
02092   * @brief  Macro to Configure the SAI2 clock source.
02093   * @param  __RCC_SAI2CLKSource__ defines the SAI2 clock source. This clock is derived
02094   *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)
02095   *          This parameter can be one of the following values:
02096   *             @arg RCC_SAI2CLKSOURCE_PLL: SAI2 clock = PLL
02097   *             @arg RCC_SAI2CLKSOURCE_PLL2: SAI2 clock = PLL2
02098   *             @arg RCC_SAI2CLKSOURCE_PLL3: SAI2 clock = PLL3
02099   *             @arg RCC_SAI2CLKSOURCE_CLKP: SAI2 clock  = CLKP
02100   *             @arg RCC_SAI2CLKSOURCE_PIN: SAI2 clock = External Clock
02101   * @retval None
02102   */
02103 #define __HAL_RCC_SAI2_CONFIG  __HAL_RCC_SAI23_CONFIG
02104 
02105 /** @brief  Macro to get the SAI2 clock source.
02106   * @retval The clock source can be one of the following values:
02107   *             @arg RCC_SAI2CLKSOURCE_PLL: SAI2 clock = PLL
02108   *             @arg RCC_SAI2CLKSOURCE_PLL2: SAI2 clock = PLL2
02109   *             @arg RCC_SAI2CLKSOURCE_PLL3: SAI2 clock = PLL3
02110   *             @arg RCC_SAI2CLKSOURCE_CLKP: SAI2 clock  = CLKP
02111   *             @arg RCC_SAI2CLKSOURCE_PIN: SAI2 clock = External Clock
02112   */
02113 #define __HAL_RCC_GET_SAI2_SOURCE  __HAL_RCC_GET_SAI23_SOURCE
02114 
02115 /**
02116   * @brief  Macro to Configure the SAI3 clock source.
02117   * @param  __RCC_SAI3CLKSource__ defines the SAI3 clock source. This clock is derived
02118   *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)
02119   *          This parameter can be one of the following values:
02120   *             @arg RCC_SAI3CLKSOURCE_PLL: SAI3 clock = PLL
02121   *             @arg RCC_SAI3CLKSOURCE_PLL2: SAI3 clock = PLL2
02122   *             @arg RCC_SAI3CLKSOURCE_PLL3: SAI3 clock = PLL3
02123   *             @arg RCC_SAI3CLKSOURCE_CLKP: SAI3 clock  = CLKP
02124   *             @arg RCC_SAI3CLKSOURCE_PIN: SAI3 clock = External Clock
02125   * @retval None
02126   */
02127 #define __HAL_RCC_SAI3_CONFIG __HAL_RCC_SAI23_CONFIG
02128 
02129 /** @brief  Macro to get the SAI3 clock source.
02130   * @retval The clock source can be one of the following values:
02131   *             @arg RCC_SAI3CLKSOURCE_PLL: SAI3 clock = PLL
02132   *             @arg RCC_SAI3CLKSOURCE_PLL2: SAI3 clock = PLL2
02133   *             @arg RCC_SAI3CLKSOURCE_PLL3: SAI3 clock = PLL3
02134   *             @arg RCC_SAI3CLKSOURCE_CLKP: SAI3 clock  = CLKP
02135   *             @arg RCC_SAI3CLKSOURCE_PIN: SAI3 clock = External Clock
02136   */
02137 #define __HAL_RCC_GET_SAI3_SOURCE  __HAL_RCC_GET_SAI23_SOURCE
02138 #endif /* SAI3 */
02139 
02140 #if defined(RCC_CDCCIP1R_SAI2ASEL)
02141 /**
02142   * @brief  Macro to Configure the SAI2A clock source.
02143   * @param  __RCC_SAI2ACLKSource__ defines the SAI2A clock source. This clock is derived
02144   *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)
02145   *          This parameter can be one of the following values:
02146   *             @arg RCC_SAI2ACLKSOURCE_PLL: SAI2A clock = PLL
02147   *             @arg RCC_SAI2ACLKSOURCE_PLL2: SAI2A clock = PLL2
02148   *             @arg RCC_SAI2ACLKSOURCE_PLL3: SAI2A clock = PLL3
02149   *             @arg RCC_SAI2ACLKSOURCE_CLKP: SAI2A clock  = CLKP
02150   *             @arg RCC_SAI2ACLKSOURCE_PIN: SAI2A clock = External Clock
02151   *             @arg RCC_SAI2ACLKSOURCE_SPDIF: SAI2A clock = SPDIF Clock
02152   * @retval None
02153   */
02154 #define __HAL_RCC_SAI2A_CONFIG(__RCC_SAI2ACLKSource__ )\
02155                   MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SAI2ASEL, (__RCC_SAI2ACLKSource__))
02156 
02157 /** @brief  Macro to get the SAI2A clock source.
02158   * @retval The clock source can be one of the following values:
02159   *             @arg RCC_SAI2CLKSOURCE_PLL: SAI2A clock = PLL
02160   *             @arg RCC_SAI2CLKSOURCE_PLL2: SAI2A clock = PLL2
02161   *             @arg RCC_SAI2CLKSOURCE_PLL3: SAI2A clock = PLL3
02162   *             @arg RCC_SAI2CLKSOURCE_CLKP: SAI2A clock  = CLKP
02163   *             @arg RCC_SAI2CLKSOURCE_PIN: SAI2A clock = External Clock
02164   *             @arg RCC_SAI2ACLKSOURCE_SPDIF: SAI2A clock = SPDIF Clock
02165   */
02166 #define __HAL_RCC_GET_SAI2A_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SAI2ASEL)))
02167 #endif /* defined(RCC_CDCCIP1R_SAI2ASEL) */
02168 
02169 #if defined(RCC_CDCCIP1R_SAI2BSEL)
02170 /**
02171   * @brief  Macro to Configure the SAI2B clock source.
02172   * @param  __RCC_SAI2BCLKSource__ defines the SAI2B clock source. This clock is derived
02173   *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)
02174   *          This parameter can be one of the following values:
02175   *             @arg RCC_SAI2BCLKSOURCE_PLL: SAI2B clock = PLL
02176   *             @arg RCC_SAI2BCLKSOURCE_PLL2: SAI2B clock = PLL2
02177   *             @arg RCC_SAI2BCLKSOURCE_PLL3: SAI2B clock = PLL3
02178   *             @arg RCC_SAI2BCLKSOURCE_CLKP: SAI2B clock  = CLKP
02179   *             @arg RCC_SAI2BCLKSOURCE_PIN: SAI2B clock = External Clock
02180   *             @arg RCC_SAI2BCLKSOURCE_SPDIF: SAI2B clock = SPDIF Clock
02181   * @retval None
02182   */
02183 #define __HAL_RCC_SAI2B_CONFIG(__RCC_SAI2BCLKSource__ )\
02184                   MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SAI2BSEL, (__RCC_SAI2BCLKSource__))
02185 
02186 /** @brief  Macro to get the SAI2B clock source.
02187   * @retval The clock source can be one of the following values:
02188   *             @arg RCC_SAI2BCLKSOURCE_PLL: SAI2B clock = PLL
02189   *             @arg RCC_SAI2BCLKSOURCE_PLL2: SAI2B clock = PLL2
02190   *             @arg RCC_SAI2BCLKSOURCE_PLL3: SAI2B clock = PLL3
02191   *             @arg RCC_SAI2BCLKSOURCE_CLKP: SAI2B clock  = CLKP
02192   *             @arg RCC_SAI2BCLKSOURCE_PIN: SAI2B clock = External Clock
02193   *             @arg RCC_SAI2BCLKSOURCE_SPDIF: SAI2B clock = SPDIF Clock
02194   */
02195 #define __HAL_RCC_GET_SAI2B_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SAI2BSEL)))
02196 #endif /* defined(RCC_CDCCIP1R_SAI2BSEL) */
02197 
02198 
02199 #if defined(SAI4_Block_A)
02200 /**
02201   * @brief  Macro to Configure the SAI4A clock source.
02202   * @param  __RCC_SAI4ACLKSource__ defines the SAI4A clock source. This clock is derived
02203   *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)
02204   *          This parameter can be one of the following values:
02205   *             @arg RCC_SAI4ACLKSOURCE_PLL: SAI4A clock = PLL
02206   *             @arg RCC_SAI4ACLKSOURCE_PLL2: SAI4A clock = PLL2
02207   *             @arg RCC_SAI4ACLKSOURCE_PLL3: SAI4A clock = PLL3
02208   *             @arg RCC_SAI4ACLKSOURCE_CLKP: SAI4A clock  = CLKP
02209   *             @arg RCC_SAI4ACLKSOURCE_PIN: SAI4A clock = External Clock
02210   * @retval None
02211   */
02212 #define __HAL_RCC_SAI4A_CONFIG(__RCC_SAI4ACLKSource__ )\
02213                   MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_SAI4ASEL, (__RCC_SAI4ACLKSource__))
02214 
02215 /** @brief  Macro to get the SAI4A clock source.
02216   * @retval The clock source can be one of the following values:
02217   *             @arg RCC_SAI4ACLKSOURCE_PLL: SAI4B clock = PLL
02218   *             @arg RCC_SAI4ACLKSOURCE_PLL2: SAI4B clock = PLL2
02219   *             @arg RCC_SAI4ACLKSOURCE_PLL3: SAI4B clock = PLL3
02220   *             @arg RCC_SAI4ACLKSOURCE_CLKP: SAI4B clock  = CLKP
02221   *             @arg RCC_SAI4ACLKSOURCE_PIN: SAI4B clock = External Clock
02222   */
02223 #define __HAL_RCC_GET_SAI4A_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_SAI4ASEL)))
02224 #endif /* SAI4_Block_A */
02225 
02226 #if defined(SAI4_Block_B)
02227 /**
02228   * @brief  Macro to Configure the SAI4B clock source.
02229   * @param  __RCC_SAI4BCLKSource__ defines the SAI4B clock source. This clock is derived
02230   *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)
02231   *          This parameter can be one of the following values:
02232   *             @arg RCC_SAI4BCLKSOURCE_PLL: SAI4B clock = PLL
02233   *             @arg RCC_SAI4BCLKSOURCE_PLL2: SAI4B clock = PLL2
02234   *             @arg RCC_SAI4BCLKSOURCE_PLL3: SAI4B clock = PLL3
02235   *             @arg RCC_SAI4BCLKSOURCE_CLKP: SAI4B clock  = CLKP
02236   *             @arg RCC_SAI4BCLKSOURCE_PIN: SAI4B clock = External Clock
02237   * @retval None
02238   */
02239 #define __HAL_RCC_SAI4B_CONFIG(__RCC_SAI4BCLKSource__ )\
02240                   MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_SAI4BSEL, (__RCC_SAI4BCLKSource__))
02241 
02242 /** @brief  Macro to get the SAI4B clock source.
02243   * @retval The clock source can be one of the following values:
02244   *             @arg RCC_SAI4BCLKSOURCE_PLL: SAI4B clock = PLL
02245   *             @arg RCC_SAI4BCLKSOURCE_PLL2: SAI4B clock = PLL2
02246   *             @arg RCC_SAI4BCLKSOURCE_PLL3: SAI4B clock = PLL3
02247   *             @arg RCC_SAI4BCLKSOURCE_CLKP: SAI4B clock  = CLKP
02248   *             @arg RCC_SAI4BCLKSOURCE_PIN: SAI4B clock = External Clock
02249   */
02250 #define __HAL_RCC_GET_SAI4B_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_SAI4BSEL)))
02251 #endif /* SAI4_Block_B */
02252 
02253 /** @brief macro to configure the I2C1/2/3/5* clock (I2C123CLK).
02254   *
02255   * @param  __I2C1235CLKSource__ specifies the I2C1/2/3/5* clock source.
02256   *          This parameter can be one of the following values:
02257   *            @arg RCC_I2C123CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C1/2/3/5* clock
02258   *            @arg RCC_I2C123CLKSOURCE_PLL3: PLL3 selected as I2C1/2/3/5* clock
02259   *            @arg RCC_I2C123CLKSOURCE_HSI: HSI selected as I2C1/2/3/5* clock
02260   *            @arg RCC_I2C123CLKSOURCE_CSI: CSI selected as I2C1/2/3/5* clock
02261   *
02262   * (**): Available on stm32h72xxx and stm32h73xxx family lines.
02263   */
02264 #if defined(RCC_D2CCIP2R_I2C123SEL)
02265 #define __HAL_RCC_I2C123_CONFIG(__I2C1235CLKSource__) \
02266                   MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_I2C123SEL, (uint32_t)(__I2C1235CLKSource__))
02267 #elif defined(RCC_CDCCIP2R_I2C123SEL)
02268 #define __HAL_RCC_I2C123_CONFIG(__I2C1235CLKSource__) \
02269                   MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_I2C123SEL, (uint32_t)(__I2C1235CLKSource__))
02270 #else /* RCC_D2CCIP2R_I2C1235SEL */
02271 #define __HAL_RCC_I2C1235_CONFIG(__I2C1235CLKSource__) \
02272                   MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_I2C1235SEL, (uint32_t)(__I2C1235CLKSource__))
02273 /* alias */
02274 #define __HAL_RCC_I2C123_CONFIG  __HAL_RCC_I2C1235_CONFIG
02275 #endif /* RCC_D2CCIP2R_I2C123SEL */
02276 
02277 /** @brief  macro to get the I2C1/2/3/5* clock source.
02278   * @retval The clock source can be one of the following values:
02279   *            @arg RCC_I2C123CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C1/2/3/5* clock
02280   *            @arg RCC_I2C123CLKSOURCE_PLL3: PLL3 selected as I2C1/2/3/5* clock
02281   *            @arg RCC_I2C123CLKSOURCE_HSI: HSI selected as I2C1/2/3/5* clock
02282   *            @arg RCC_I2C123CLKSOURCE_CSI: CSI selected as I2C1/2/3/5* clock
02283   *
02284   * (**): Available on stm32h72xxx and stm32h73xxx family lines.
02285   */
02286 #if defined(RCC_D2CCIP2R_I2C123SEL)
02287 #define __HAL_RCC_GET_I2C123_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_I2C123SEL)))
02288 #elif defined(RCC_CDCCIP2R_I2C123SEL)
02289 #define __HAL_RCC_GET_I2C123_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_I2C123SEL)))
02290 #else /* RCC_D2CCIP2R_I2C1235SEL */
02291 #define __HAL_RCC_GET_I2C1235_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_I2C1235SEL)))
02292 /* alias */
02293 #define __HAL_RCC_GET_I2C123_SOURCE  __HAL_RCC_GET_I2C1235_SOURCE
02294 #endif /* RCC_D2CCIP2R_I2C123SEL */
02295 
02296 /** @brief macro to configure the I2C1 clock (I2C1CLK).
02297   *
02298   * @param  __I2C1CLKSource__ specifies the I2C1 clock source.
02299   *          This parameter can be one of the following values:
02300   *            @arg RCC_I2C1CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C1 clock
02301   *            @arg RCC_I2C1CLKSOURCE_PLL3: PLL3 selected as I2C1 clock
02302   *            @arg RCC_I2C1CLKSOURCE_HSI: HSI selected as I2C1 clock
02303   *            @arg RCC_I2C1CLKSOURCE_CSI: CSI selected as I2C1 clock
02304   */
02305 #if defined(I2C5)
02306 #define __HAL_RCC_I2C1_CONFIG  __HAL_RCC_I2C1235_CONFIG
02307 #else
02308 #define __HAL_RCC_I2C1_CONFIG  __HAL_RCC_I2C123_CONFIG
02309 #endif /*I2C5*/
02310 
02311 /** @brief  macro to get the I2C1 clock source.
02312   * @retval The clock source can be one of the following values:
02313   *            @arg RCC_I2C1CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C1 clock
02314   *            @arg RCC_I2C1CLKSOURCE_PLL3: PLL3 selected as I2C1 clock
02315   *            @arg RCC_I2C1CLKSOURCE_HSI: HSI selected as I2C1 clock
02316   *            @arg RCC_I2C1CLKSOURCE_CSI: CSI selected as I2C1 clock
02317   */
02318 #if defined(I2C5)
02319 #define __HAL_RCC_GET_I2C1_SOURCE __HAL_RCC_GET_I2C1235_SOURCE
02320 #else
02321 #define __HAL_RCC_GET_I2C1_SOURCE __HAL_RCC_GET_I2C123_SOURCE
02322 #endif /*I2C5*/
02323 
02324 /** @brief macro to configure the I2C2 clock (I2C2CLK).
02325   *
02326   * @param  __I2C2CLKSource__ specifies the I2C2 clock source.
02327   *          This parameter can be one of the following values:
02328   *            @arg RCC_I2C2CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C2 clock
02329   *            @arg RCC_I2C2CLKSOURCE_PLL3: PLL3 selected as I2C2 clock
02330   *            @arg RCC_I2C2CLKSOURCE_HSI: HSI selected as I2C2 clock
02331   *            @arg RCC_I2C2CLKSOURCE_CSI: CSI selected as I2C2 clock
02332   */
02333 #if defined(I2C5)
02334 #define __HAL_RCC_I2C2_CONFIG __HAL_RCC_I2C1235_CONFIG
02335 #else
02336 #define __HAL_RCC_I2C2_CONFIG __HAL_RCC_I2C123_CONFIG
02337 #endif /*I2C5*/
02338 
02339 /** @brief  macro to get the I2C2 clock source.
02340   * @retval The clock source can be one of the following values:
02341   *            @arg RCC_I2C2CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C2 clock
02342   *            @arg RCC_I2C2CLKSOURCE_PLL3: PLL3 selected as I2C2 clock
02343   *            @arg RCC_I2C2CLKSOURCE_HSI: HSI selected as I2C2 clock
02344   *            @arg RCC_I2C2CLKSOURCE_CSI: CSI selected as I2C2 clock
02345   */
02346 #if defined(I2C5)
02347 #define __HAL_RCC_GET_I2C2_SOURCE __HAL_RCC_GET_I2C1235_SOURCE
02348 #else
02349 #define __HAL_RCC_GET_I2C2_SOURCE __HAL_RCC_GET_I2C123_SOURCE
02350 #endif /*I2C5*/
02351 
02352 /** @brief macro to configure the I2C3 clock (I2C3CLK).
02353   *
02354   * @param  __I2C3CLKSource__ specifies the I2C3 clock source.
02355   *          This parameter can be one of the following values:
02356   *            @arg RCC_I2C3CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C3 clock
02357   *            @arg RCC_I2C3CLKSOURCE_PLL3: PLL3 selected as I2C3 clock
02358   *            @arg RCC_I2C3CLKSOURCE_HSI: HSI selected as I2C3 clock
02359   *            @arg RCC_I2C3CLKSOURCE_CSI: CSI selected as I2C3 clock
02360   */
02361 #if defined(I2C5)
02362 #define __HAL_RCC_I2C3_CONFIG __HAL_RCC_I2C1235_CONFIG
02363 #else
02364 #define __HAL_RCC_I2C3_CONFIG __HAL_RCC_I2C123_CONFIG
02365 #endif /*I2C5*/
02366 
02367 /** @brief  macro to get the I2C3 clock source.
02368   * @retval The clock source can be one of the following values:
02369   *            @arg RCC_I2C3CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C3 clock
02370   *            @arg RCC_I2C3CLKSOURCE_PLL3: PLL3 selected as I2C3 clock
02371   *            @arg RCC_I2C3CLKSOURCE_HSI: HSI selected as I2C3 clock
02372   *            @arg RCC_I2C3CLKSOURCE_CSI: CSI selected as I2C3 clock
02373   */
02374 #if defined(I2C5)
02375 #define __HAL_RCC_GET_I2C3_SOURCE __HAL_RCC_GET_I2C1235_SOURCE
02376 #else
02377 #define __HAL_RCC_GET_I2C3_SOURCE __HAL_RCC_GET_I2C123_SOURCE
02378 #endif /*I2C5*/
02379 
02380 /** @brief macro to configure the I2C4 clock (I2C4CLK).
02381   *
02382   * @param  __I2C4CLKSource__ specifies the I2C4 clock source.
02383   *          This parameter can be one of the following values:
02384   *            @arg RCC_I2C4CLKSOURCE_D3PCLK1: D3PCLK1 selected as I2C4 clock
02385   *            @arg RCC_I2C4CLKSOURCE_PLL3: PLL3 selected as I2C4 clock
02386   *            @arg RCC_I2C4CLKSOURCE_HSI: HSI selected as I2C4 clock
02387   *            @arg RCC_I2C4CLKSOURCE_CSI: CSI selected as I2C4 clock
02388   */
02389 #if defined(RCC_D3CCIPR_I2C4SEL)
02390 #define __HAL_RCC_I2C4_CONFIG(__I2C4CLKSource__) \
02391                   MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_I2C4SEL, (uint32_t)(__I2C4CLKSource__))
02392 #else
02393 #define __HAL_RCC_I2C4_CONFIG(__I2C4CLKSource__) \
02394                   MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_I2C4SEL, (uint32_t)(__I2C4CLKSource__))
02395 #endif /* RCC_D3CCIPR_I2C4SEL */
02396 
02397 /** @brief  macro to get the I2C4 clock source.
02398   * @retval The clock source can be one of the following values:
02399   *            @arg RCC_I2C4CLKSOURCE_D3PCLK1: D3PCLK1 selected as I2C4 clock
02400   *            @arg RCC_I2C4CLKSOURCE_PLL3: PLL3 selected as I2C4 clock
02401   *            @arg RCC_I2C4CLKSOURCE_HSI: HSI selected as I2C4 clock
02402   *            @arg RCC_I2C4CLKSOURCE_CSI: CSI selected as I2C4 clock
02403   */
02404 #if defined(RCC_D3CCIPR_I2C4SEL)
02405 #define __HAL_RCC_GET_I2C4_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_I2C4SEL)))
02406 #else
02407 #define __HAL_RCC_GET_I2C4_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_I2C4SEL)))
02408 #endif /* RCC_D3CCIPR_I2C4SEL */
02409 
02410 #if defined(I2C5)
02411 /** @brief macro to configure the I2C5 clock (I2C5CLK).
02412   *
02413   * @param  __I2C5CLKSource__ specifies the I2C5 clock source.
02414   *          This parameter can be one of the following values:
02415   *            @arg RCC_I2C5CLKSOURCE_D2PCLK1: D2PCLK1 selected as I2C5 clock
02416   *            @arg RCC_I2C5CLKSOURCE_PLL3: PLL3 selected as I2C5 clock
02417   *            @arg RCC_I2C5CLKSOURCE_HSI: HSI selected as I2C5 clock
02418   *            @arg RCC_I2C5CLKSOURCE_CSI: CSI selected as I2C5 clock
02419   */
02420 #define __HAL_RCC_I2C5_CONFIG  __HAL_RCC_I2C1235_CONFIG
02421 #endif /* I2C5 */
02422 
02423 #if defined(I2C5)
02424 /** @brief  macro to get the I2C5 clock source.
02425   * @retval The clock source can be one of the following values:
02426   *            @arg RCC_I2C5CLKSOURCE_D2PCLK1: D2PCLK5 selected as I2C5 clock
02427   *            @arg RCC_I2C5CLKSOURCE_PLL3: PLL3 selected as I2C5 clock
02428   *            @arg RCC_I2C5CLKSOURCE_HSI: HSI selected as I2C5 clock
02429   *            @arg RCC_I2C5CLKSOURCE_CSI: CSI selected as I2C5 clock
02430   */
02431 #define __HAL_RCC_GET_I2C5_SOURCE __HAL_RCC_GET_I2C1235_SOURCE
02432 #endif /* I2C5 */
02433 
02434 /** @brief macro to configure the USART1/6/9* /10* clock (USART16CLK).
02435   *
02436   * @param  __USART16910CLKSource__ specifies the USART1/6/9* /10* clock source.
02437   *          This parameter can be one of the following values:
02438   *            @arg RCC_USART16CLKSOURCE_D2PCLK2: APB2 Clock selected as USART1/6/9* /10* clock
02439   *            @arg RCC_USART16CLKSOURCE_PLL2: PLL2_Q Clock selected as USART1/6/9* /10* clock
02440   *            @arg RCC_USART16CLKSOURCE_PLL3: PLL3_Q Clock selected as USART1/6/9* /10* clock
02441   *            @arg RCC_USART16CLKSOURCE_HSI: HSI selected as USART1/6/9* /10* clock
02442   *            @arg RCC_USART16CLKSOURCE_CSI: CSI Clock selected as USART1/6/9* /10* clock
02443   *            @arg RCC_USART16CLKSOURCE_LSE: LSE selected as USART1/6/9* /10* clock
02444   *
02445   * (*) : Available on some STM32H7 lines only.
02446   */
02447 #if defined(RCC_D2CCIP2R_USART16SEL)
02448 #define __HAL_RCC_USART16_CONFIG(__USART16910CLKSource__) \
02449                   MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_USART16SEL, (uint32_t)(__USART16910CLKSource__))
02450 #elif defined(RCC_CDCCIP2R_USART16910SEL)
02451 #define __HAL_RCC_USART16910_CONFIG(__USART16910CLKSource__) \
02452                   MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_USART16910SEL, (uint32_t)(__USART16910CLKSource__))
02453 /* alias */
02454 #define __HAL_RCC_USART16_CONFIG  __HAL_RCC_USART16910_CONFIG
02455 #else  /* RCC_D2CCIP2R_USART16910SEL */
02456 #define __HAL_RCC_USART16910_CONFIG(__USART16910CLKSource__) \
02457                   MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_USART16910SEL, (uint32_t)(__USART16910CLKSource__))
02458 /* alias */
02459 #define __HAL_RCC_USART16_CONFIG  __HAL_RCC_USART16910_CONFIG
02460 #endif /* RCC_D2CCIP2R_USART16SEL */
02461 
02462 /** @brief  macro to get the USART1/6/9* /10* clock source.
02463   * @retval The clock source can be one of the following values:
02464   *            @arg RCC_USART16CLKSOURCE_D2PCLK2: APB2 Clock selected as USART1/6/9* /10* clock
02465   *            @arg RCC_USART16CLKSOURCE_PLL2: PLL2_Q Clock selected as USART1/6/9* /10* clock
02466   *            @arg RCC_USART16CLKSOURCE_PLL3: PLL3_Q Clock selected as USART1/6/9* /10* clock
02467   *            @arg RCC_USART16CLKSOURCE_HSI: HSI selected as USART1/6/9* /10* clock
02468   *            @arg RCC_USART16CLKSOURCE_CSI: CSI Clock selected as USART1/6/9* /10* clock
02469   *            @arg RCC_USART16CLKSOURCE_LSE: LSE selected as USART1/6/9* /10* clock
02470   *
02471   * (*) : Available on some STM32H7 lines only.
02472   */
02473 #if defined(RCC_D2CCIP2R_USART16SEL)
02474 #define __HAL_RCC_GET_USART16_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_USART16SEL)))
02475 #elif defined(RCC_CDCCIP2R_USART16910SEL)
02476 #define __HAL_RCC_GET_USART16910_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_USART16910SEL)))
02477 /* alias*/
02478 #define  __HAL_RCC_GET_USART16_SOURCE  __HAL_RCC_GET_USART16910_SOURCE
02479 #else  /* RCC_D2CCIP2R_USART16910SEL */
02480 #define __HAL_RCC_GET_USART16910_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_USART16910SEL)))
02481 /* alias */
02482 #define __HAL_RCC_GET_USART16_SOURCE  __HAL_RCC_GET_USART16910_SOURCE
02483 #endif /* RCC_D2CCIP2R_USART16SEL */
02484 
02485 /** @brief macro to configure the USART234578 clock (USART234578CLK).
02486   *
02487   * @param  __USART234578CLKSource__ specifies the USART2/3/4/5/7/8 clock source.
02488   *          This parameter can be one of the following values:
02489   *            @arg RCC_USART234578CLKSOURCE_D2PCLK1: APB1 Clock selected as USART2/3/4/5/7/8 clock
02490   *            @arg RCC_USART234578CLKSOURCE_PLL2: PLL2_Q Clock selected as USART2/3/4/5/7/8 clock
02491   *            @arg RCC_USART234578CLKSOURCE_PLL3: PLL3_Q Clock selected as USART2/3/4/5/7/8 clock
02492   *            @arg RCC_USART234578CLKSOURCE_HSI: HSI selected as USART2/3/4/5/7/8 clock
02493   *            @arg RCC_USART234578CLKSOURCE_CSI: CSI Clock selected as USART2/3/4/5/7/8 clock
02494   *            @arg RCC_USART234578CLKSOURCE_LSE: LSE selected as USART2/3/4/5/7/8 clock
02495   */
02496 #if defined(RCC_D2CCIP2R_USART28SEL)
02497 #define __HAL_RCC_USART234578_CONFIG(__USART234578CLKSource__) \
02498                   MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_USART28SEL, (uint32_t)(__USART234578CLKSource__))
02499 #else
02500 #define __HAL_RCC_USART234578_CONFIG(__USART234578CLKSource__) \
02501                   MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_USART234578SEL, (uint32_t)(__USART234578CLKSource__))
02502 #endif /* RCC_D2CCIP2R_USART28SEL */
02503 
02504 /** @brief  macro to get the USART2/3/4/5/7/8 clock source.
02505   * @retval The clock source can be one of the following values:
02506   *            @arg RCC_USART234578CLKSOURCE_D2PCLK1: APB1 Clock selected as USART2/3/4/5/7/8 clock
02507   *            @arg RCC_USART234578CLKSOURCE_PLL2: PLL2_Q Clock selected as USART2/3/4/5/7/8 clock
02508   *            @arg RCC_USART234578CLKSOURCE_PLL3: PLL3_Q Clock selected as USART2/3/4/5/7/8 clock
02509   *            @arg RCC_USART234578CLKSOURCE_HSI: HSI selected as USART2/3/4/5/7/8 clock
02510   *            @arg RCC_USART234578CLKSOURCE_CSI: CSI Clock selected as USART2/3/4/5/7/8 clock
02511   *            @arg RCC_USART234578CLKSOURCE_LSE: LSE selected as USART2/3/4/5/7/8 clock
02512   */
02513 #if defined(RCC_D2CCIP2R_USART28SEL)
02514 #define __HAL_RCC_GET_USART234578_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_USART28SEL)))
02515 #else
02516 #define __HAL_RCC_GET_USART234578_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_USART234578SEL)))
02517 #endif /* RCC_D2CCIP2R_USART28SEL */
02518 
02519 /** @brief macro to configure the USART1 clock (USART1CLK).
02520   *
02521   * @param  __USART1CLKSource__ specifies the USART1 clock source.
02522   *          This parameter can be one of the following values:
02523   *            @arg RCC_USART1CLKSOURCE_D2PCLK2: APB2 Clock selected as USART1 clock
02524   *            @arg RCC_USART1CLKSOURCE_PLL2: PLL2_Q Clock selected as USART1 clock
02525   *            @arg RCC_USART1CLKSOURCE_PLL3: PLL3_Q Clock selected as USART1 clock
02526   *            @arg RCC_USART1CLKSOURCE_HSI: HSI selected as USART1 clock
02527   *            @arg RCC_USART1CLKSOURCE_CSI: CSI Clock selected as USART1 clock
02528   *            @arg RCC_USART1CLKSOURCE_LSE: LSE selected as USART1 clock
02529   */
02530 #define __HAL_RCC_USART1_CONFIG  __HAL_RCC_USART16_CONFIG
02531 
02532 /** @brief  macro to get the USART1 clock source.
02533   * @retval The clock source can be one of the following values:
02534   *            @arg RCC_USART1CLKSOURCE_D2PCLK2: APB2 Clock selected as USART1 clock
02535   *            @arg RCC_USART1CLKSOURCE_PLL2: PLL2_Q Clock selected as USART1 clock
02536   *            @arg RCC_USART1CLKSOURCE_PLL3: PLL3_Q Clock selected as USART1 clock
02537   *            @arg RCC_USART1CLKSOURCE_HSI: HSI selected as USART1 clock
02538   *            @arg RCC_USART1CLKSOURCE_CSI: CSI Clock selected as USART1 clock
02539   *            @arg RCC_USART1CLKSOURCE_LSE: LSE selected as USART1 clock
02540   */
02541 #define __HAL_RCC_GET_USART1_SOURCE  __HAL_RCC_GET_USART16_SOURCE
02542 
02543 /** @brief macro to configure the USART2 clock (USART2CLK).
02544   *
02545   * @param  __USART2CLKSource__ specifies the USART2 clock source.
02546   *          This parameter can be one of the following values:
02547   *            @arg RCC_USART2CLKSOURCE_D2PCLK1: APB1 Clock selected as USART2 clock
02548   *            @arg RCC_USART2CLKSOURCE_PLL2: PLL2_Q Clock selected as USART2 clock
02549   *            @arg RCC_USART2CLKSOURCE_PLL3: PLL3_Q Clock selected as USART2 clock
02550   *            @arg RCC_USART2CLKSOURCE_HSI: HSI selected as USART2 clock
02551   *            @arg RCC_USART2CLKSOURCE_CSI: CSI Clock selected as USART2 clock
02552   *            @arg RCC_USART2CLKSOURCE_LSE: LSE selected as USART2 clock
02553   */
02554 #define __HAL_RCC_USART2_CONFIG  __HAL_RCC_USART234578_CONFIG
02555 
02556 /** @brief  macro to get the USART2 clock source.
02557   * @retval The clock source can be one of the following values:
02558   *            @arg RCC_USART2CLKSOURCE_D2PCLK1: APB1 Clock selected as USART2 clock
02559   *            @arg RCC_USART2CLKSOURCE_PLL2: PLL2_Q Clock selected as USART2 clock
02560   *            @arg RCC_USART2CLKSOURCE_PLL3: PLL3_Q Clock selected as USART2 clock
02561   *            @arg RCC_USART2CLKSOURCE_HSI: HSI selected as USART2 clock
02562   *            @arg RCC_USART2CLKSOURCE_CSI: CSI Clock selected as USART2 clock
02563   *            @arg RCC_USART2CLKSOURCE_LSE: LSE selected as USART2 clock
02564   */
02565 #define __HAL_RCC_GET_USART2_SOURCE __HAL_RCC_GET_USART234578_SOURCE
02566 
02567 /** @brief macro to configure the USART3 clock (USART3CLK).
02568   *
02569   * @param  __USART3CLKSource__ specifies the USART3 clock source.
02570   *          This parameter can be one of the following values:
02571   *            @arg RCC_USART3CLKSOURCE_D2PCLK1: APB1 Clock selected as USART3 clock
02572   *            @arg RCC_USART3CLKSOURCE_PLL2: PLL2_Q Clock selected as USART3 clock
02573   *            @arg RCC_USART3CLKSOURCE_PLL3: PLL3_Q Clock selected as USART3 clock
02574   *            @arg RCC_USART3CLKSOURCE_HSI: HSI selected as USART3 clock
02575   *            @arg RCC_USART3CLKSOURCE_CSI: CSI Clock selected as USART3 clock
02576   *            @arg RCC_USART3CLKSOURCE_LSE: LSE selected as USART3 clock
02577   */
02578 #define __HAL_RCC_USART3_CONFIG  __HAL_RCC_USART234578_CONFIG
02579 
02580 /** @brief  macro to get the USART3 clock source.
02581   * @retval The clock source can be one of the following values:
02582   *            @arg RCC_USART2CLKSOURCE_D2PCLK1: APB1 Clock selected as USART3 clock
02583   *            @arg RCC_USART3CLKSOURCE_PLL2: PLL2_Q Clock selected as USART3 clock
02584   *            @arg RCC_USART3CLKSOURCE_PLL3: PLL3_Q Clock selected as USART3 clock
02585   *            @arg RCC_USART3CLKSOURCE_HSI: HSI selected as USART3 clock
02586   *            @arg RCC_USART3CLKSOURCE_CSI: CSI Clock selected as USART3 clock
02587   *            @arg RCC_USART3CLKSOURCE_LSE: LSE selected as USART3 clock
02588   */
02589 #define __HAL_RCC_GET_USART3_SOURCE  __HAL_RCC_GET_USART234578_SOURCE
02590 
02591 /** @brief macro to configure the UART4 clock (UART4CLK).
02592   *
02593   * @param  __UART4CLKSource__ specifies the UART4 clock source.
02594   *          This parameter can be one of the following values:
02595   *            @arg RCC_UART4CLKSOURCE_D2PCLK1: APB1 Clock selected as UART4 clock
02596   *            @arg RCC_UART4CLKSOURCE_PLL2: PLL2_Q Clock selected as UART4 clock
02597   *            @arg RCC_UART4CLKSOURCE_PLL3: PLL3_Q Clock selected as UART4 clock
02598   *            @arg RCC_UART4CLKSOURCE_HSI: HSI selected as UART4 clock
02599   *            @arg RCC_UART4CLKSOURCE_CSI: CSI Clock selected as UART4 clock
02600   *            @arg RCC_UART4CLKSOURCE_LSE: LSE selected as UART4 clock
02601   */
02602 #define __HAL_RCC_UART4_CONFIG  __HAL_RCC_USART234578_CONFIG
02603 
02604 /** @brief  macro to get the UART4 clock source.
02605   * @retval The clock source can be one of the following values:
02606   *            @arg RCC_UART4CLKSOURCE_D2PCLK1: APB1 Clock selected as UART4 clock
02607   *            @arg RCC_UART4CLKSOURCE_PLL2: PLL2_Q Clock selected as UART4 clock
02608   *            @arg RCC_UART4CLKSOURCE_PLL3: PLL3_Q Clock selected as UART4 clock
02609   *            @arg RCC_UART4CLKSOURCE_HSI: HSI selected as UART4 clock
02610   *            @arg RCC_UART4CLKSOURCE_CSI: CSI Clock selected as UART4 clock
02611   *            @arg RCC_UART4CLKSOURCE_LSE: LSE selected as UART4 clock
02612   */
02613 #define __HAL_RCC_GET_UART4_SOURCE  __HAL_RCC_GET_USART234578_SOURCE
02614 
02615 /** @brief macro to configure the UART5 clock (UART5CLK).
02616   *
02617   * @param  __UART5CLKSource__ specifies the UART5 clock source.
02618   *          This parameter can be one of the following values:
02619   *            @arg RCC_UART5CLKSOURCE_D2PCLK1: APB1 Clock selected as UART5 clock
02620   *            @arg RCC_UART5CLKSOURCE_PLL2: PLL2_Q Clock selected as UART5 clock
02621   *            @arg RCC_UART5CLKSOURCE_PLL3: PLL3_Q Clock selected as UART5 clock
02622   *            @arg RCC_UART5CLKSOURCE_HSI: HSI selected as UART5 clock
02623   *            @arg RCC_UART5CLKSOURCE_CSI: CSI Clock selected as UART5 clock
02624   *            @arg RCC_UART5CLKSOURCE_LSE: LSE selected as UART5 clock
02625   */
02626 #define __HAL_RCC_UART5_CONFIG  __HAL_RCC_USART234578_CONFIG
02627 
02628 /** @brief  macro to get the UART5 clock source.
02629   * @retval The clock source can be one of the following values:
02630   *            @arg RCC_UART5CLKSOURCE_D2PCLK1: APB1 Clock selected as UART5 clock
02631   *            @arg RCC_UART5CLKSOURCE_PLL2: PLL2_Q Clock selected as UART5 clock
02632   *            @arg RCC_UART5CLKSOURCE_PLL3: PLL3_Q Clock selected as UART5 clock
02633   *            @arg RCC_UART5CLKSOURCE_HSI: HSI selected as UART5 clock
02634   *            @arg RCC_UART5CLKSOURCE_CSI: CSI Clock selected as UART5 clock
02635   *            @arg RCC_UART5CLKSOURCE_LSE: LSE selected as UART5 clock
02636   */
02637 #define __HAL_RCC_GET_UART5_SOURCE  __HAL_RCC_GET_USART234578_SOURCE
02638 
02639 /** @brief macro to configure the USART6 clock (USART6CLK).
02640   *
02641   * @param  __USART6CLKSource__ specifies the USART6 clock source.
02642   *          This parameter can be one of the following values:
02643   *            @arg RCC_USART6CLKSOURCE_D2PCLK2: APB2 Clock selected as USART6 clock
02644   *            @arg RCC_USART6CLKSOURCE_PLL2: PLL2_Q Clock selected as USART6 clock
02645   *            @arg RCC_USART6CLKSOURCE_PLL3: PLL3_Q Clock selected as USART6 clock
02646   *            @arg RCC_USART6CLKSOURCE_HSI: HSI selected as USART6 clock
02647   *            @arg RCC_USART6CLKSOURCE_CSI: CSI Clock selected as USART6 clock
02648   *            @arg RCC_USART6CLKSOURCE_LSE: LSE selected as USART6 clock
02649   */
02650 #define __HAL_RCC_USART6_CONFIG  __HAL_RCC_USART16_CONFIG
02651 
02652 /** @brief  macro to get the USART6 clock source.
02653   * @retval The clock source can be one of the following values:
02654   *            @arg RCC_USART6CLKSOURCE_D2PCLK2: APB2 Clock selected as USART6 clock
02655   *            @arg RCC_USART6CLKSOURCE_PLL2: PLL2_Q Clock selected as USART6 clock
02656   *            @arg RCC_USART6CLKSOURCE_PLL3: PLL3_Q Clock selected as USART6 clock
02657   *            @arg RCC_USART6CLKSOURCE_HSI: HSI selected as USART6 clock
02658   *            @arg RCC_USART6CLKSOURCE_CSI: CSI Clock selected as USART6 clock
02659   *            @arg RCC_USART6CLKSOURCE_LSE: LSE selected as USART6 clock
02660   */
02661 #define __HAL_RCC_GET_USART6_SOURCE  __HAL_RCC_GET_USART16_SOURCE
02662 
02663 /** @brief macro to configure the UART5 clock (UART7CLK).
02664   *
02665   * @param  __UART7CLKSource__ specifies the UART7 clock source.
02666   *          This parameter can be one of the following values:
02667   *            @arg RCC_UART7CLKSOURCE_D2PCLK1: APB1 Clock selected as UART7 clock
02668   *            @arg RCC_UART7CLKSOURCE_PLL2: PLL2_Q Clock selected as UART7 clock
02669   *            @arg RCC_UART7CLKSOURCE_PLL3: PLL3_Q Clock selected as UART7 clock
02670   *            @arg RCC_UART7CLKSOURCE_HSI: HSI selected as UART7 clock
02671   *            @arg RCC_UART7CLKSOURCE_CSI: CSI Clock selected as UART7 clock
02672   *            @arg RCC_UART7CLKSOURCE_LSE: LSE selected as UART7 clock
02673   */
02674 #define __HAL_RCC_UART7_CONFIG  __HAL_RCC_USART234578_CONFIG
02675 
02676 /** @brief  macro to get the UART7 clock source.
02677   * @retval The clock source can be one of the following values:
02678   *            @arg RCC_UART7CLKSOURCE_D2PCLK1: APB1 Clock selected as UART7 clock
02679   *            @arg RCC_UART7CLKSOURCE_PLL2: PLL2_Q Clock selected as UART7 clock
02680   *            @arg RCC_UART7CLKSOURCE_PLL3: PLL3_Q Clock selected as UART7 clock
02681   *            @arg RCC_UART7CLKSOURCE_HSI: HSI selected as UART7 clock
02682   *            @arg RCC_UART7CLKSOURCE_CSI: CSI Clock selected as UART7 clock
02683   *            @arg RCC_UART7CLKSOURCE_LSE: LSE selected as UART7 clock
02684   */
02685 #define __HAL_RCC_GET_UART7_SOURCE  __HAL_RCC_GET_USART234578_SOURCE
02686 
02687 /** @brief macro to configure the UART8 clock (UART8CLK).
02688   *
02689   * @param  __UART8CLKSource__ specifies the UART8 clock source.
02690   *          This parameter can be one of the following values:
02691   *            @arg RCC_UART8CLKSOURCE_D2PCLK1: APB1 Clock selected as UART8 clock
02692   *            @arg RCC_UART8CLKSOURCE_PLL2: PLL2_Q Clock selected as UART8 clock
02693   *            @arg RCC_UART8CLKSOURCE_PLL3: PLL3_Q Clock selected as UART8 clock
02694   *            @arg RCC_UART8CLKSOURCE_HSI: HSI selected as UART8 clock
02695   *            @arg RCC_UART8CLKSOURCE_CSI: CSI Clock selected as UART8 clock
02696   *            @arg RCC_UART8CLKSOURCE_LSE: LSE selected as UART8 clock
02697   */
02698 #define __HAL_RCC_UART8_CONFIG  __HAL_RCC_USART234578_CONFIG
02699 
02700 /** @brief  macro to get the UART8 clock source.
02701   * @retval The clock source can be one of the following values:
02702   *            @arg RCC_UART8CLKSOURCE_D2PCLK1: APB1 Clock selected as UART8 clock
02703   *            @arg RCC_UART8CLKSOURCE_PLL2: PLL2_Q Clock selected as UART8 clock
02704   *            @arg RCC_UART8CLKSOURCE_PLL3: PLL3_Q Clock selected as UART8 clock
02705   *            @arg RCC_UART8CLKSOURCE_HSI: HSI selected as UART8 clock
02706   *            @arg RCC_UART8CLKSOURCE_CSI: CSI Clock selected as UART8 clock
02707   *            @arg RCC_UART8CLKSOURCE_LSE: LSE selected as UART8 clock
02708   */
02709 #define __HAL_RCC_GET_UART8_SOURCE  __HAL_RCC_GET_USART234578_SOURCE
02710 
02711 #if defined(UART9)
02712 /** @brief macro to configure the UART9 clock (UART9CLK).
02713   *
02714   * @param  __UART8CLKSource__ specifies the UART8 clock source.
02715   *          This parameter can be one of the following values:
02716   *            @arg RCC_UART9CLKSOURCE_D2PCLK1: APB1 Clock selected as UART9 clock
02717   *            @arg RCC_UART9CLKSOURCE_PLL2: PLL2_Q Clock selected as UART9 clock
02718   *            @arg RCC_UART9CLKSOURCE_PLL3: PLL3_Q Clock selected as UART9 clock
02719   *            @arg RCC_UART9CLKSOURCE_HSI: HSI selected as UART9 clock
02720   *            @arg RCC_UART9CLKSOURCE_CSI: CSI Clock selected as UART9 clock
02721   *            @arg RCC_UART9CLKSOURCE_LSE: LSE selected as UART9 clock
02722   */
02723 #define __HAL_RCC_UART9_CONFIG  __HAL_RCC_USART16_CONFIG
02724 
02725 /** @brief  macro to get the UART9 clock source.
02726   * @retval The clock source can be one of the following values:
02727   *            @arg RCC_UART9CLKSOURCE_D2PCLK1: APB1 Clock selected as UART99 clock
02728   *            @arg RCC_UART9CLKSOURCE_PLL2: PLL2_Q Clock selected as UART99 clock
02729   *            @arg RCC_UART9CLKSOURCE_PLL3: PLL3_Q Clock selected as UART99 clock
02730   *            @arg RCC_UART9CLKSOURCE_HSI: HSI selected as UART9 clock
02731   *            @arg RCC_UART9CLKSOURCE_CSI: CSI Clock selected as UART9 clock
02732   *            @arg RCC_UART9CLKSOURCE_LSE: LSE selected as UART9 clock
02733   */
02734 #define __HAL_RCC_GET_UART9_SOURCE  __HAL_RCC_GET_USART16_SOURCE
02735 #endif /* UART9 */
02736 
02737 #if defined(USART10)
02738 /** @brief macro to configure the USART10 clock (USART10CLK).
02739   *
02740   * @param  __UART8CLKSource__ specifies the UART8 clock source.
02741   *          This parameter can be one of the following values:
02742   *            @arg RCC_USART10CLKSOURCE_D2PCLK1: APB1 Clock selected as USART10 clock
02743   *            @arg RCC_USART10CLKSOURCE_PLL2: PLL2_Q Clock selected as USART10 clock
02744   *            @arg RCC_USART10CLKSOURCE_PLL3: PLL3_Q Clock selected as USART10 clock
02745   *            @arg RCC_USART10CLKSOURCE_HSI: HSI selected as USART10 clock
02746   *            @arg RCC_USART10CLKSOURCE_CSI: CSI Clock selected as USART10 clock
02747   *            @arg RCC_USART10CLKSOURCE_LSE: LSE selected as USART10 clock
02748   */
02749 #define __HAL_RCC_USART10_CONFIG  __HAL_RCC_USART16_CONFIG
02750 
02751 /** @brief  macro to get the USART10 clock source.
02752   * @retval The clock source can be one of the following values:
02753   *            @arg RCC_USART10CLKSOURCE_D2PCLK1: APB1 Clock selected as USART10 clock
02754   *            @arg RCC_USART10CLKSOURCE_PLL2: PLL2_Q Clock selected as USART10 clock
02755   *            @arg RCC_USART10CLKSOURCE_PLL3: PLL3_Q Clock selected as USART10 clock
02756   *            @arg RCC_USART10CLKSOURCE_HSI: HSI selected as USART10 clock
02757   *            @arg RCC_USART10CLKSOURCE_CSI: CSI Clock selected as USART10 clock
02758   *            @arg RCC_USART10CLKSOURCE_LSE: LSE selected as USART10 clock
02759   */
02760 #define __HAL_RCC_GET_USART10_SOURCE  __HAL_RCC_GET_USART16_SOURCE
02761 #endif /* USART10 */
02762 
02763 /** @brief macro to configure the LPUART1 clock (LPUART1CLK).
02764   *
02765   * @param  __LPUART1CLKSource__ specifies the LPUART1 clock source.
02766   *          This parameter can be one of the following values:
02767   *            @arg RCC_LPUART1CLKSOURCE_D3PCLK1: APB4 Clock selected as LPUART1 clock
02768   *            @arg RCC_LPUART1CLKSOURCE_PLL2: PLL2_Q Clock selected as LPUART1 clock
02769   *            @arg RCC_LPUART1CLKSOURCE_PLL3: PLL3_Q Clock selected as LPUART1 clock
02770   *            @arg RCC_LPUART1CLKSOURCE_HSI: HSI selected as LPUART1 clock
02771   *            @arg RCC_LPUART1CLKSOURCE_CSI: CSI Clock selected as LPUART1 clock
02772   *            @arg RCC_LPUART1CLKSOURCE_LSE: LSE selected as LPUART1 clock
02773   */
02774 #if defined (RCC_D3CCIPR_LPUART1SEL)
02775 #define __HAL_RCC_LPUART1_CONFIG(__LPUART1CLKSource__) \
02776                   MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_LPUART1SEL, (uint32_t)(__LPUART1CLKSource__))
02777 #else
02778 #define __HAL_RCC_LPUART1_CONFIG(__LPUART1CLKSource__) \
02779                   MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_LPUART1SEL, (uint32_t)(__LPUART1CLKSource__))
02780 #endif /* RCC_D3CCIPR_LPUART1SEL */
02781 
02782 /** @brief  macro to get the LPUART1 clock source.
02783   * @retval The clock source can be one of the following values:
02784   *            @arg RCC_LPUART1CLKSOURCE_D3PCLK1: APB4 Clock selected as LPUART1 clock
02785   *            @arg RCC_LPUART1CLKSOURCE_PLL2: PLL2_Q Clock selected as LPUART1 clock
02786   *            @arg RCC_LPUART1CLKSOURCE_PLL3: PLL3_Q Clock selected as LPUART1 clock
02787   *            @arg RCC_LPUART1CLKSOURCE_HSI: HSI selected as LPUART1 clock
02788   *            @arg RCC_LPUART1CLKSOURCE_CSI: CSI Clock selected as LPUART1 clock
02789   *            @arg RCC_LPUART1CLKSOURCE_LSE: LSE selected as LPUART1 clock
02790   */
02791 #if defined (RCC_D3CCIPR_LPUART1SEL)
02792 #define __HAL_RCC_GET_LPUART1_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_LPUART1SEL)))
02793 #else
02794 #define __HAL_RCC_GET_LPUART1_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_LPUART1SEL)))
02795 #endif /* RCC_D3CCIPR_LPUART1SEL */
02796 
02797 /** @brief  macro to configure the LPTIM1 clock source.
02798   *
02799   * @param  __LPTIM1CLKSource__ specifies the LPTIM1 clock source.
02800   *          This parameter can be one of the following values:
02801   *            @arg RCC_LPTIM1CLKSOURCE_D2PCLK1: APB1 Clock selected as LPTIM1 clock
02802   *            @arg RCC_LPTIM1CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM1 clock
02803   *            @arg RCC_LPTIM1CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM1 clock
02804   *            @arg RCC_LPTIM1CLKSOURCE_LSE: LSE selected as LPTIM1 clock
02805   *            @arg RCC_LPTIM1CLKSOURCE_LSI: LSI Clock selected as LPTIM1 clock
02806   *            @arg RCC_LPTIM1CLKSOURCE_CLKP: CLKP selected as LPTIM1 clock
02807   */
02808 #if defined(RCC_D2CCIP2R_LPTIM1SEL)
02809 #define __HAL_RCC_LPTIM1_CONFIG(__LPTIM1CLKSource__) \
02810                   MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_LPTIM1SEL, (uint32_t)(__LPTIM1CLKSource__))
02811 #else
02812 #define __HAL_RCC_LPTIM1_CONFIG(__LPTIM1CLKSource__) \
02813                   MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_LPTIM1SEL, (uint32_t)(__LPTIM1CLKSource__))
02814 #endif /* RCC_D2CCIP2R_LPTIM1SEL */
02815 
02816 /** @brief  macro to get the LPTIM1 clock source.
02817   * @retval The clock source can be one of the following values:
02818   *            @arg RCC_LPTIM1CLKSOURCE_D2PCLK1: APB1 Clock selected as LPTIM1 clock
02819   *            @arg RCC_LPTIM1CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM1 clock
02820   *            @arg RCC_LPTIM1CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM1 clock
02821   *            @arg RCC_LPTIM1CLKSOURCE_LSE: LSE selected as LPTIM1 clock
02822   *            @arg RCC_LPTIM1CLKSOURCE_LSI: LSI Clock selected as LPTIM1 clock
02823   *            @arg RCC_LPTIM1CLKSOURCE_CLKP: CLKP selected as LPTIM1 clock
02824   */
02825 #if defined(RCC_D2CCIP2R_LPTIM1SEL)
02826 #define __HAL_RCC_GET_LPTIM1_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_LPTIM1SEL)))
02827 #else
02828 #define __HAL_RCC_GET_LPTIM1_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_LPTIM1SEL)))
02829 #endif /* RCC_D2CCIP2R_LPTIM1SEL */
02830 
02831 /** @brief  macro to configure the LPTIM2 clock source.
02832   *
02833   * @param  __LPTIM2CLKSource__ specifies the LPTIM2 clock source.
02834   *          This parameter can be one of the following values:
02835   *            @arg RCC_LPTIM2CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM2 clock
02836   *            @arg RCC_LPTIM2CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM2 clock
02837   *            @arg RCC_LPTIM2CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM2 clock
02838   *            @arg RCC_LPTIM2CLKSOURCE_LSE: LSE selected as LPTIM2 clock
02839   *            @arg RCC_LPTIM2CLKSOURCE_LSI: LSI Clock selected as LPTIM2 clock
02840   *            @arg RCC_LPTIM2CLKSOURCE_CLKP: CLKP selected as LPTIM2 clock
02841   */
02842 #if defined(RCC_D3CCIPR_LPTIM2SEL)
02843 #define __HAL_RCC_LPTIM2_CONFIG(__LPTIM2CLKSource__) \
02844                   MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_LPTIM2SEL, (uint32_t)(__LPTIM2CLKSource__))
02845 #else
02846 #define __HAL_RCC_LPTIM2_CONFIG(__LPTIM2CLKSource__) \
02847                   MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_LPTIM2SEL, (uint32_t)(__LPTIM2CLKSource__))
02848 #endif /* RCC_D3CCIPR_LPTIM2SEL */
02849 
02850 /** @brief  macro to get the LPTIM2 clock source.
02851   * @retval The clock source can be one of the following values:
02852   *            @arg RCC_LPTIM2CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM2 clock
02853   *            @arg RCC_LPTIM2CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM2 clock
02854   *            @arg RCC_LPTIM2CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM2 clock
02855   *            @arg RCC_LPTIM2CLKSOURCE_LSE: LSE selected as LPTIM2 clock
02856   *            @arg RCC_LPTIM2CLKSOURCE_LSI: LSI Clock selected as LPTIM2 clock
02857   *            @arg RCC_LPTIM2CLKSOURCE_CLKP: CLKP selected as LPTIM2 clock
02858   */
02859 #if defined(RCC_D3CCIPR_LPTIM2SEL)
02860 #define __HAL_RCC_GET_LPTIM2_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_LPTIM2SEL)))
02861 #else
02862 #define __HAL_RCC_GET_LPTIM2_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_LPTIM2SEL)))
02863 #endif /* RCC_D3CCIPR_LPTIM2SEL */
02864 
02865 /** @brief  macro to configure the LPTIM3/4/5 clock source.
02866   *
02867   * @param  __LPTIM345CLKSource__ specifies the LPTIM3/4/5 clock source.
02868   *            @arg RCC_LPTIM345CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM3/4/5 clock
02869   *            @arg RCC_LPTIM345CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM3/4/5 clock
02870   *            @arg RCC_LPTIM345CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM3/4/5 clock
02871   *            @arg RCC_LPTIM345CLKSOURCE_LSE: LSE selected as LPTIM3/4/5 clock
02872   *            @arg RCC_LPTIM345CLKSOURCE_LSI: LSI Clock selected as LPTIM3/4/5 clock
02873   *            @arg RCC_LPTIM345CLKSOURCE_CLKP: CLKP selected as LPTIM3/4/5 clock
02874   */
02875 #if defined(RCC_D3CCIPR_LPTIM345SEL)
02876 #define __HAL_RCC_LPTIM345_CONFIG(__LPTIM345CLKSource__) \
02877                   MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_LPTIM345SEL, (uint32_t)(__LPTIM345CLKSource__))
02878 #else
02879 #define __HAL_RCC_LPTIM345_CONFIG(__LPTIM345CLKSource__) \
02880                   MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_LPTIM3SEL, (uint32_t)(__LPTIM345CLKSource__))
02881 #endif /* RCC_D3CCIPR_LPTIM345SEL */
02882 
02883 /** @brief  macro to get the LPTIM3/4/5 clock source.
02884   * @retval The clock source can be one of the following values:
02885   *            @arg RCC_LPTIM345CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM3/4/5 clock
02886   *            @arg RCC_LPTIM345CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM3/4/5 clock
02887   *            @arg RCC_LPTIM345CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM3/4/5 clock
02888   *            @arg RCC_LPTIM345CLKSOURCE_LSE: LSE selected as LPTIM3/4/5 clock
02889   *            @arg RCC_LPTIM345CLKSOURCE_LSI: LSI Clock selected as LPTIM3/4/5 clock
02890   *            @arg RCC_LPTIM345CLKSOURCE_CLKP: CLKP selected as LPTIM3/4/5 clock
02891   */
02892 #if defined(RCC_D3CCIPR_LPTIM345SEL)
02893 #define __HAL_RCC_GET_LPTIM345_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_LPTIM345SEL)))
02894 #else
02895 #define __HAL_RCC_GET_LPTIM345_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_LPTIM3SEL)))
02896 #endif /* RCC_D3CCIPR_LPTIM345SEL */
02897 
02898 /** @brief  macro to configure the LPTIM3 clock source.
02899   *
02900   * @param  __LPTIM3CLKSource__ specifies the LPTIM3 clock source.
02901   *            @arg RCC_LPTIM3CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM3 clock
02902   *            @arg RCC_LPTIM3CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM3 clock
02903   *            @arg RCC_LPTIM3CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM3 clock
02904   *            @arg RCC_LPTIM3CLKSOURCE_LSE: LSE selected as LPTIM3 clock
02905   *            @arg RCC_LPTIM3CLKSOURCE_LSI: LSI Clock selected as LPTIM3 clock
02906   *            @arg RCC_LPTIM3CLKSOURCE_CLKP: CLKP selected as LPTIM3 clock
02907   */
02908 #define __HAL_RCC_LPTIM3_CONFIG  __HAL_RCC_LPTIM345_CONFIG
02909 
02910 /** @brief  macro to get the LPTIM3 clock source.
02911   * @retval The clock source can be one of the following values:
02912   *            @arg RCC_LPTIM3CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM3 clock
02913   *            @arg RCC_LPTIM3CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM3 clock
02914   *            @arg RCC_LPTIM3CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM3 clock
02915   *            @arg RCC_LPTIM3CLKSOURCE_LSE: LSE selected as LPTIM3 clock
02916   *            @arg RCC_LPTIM3CLKSOURCE_LSI: LSI Clock selected as LPTIM3 clock
02917   *            @arg RCC_LPTIM3CLKSOURCE_CLKP: CLKP selected as LPTIM3 clock
02918   */
02919 #define __HAL_RCC_GET_LPTIM3_SOURCE  __HAL_RCC_GET_LPTIM345_SOURCE
02920 
02921 #if defined(LPTIM4)
02922 /** @brief  macro to configure the LPTIM4 clock source.
02923   *
02924   * @param  __LPTIM4CLKSource__ specifies the LPTIM4 clock source.
02925   *            @arg RCC_LPTIM4CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM4 clock
02926   *            @arg RCC_LPTIM4CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM4 clock
02927   *            @arg RCC_LPTIM4CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM4 clock
02928   *            @arg RCC_LPTIM4CLKSOURCE_LSE: LSE selected as LPTIM4 clock
02929   *            @arg RCC_LPTIM4CLKSOURCE_LSI: LSI Clock selected as LPTIM4 clock
02930   *            @arg RCC_LPTIM4CLKSOURCE_CLKP: CLKP selected as LPTIM4 clock
02931   */
02932 #define __HAL_RCC_LPTIM4_CONFIG  __HAL_RCC_LPTIM345_CONFIG
02933 
02934 
02935 /** @brief  macro to get the LPTIM4 clock source.
02936   * @retval The clock source can be one of the following values:
02937   *            @arg RCC_LPTIM4CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM4 clock
02938   *            @arg RCC_LPTIM4CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM4 clock
02939   *            @arg RCC_LPTIM4CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM4 clock
02940   *            @arg RCC_LPTIM4CLKSOURCE_LSE: LSE selected as LPTIM4 clock
02941   *            @arg RCC_LPTIM4CLKSOURCE_LSI: LSI Clock selected as LPTIM4 clock
02942   *            @arg RCC_LPTIM4CLKSOURCE_CLKP: CLKP selected as LPTIM4 clock
02943   */
02944 #define __HAL_RCC_GET_LPTIM4_SOURCE  __HAL_RCC_GET_LPTIM345_SOURCE
02945 #endif /* LPTIM4 */
02946 
02947 #if defined(LPTIM5)
02948 /** @brief  macro to configure the LPTIM5 clock source.
02949   *
02950   * @param  __LPTIM5CLKSource__ specifies the LPTIM5 clock source.
02951   *            @arg RCC_LPTIM5CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM5 clock
02952   *            @arg RCC_LPTIM5CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM5 clock
02953   *            @arg RCC_LPTIM5CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM5 clock
02954   *            @arg RCC_LPTIM5CLKSOURCE_LSE: LSE selected as LPTIM5 clock
02955   *            @arg RCC_LPTIM5CLKSOURCE_LSI: LSI Clock selected as LPTIM5 clock
02956   *            @arg RCC_LPTIM5CLKSOURCE_CLKP: CLKP selected as LPTIM5 clock
02957   */
02958 #define __HAL_RCC_LPTIM5_CONFIG  __HAL_RCC_LPTIM345_CONFIG
02959 
02960 
02961 /** @brief  macro to get the LPTIM5 clock source.
02962   * @retval The clock source can be one of the following values:
02963   *            @arg RCC_LPTIM5CLKSOURCE_D3PCLK1: APB4 Clock selected as LPTIM5 clock
02964   *            @arg RCC_LPTIM5CLKSOURCE_PLL2: PLL2_P Clock selected as LPTIM5 clock
02965   *            @arg RCC_LPTIM5CLKSOURCE_PLL3: PLL3_R Clock selected as LPTIM5 clock
02966   *            @arg RCC_LPTIM5CLKSOURCE_LSE: LSE selected as LPTIM5 clock
02967   *            @arg RCC_LPTIM5CLKSOURCE_LSI: LSI Clock selected as LPTIM5 clock
02968   *            @arg RCC_LPTIM5CLKSOURCE_CLKP: CLKP selected as LPTIM5 clock
02969   */
02970 #define __HAL_RCC_GET_LPTIM5_SOURCE  __HAL_RCC_GET_LPTIM345_SOURCE
02971 #endif /* LPTIM5 */
02972 
02973 #if defined(QUADSPI)
02974 /** @brief  macro to configure the QSPI clock source.
02975   *
02976   * @param  __QSPICLKSource__ specifies the QSPI clock source.
02977   *            @arg RCC_RCC_QSPICLKSOURCE_D1HCLK: Domain1 HCLK Clock selected as QSPI clock
02978   *            @arg RCC_RCC_QSPICLKSOURCE_PLL   : PLL1_Q Clock selected as QSPI clock
02979   *            @arg RCC_RCC_QSPICLKSOURCE_PLL2  : PLL2_R Clock selected as QSPI clock
02980   *            @arg RCC_RCC_QSPICLKSOURCE_CLKP    CLKP selected as QSPI clock
02981   */
02982 #define __HAL_RCC_QSPI_CONFIG(__QSPICLKSource__) \
02983                   MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_QSPISEL, (uint32_t)(__QSPICLKSource__))
02984 
02985 
02986 /** @brief  macro to get the QSPI clock source.
02987   * @retval The clock source can be one of the following values:
02988   *            @arg RCC_RCC_QSPICLKSOURCE_D1HCLK: Domain1 HCLK Clock selected as QSPI clock
02989   *            @arg RCC_RCC_QSPICLKSOURCE_PLL   : PLL1_Q Clock selected as QSPI clock
02990   *            @arg RCC_RCC_QSPICLKSOURCE_PLL2  : PLL2_R Clock selected as QSPI clock
02991   *            @arg RCC_RCC_QSPICLKSOURCE_CLKP    CLKP selected as QSPI clock
02992   */
02993 #define __HAL_RCC_GET_QSPI_SOURCE() ((uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_QSPISEL)))
02994 #endif /* QUADSPI */
02995 
02996 #if defined(OCTOSPI1) || defined(OCTOSPI2)
02997 /** @brief  macro to configure the OSPI clock source.
02998   *
02999   * @param  __OSPICLKSource__ specifies the OSPI clock source.
03000   *            @arg RCC_RCC_OSPICLKSOURCE_CDHCLK: Domain1 HCLK Clock selected as OSPI clock
03001   *            @arg RCC_RCC_OSPICLKSOURCE_PLL   : PLL1_Q Clock selected as OSPI clock
03002   *            @arg RCC_RCC_OSPICLKSOURCE_PLL2  : PLL2_R Clock selected as OSPI clock
03003   *            @arg RCC_RCC_OSPICLKSOURCE_CLKP    CLKP selected as OSPI clock
03004   */
03005 #if defined(RCC_CDCCIPR_OCTOSPISEL)
03006 #define __HAL_RCC_OSPI_CONFIG(__OSPICLKSource__) \
03007                   MODIFY_REG(RCC->CDCCIPR, RCC_CDCCIPR_OCTOSPISEL, (uint32_t)(__OSPICLKSource__))
03008 #else
03009 #define __HAL_RCC_OSPI_CONFIG(__OSPICLKSource__) \
03010                   MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_OCTOSPISEL, (uint32_t)(__OSPICLKSource__))
03011 #endif /* RCC_CDCCIPR_OCTOSPISEL */
03012 
03013 /** @brief  macro to get the OSPI clock source.
03014   * @retval The clock source can be one of the following values:
03015   *            @arg RCC_RCC_OSPICLKSOURCE_D1HCLK: Domain1 HCLK Clock selected as OSPI clock
03016   *            @arg RCC_RCC_OSPICLKSOURCE_PLL   : PLL1_Q Clock selected as OSPI clock
03017   *            @arg RCC_RCC_OSPICLKSOURCE_PLL2  : PLL2_R Clock selected as OSPI clock
03018   *            @arg RCC_RCC_OSPICLKSOURCE_CLKP    CLKP selected as OSPI clock
03019   */
03020 #if defined(RCC_CDCCIPR_OCTOSPISEL)
03021 #define __HAL_RCC_GET_OSPI_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIPR, RCC_CDCCIPR_OCTOSPISEL)))
03022 #else
03023 #define __HAL_RCC_GET_OSPI_SOURCE() ((uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_OCTOSPISEL)))
03024 #endif /* RCC_CDCCIPR_OCTOSPISEL */
03025 #endif /* defined(OCTOSPI1) || defined(OCTOSPI2) */
03026 
03027 
03028 #if defined(DSI)
03029 /** @brief  macro to configure the DSI clock source.
03030   *
03031   * @param  __DSICLKSource__ specifies the DSI clock source.
03032   *            @arg RCC_RCC_DSICLKSOURCE_PHY:DSI clock from PHY is selected as DSI byte lane clock
03033   *            @arg RCC_RCC_DSICLKSOURCE_PLL2   : PLL2_Q Clock clock is selected as DSI byte lane clock
03034   */
03035 #define __HAL_RCC_DSI_CONFIG(__DSICLKSource__) \
03036                   MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_DSISEL, (uint32_t)(__DSICLKSource__))
03037 
03038 
03039 /** @brief  macro to get the DSI clock source.
03040   * @retval The clock source can be one of the following values:
03041   *            @arg RCC_RCC_DSICLKSOURCE_PHY: DSI clock from PHY is selected as DSI byte lane clock
03042   *            @arg RCC_RCC_DSICLKSOURCE_PLL2: PLL2_Q Clock clock is selected as DSI byte lane clock
03043   */
03044 #define __HAL_RCC_GET_DSI_SOURCE() ((uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_DSISEL)))
03045 #endif /*DSI*/
03046 
03047 /** @brief  macro to configure the FMC clock source.
03048   *
03049   * @param  __FMCCLKSource__ specifies the FMC clock source.
03050   *            @arg RCC_RCC_FMCCLKSOURCE_D1HCLK: Domain1 HCLK Clock selected as FMC clock
03051   *            @arg RCC_RCC_FMCCLKSOURCE_PLL   : PLL1_Q Clock selected as FMC clock
03052   *            @arg RCC_RCC_FMCCLKSOURCE_PLL2  : PLL2_R Clock selected as FMC clock
03053   *            @arg RCC_RCC_FMCCLKSOURCE_CLKP    CLKP selected as FMC clock
03054   */
03055 #if defined(RCC_D1CCIPR_FMCSEL)
03056 #define __HAL_RCC_FMC_CONFIG(__FMCCLKSource__) \
03057                   MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_FMCSEL, (uint32_t)(__FMCCLKSource__))
03058 #else
03059 #define __HAL_RCC_FMC_CONFIG(__FMCCLKSource__) \
03060                   MODIFY_REG(RCC->CDCCIPR, RCC_CDCCIPR_FMCSEL, (uint32_t)(__FMCCLKSource__))
03061 #endif /* RCC_D1CCIPR_FMCSEL */
03062 
03063 /** @brief  macro to get the FMC clock source.
03064   * @retval The clock source can be one of the following values:
03065   *            @arg RCC_RCC_FMCCLKSOURCE_D1HCLK: Domain1 HCLK Clock selected as FMC clock
03066   *            @arg RCC_RCC_FMCCLKSOURCE_PLL   : PLL1_Q Clock selected as FMC clock
03067   *            @arg RCC_RCC_FMCCLKSOURCE_PLL2  : PLL2_R Clock selected as FMC clock
03068   *            @arg RCC_RCC_FMCCLKSOURCE_CLKP    CLKP selected as FMC clock
03069   */
03070 #if defined(RCC_D1CCIPR_FMCSEL)
03071 #define __HAL_RCC_GET_FMC_SOURCE() ((uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_FMCSEL)))
03072 #else
03073 #define __HAL_RCC_GET_FMC_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIPR, RCC_CDCCIPR_FMCSEL)))
03074 #endif /* RCC_D1CCIPR_FMCSEL */
03075 
03076 /** @brief  Macro to configure the USB clock (USBCLK).
03077   * @param  __USBCLKSource__ specifies the USB clock source.
03078   *         This parameter can be one of the following values:
03079   *            @arg RCC_USBCLKSOURCE_PLL:   PLL1Q selected as USB clock
03080   *            @arg RCC_USBCLKSOURCE_PLL3:  PLL3Q Clock selected as USB clock
03081   *            @arg RCC_USBCLKSOURCE_HSI48: RC48 MHZ Clock selected as USB clock
03082   */
03083 #if defined(RCC_D2CCIP2R_USBSEL)
03084 #define __HAL_RCC_USB_CONFIG(__USBCLKSource__) \
03085                   MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_USBSEL, (uint32_t)(__USBCLKSource__))
03086 #else
03087 #define __HAL_RCC_USB_CONFIG(__USBCLKSource__) \
03088                   MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_USBSEL, (uint32_t)(__USBCLKSource__))
03089 #endif /* RCC_D2CCIP2R_USBSEL */
03090 
03091 /** @brief  Macro to get the USB clock source.
03092   * @retval The clock source can be one of the following values:
03093   *            @arg RCC_USBCLKSOURCE_PLL:   PLL1Q selected as USB clock
03094   *            @arg RCC_USBCLKSOURCE_PLL3:  PLL3Q Clock selected as USB clock
03095   *            @arg RCC_USBCLKSOURCE_HSI48: RC48 MHZ Clock selected as USB clock
03096   */
03097 #if defined(RCC_D2CCIP2R_USBSEL)
03098 #define __HAL_RCC_GET_USB_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_USBSEL)))
03099 #else
03100 #define __HAL_RCC_GET_USB_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_USBSEL)))
03101 #endif /* RCC_D2CCIP2R_USBSEL */
03102 
03103 /** @brief  Macro to configure the ADC clock
03104   * @param  __ADCCLKSource__ specifies the ADC digital interface clock source.
03105   *         This parameter can be one of the following values:
03106   *            @arg RCC_ADCCLKSOURCE_PLL2: PLL2_P Clock selected as ADC clock
03107   *            @arg RCC_ADCCLKSOURCE_PLL3: PLL3_R Clock selected as ADC clock
03108   *            @arg RCC_ADCCLKSOURCE_CLKP: CLKP Clock selected as ADC clock
03109   */
03110 #if defined(RCC_D3CCIPR_ADCSEL)
03111 #define __HAL_RCC_ADC_CONFIG(__ADCCLKSource__) \
03112                   MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_ADCSEL, (uint32_t)(__ADCCLKSource__))
03113 #else
03114 #define __HAL_RCC_ADC_CONFIG(__ADCCLKSource__) \
03115                   MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_ADCSEL, (uint32_t)(__ADCCLKSource__))
03116 #endif /* RCC_D3CCIPR_ADCSEL */
03117 
03118 /** @brief  Macro to get the ADC clock source.
03119   * @retval The clock source can be one of the following values:
03120   *            @arg RCC_ADCCLKSOURCE_PLL2: PLL2_P Clock selected as ADC clock
03121   *            @arg RCC_ADCCLKSOURCE_PLL3: PLL3_R Clock selected as ADC clock
03122   *            @arg RCC_ADCCLKSOURCE_CLKP: CLKP Clock selected as ADC clock
03123   */
03124 #if defined(RCC_D3CCIPR_ADCSEL)
03125 #define __HAL_RCC_GET_ADC_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_ADCSEL)))
03126 #else
03127 #define __HAL_RCC_GET_ADC_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_ADCSEL)))
03128 #endif /* RCC_D3CCIPR_ADCSEL */
03129 
03130  /** @brief  Macro to configure the SWPMI1 clock
03131   * @param  __SWPMI1CLKSource__ specifies the SWPMI1  clock source.
03132   *         This parameter can be one of the following values:
03133   *            @arg RCC_SWPMI1CLKSOURCE_D2PCLK1:  D2PCLK1 Clock selected as SWPMI1 clock
03134   *            @arg RCC_SWPMI1CLKSOURCE_HSI: HSI Clock selected as SWPMI1 clock
03135   */
03136 #if defined(RCC_D2CCIP1R_SWPSEL)
03137 #define __HAL_RCC_SWPMI1_CONFIG(__SWPMI1CLKSource__) \
03138                   MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SWPSEL, (uint32_t)(__SWPMI1CLKSource__))
03139 #else
03140 #define __HAL_RCC_SWPMI1_CONFIG(__SWPMI1CLKSource__) \
03141                   MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SWPSEL, (uint32_t)(__SWPMI1CLKSource__))
03142 #endif /* RCC_D2CCIP1R_SWPSEL */
03143 
03144 /** @brief  Macro to get the SWPMI1 clock source.
03145   * @retval The clock source can be one of the following values:
03146   *            @arg RCC_SWPMI1CLKSOURCE_D2PCLK1:  D2PCLK1 Clock selected as SWPMI1 clock
03147   *            @arg RCC_SWPMI1CLKSOURCE_HSI: HSI Clock selected as SWPMI1 clock
03148   */
03149 #if defined(RCC_D2CCIP1R_SWPSEL)
03150 #define __HAL_RCC_GET_SWPMI1_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SWPSEL)))
03151 #else
03152 #define __HAL_RCC_GET_SWPMI1_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SWPSEL)))
03153 #endif /* RCC_D2CCIP1R_SWPSEL */
03154 
03155  /** @brief  Macro to configure the DFSDM1 clock
03156   * @param  __DFSDM1CLKSource__ specifies the DFSDM1  clock source.
03157   *         This parameter can be one of the following values:
03158   *            @arg RCC_DFSDM1CLKSOURCE_D2PCLK:  D2PCLK Clock selected as DFSDM1 clock
03159   *            @arg RCC_DFSDM1CLKSOURCE_SYS:     System Clock selected as DFSDM1 clock
03160   */
03161 #if defined(RCC_D2CCIP1R_DFSDM1SEL)
03162 #define __HAL_RCC_DFSDM1_CONFIG(__DFSDM1CLKSource__) \
03163                   MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_DFSDM1SEL, (uint32_t)(__DFSDM1CLKSource__))
03164 #else
03165 #define __HAL_RCC_DFSDM1_CONFIG(__DFSDM1CLKSource__) \
03166                   MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_DFSDM1SEL, (uint32_t)(__DFSDM1CLKSource__))
03167 #endif /* RCC_D2CCIP1R_DFSDM1SEL */
03168 
03169 /** @brief  Macro to get the DFSDM1 clock source.
03170   * @retval The clock source can be one of the following values:
03171   *            @arg RCC_DFSDM1CLKSOURCE_D2PCLK:  D2PCLK Clock selected as DFSDM1 clock
03172   *            @arg RCC_DFSDM1CLKSOURCE_SYS:   System Clock selected as DFSDM1 clock
03173   */
03174 #if defined (RCC_D2CCIP1R_DFSDM1SEL)
03175 #define __HAL_RCC_GET_DFSDM1_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_DFSDM1SEL)))
03176 #else
03177 #define __HAL_RCC_GET_DFSDM1_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_DFSDM1SEL)))
03178 #endif /* RCC_D2CCIP1R_DFSDM1SEL */
03179 
03180 #if defined(DFSDM2_BASE)
03181  /** @brief  Macro to configure the DFSDM2 clock
03182   * @param  __DFSDM2CLKSource__ specifies the DFSDM2  clock source.
03183   *         This parameter can be one of the following values:
03184   *            @arg RCC_DFSDM2CLKSOURCE_SRDPCLK1:  SRDPCLK1 (APB4) selected as DFSDM2 clock
03185   *            @arg RCC_DFSDM2CLKSOURCE_SYS:   System Clock selected as DFSDM2 clock
03186   */
03187 #define __HAL_RCC_DFSDM2_CONFIG(__DFSDM2CLKSource__) \
03188                   MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_DFSDM2SEL, (uint32_t)(__DFSDM2CLKSource__))
03189 
03190 /** @brief  Macro to get the DFSDM2 clock source.
03191   * @retval The clock source can be one of the following values:
03192   *            @arg RCC_DFSDM2CLKSOURCE_SRDPCLK1:  SRDPCLK1 (APB4) Clock selected as DFSDM2 clock
03193   *            @arg RCC_DFSDM2CLKSOURCE_SYS:   System Clock selected as DFSDM2 clock
03194   */
03195 #define __HAL_RCC_GET_DFSDM2_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_DFSDM2SEL)))
03196 #endif /* DFSDM2 */
03197 
03198 /** @brief macro to configure the CEC clock (CECCLK).
03199   *
03200   * @param  __CECCLKSource__ specifies the CEC clock source.
03201   *          This parameter can be one of the following values:
03202   *            @arg RCC_CECCLKSOURCE_LSE: LSE selected as CEC clock
03203   *            @arg RCC_CECCLKSOURCE_LSI: LSI selected as CEC clock
03204   *            @arg RCC_CECCLKSOURCE_CSI: CSI Clock selected as CEC clock
03205   */
03206 #if defined(RCC_D2CCIP2R_CECSEL)
03207 #define __HAL_RCC_CEC_CONFIG(__CECCLKSource__) \
03208                   MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_CECSEL, (uint32_t)(__CECCLKSource__))
03209 #else
03210 #define __HAL_RCC_CEC_CONFIG(__CECCLKSource__) \
03211                   MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_CECSEL, (uint32_t)(__CECCLKSource__))
03212 #endif /* RCC_D2CCIP2R_CECSEL */
03213 
03214 /** @brief  macro to get the CEC clock source.
03215   * @retval The clock source can be one of the following values:
03216   *            @arg RCC_CECCLKSOURCE_LSE: LSE selected as CEC clock
03217   *            @arg RCC_CECCLKSOURCE_LSI: LSI selected as CEC clock
03218   *            @arg RCC_CECCLKSOURCE_CSI: CSI Clock selected as CEC clock
03219   */
03220 #if defined(RCC_D2CCIP2R_CECSEL)
03221 #define __HAL_RCC_GET_CEC_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_CECSEL)))
03222 #else
03223 #define __HAL_RCC_GET_CEC_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_CECSEL)))
03224 #endif /* RCC_D2CCIP2R_CECSEL */
03225 
03226 /** @brief  Macro to configure the CLKP : Oscillator clock for peripheral
03227   * @param  __CLKPSource__ specifies Oscillator clock for peripheral
03228   *         This parameter can be one of the following values:
03229   *            @arg RCC_CLKPSOURCE_HSI: HSI selected Oscillator clock for peripheral
03230   *            @arg RCC_CLKPSOURCE_CSI: CSI selected Oscillator clock for peripheral
03231   *            @arg RCC_CLKPSOURCE_HSE: HSE selected Oscillator clock for peripheral
03232   */
03233 #if defined(RCC_D1CCIPR_CKPERSEL)
03234 #define __HAL_RCC_CLKP_CONFIG(__CLKPSource__) \
03235                   MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_CKPERSEL, (uint32_t)(__CLKPSource__))
03236 #else
03237 #define __HAL_RCC_CLKP_CONFIG(__CLKPSource__) \
03238                   MODIFY_REG(RCC->CDCCIPR, RCC_CDCCIPR_CKPERSEL, (uint32_t)(__CLKPSource__))
03239 #endif /* RCC_D1CCIPR_CKPERSEL */
03240 
03241 /** @brief  Macro to get the Oscillator clock for peripheral  source.
03242   * @retval The clock source can be one of the following values:
03243   *            @arg RCC_CLKPSOURCE_HSI: HSI selected Oscillator clock for peripheral
03244   *            @arg RCC_CLKPSOURCE_CSI: CSI selected Oscillator clock for peripheral
03245   *            @arg RCC_CLKPSOURCE_HSE: HSE selected Oscillator clock for peripheral
03246   */
03247 #if defined(RCC_D1CCIPR_CKPERSEL)
03248 #define __HAL_RCC_GET_CLKP_SOURCE() ((uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_CKPERSEL)))
03249 #else
03250 #define __HAL_RCC_GET_CLKP_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIPR, RCC_CDCCIPR_CKPERSEL)))
03251 #endif /* RCC_D1CCIPR_CKPERSEL */
03252 
03253 #if defined(FDCAN1) || defined(FDCAN2)
03254 /** @brief  Macro to configure the FDCAN clock
03255   * @param  __FDCANCLKSource__ specifies  clock source  for FDCAN
03256   *         This parameter can be one of the following values:
03257   *            @arg RCC_FDCANCLKSOURCE_HSE: HSE selected as FDCAN clock
03258   *            @arg RCC_FDCANCLKSOURCE_PLL: PLL selected as FDCAN clock
03259   *            @arg RCC_FDCANCLKSOURCE_PLL2: PLL2 selected as FDCAN clock
03260   */
03261 #if defined(RCC_D2CCIP1R_FDCANSEL)
03262 #define __HAL_RCC_FDCAN_CONFIG(__FDCANCLKSource__) \
03263                   MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_FDCANSEL, (uint32_t)(__FDCANCLKSource__))
03264 #else
03265 #define __HAL_RCC_FDCAN_CONFIG(__FDCANCLKSource__) \
03266                   MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_FDCANSEL, (uint32_t)(__FDCANCLKSource__))
03267 #endif /* RCC_D2CCIP1R_FDCANSEL */
03268 
03269 /** @brief  Macro to get the FDCAN clock
03270   * @retval The clock source can be one of the following values:
03271   *            @arg RCC_FDCANCLKSOURCE_HSE: HSE selected as FDCAN clock
03272   *            @arg RCC_FDCANCLKSOURCE_PLL: PLL selected as FDCAN clock
03273   *            @arg RCC_FDCANCLKSOURCE_PLL2: PLL2 selected as FDCAN clock
03274   */
03275 #if defined(RCC_D2CCIP1R_FDCANSEL)
03276 #define __HAL_RCC_GET_FDCAN_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_FDCANSEL)))
03277 #else
03278 #define __HAL_RCC_GET_FDCAN_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_FDCANSEL)))
03279 #endif /* RCC_D2CCIP1R_FDCANSEL */
03280 
03281 #endif /*FDCAN1 || FDCAN2*/
03282 
03283 /**
03284   * @brief  Macro to Configure the SPI1/2/3 clock source.
03285   * @param  __RCC_SPI123CLKSource__ defines the SPI1/2/3 clock source. This clock is derived
03286   *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)
03287   *          This parameter can be one of the following values:
03288   *             @arg RCC_SPI123CLKSOURCE_PLL: SPI1/2/3 clock = PLL
03289   *             @arg RCC_SPI123CLKSOURCE_PLL2: SPI1/2/3 clock = PLL2
03290   *             @arg RCC_SPI123CLKSOURCE_PLL3: SPI1/2/3 clock = PLL3
03291   *             @arg RCC_SPI123CLKSOURCE_CLKP: SPI1/2/3 clock  = CLKP
03292   *             @arg RCC_SPI123CLKSOURCE_PIN: SPI1/2/3 clock = External Clock
03293   * @retval None
03294   */
03295 #if defined(RCC_D2CCIP1R_SPI123SEL)
03296 #define __HAL_RCC_SPI123_CONFIG(__RCC_SPI123CLKSource__ )\
03297                   MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SPI123SEL, (__RCC_SPI123CLKSource__))
03298 #else
03299 #define __HAL_RCC_SPI123_CONFIG(__RCC_SPI123CLKSource__ )\
03300                   MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SPI123SEL, (__RCC_SPI123CLKSource__))
03301 #endif /* RCC_D2CCIP1R_SPI123SEL */
03302 
03303 /** @brief  Macro to get the SPI1/2/3 clock source.
03304   * @retval The clock source can be one of the following values:
03305   *             @arg RCC_SPI123CLKSOURCE_PLL: SPI1/2/3 clock = PLL
03306   *             @arg RCC_SPI123CLKSOURCE_PLL2: SPI1/2/3 clock = PLL2
03307   *             @arg RCC_SPI123CLKSOURCE_PLL3: SPI1/2/3 clock = PLL3
03308   *             @arg RCC_SPI123CLKSOURCE_CLKP: SPI1/2/3 clock  = CLKP
03309   *             @arg RCC_SPI123CLKSOURCE_PIN: SPI1/2/3 clock = External Clock
03310   */
03311 #if defined(RCC_D2CCIP1R_SPI123SEL)
03312 #define __HAL_RCC_GET_SPI123_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SPI123SEL)))
03313 #else
03314 #define __HAL_RCC_GET_SPI123_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SPI123SEL)))
03315 #endif /* RCC_D2CCIP1R_SPI123SEL */
03316 
03317 /**
03318   * @brief  Macro to Configure the SPI1 clock source.
03319   * @param  __RCC_SPI1CLKSource__ defines the SPI1 clock source. This clock is derived
03320   *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)
03321   *          This parameter can be one of the following values:
03322   *             @arg RCC_SPI1CLKSOURCE_PLL: SPI1 clock = PLL
03323   *             @arg RCC_SPI1CLKSOURCE_PLL2: SPI1 clock = PLL2
03324   *             @arg RCC_SPI1CLKSOURCE_PLL3: SPI1 clock = PLL3
03325   *             @arg RCC_SPI1CLKSOURCE_CLKP: SPI1 clock  = CLKP
03326   *             @arg RCC_SPI1CLKSOURCE_PIN: SPI1 clock = External Clock
03327   * @retval None
03328   */
03329 #define __HAL_RCC_SPI1_CONFIG  __HAL_RCC_SPI123_CONFIG
03330 
03331 /** @brief  Macro to get the SPI1 clock source.
03332   * @retval The clock source can be one of the following values:
03333   *             @arg RCC_SPI1CLKSOURCE_PLL: SPI1 clock = PLL
03334   *             @arg RCC_SPI1CLKSOURCE_PLL2: SPI1 clock = PLL2
03335   *             @arg RCC_SPI1CLKSOURCE_PLL3: SPI1 clock = PLL3
03336   *             @arg RCC_SPI1CLKSOURCE_CLKP: SPI1 clock  = CLKP
03337   *             @arg RCC_SPI1CLKSOURCE_PIN: SPI1 clock = External Clock
03338   */
03339 #define __HAL_RCC_GET_SPI1_SOURCE  __HAL_RCC_GET_SPI123_SOURCE
03340 
03341 /**
03342   * @brief  Macro to Configure the SPI2 clock source.
03343   * @param  __RCC_SPI2CLKSource__ defines the SPI2 clock source. This clock is derived
03344   *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)
03345   *          This parameter can be one of the following values:
03346   *             @arg RCC_SPI2CLKSOURCE_PLL: SPI2 clock = PLL
03347   *             @arg RCC_SPI2CLKSOURCE_PLL2: SPI2 clock = PLL2
03348   *             @arg RCC_SPI2CLKSOURCE_PLL3: SPI2 clock = PLL3
03349   *             @arg RCC_SPI2CLKSOURCE_CLKP: SPI2 clock  = CLKP
03350   *             @arg RCC_SPI2CLKSOURCE_PIN: SPI2 clock = External Clock
03351   * @retval None
03352   */
03353 #define __HAL_RCC_SPI2_CONFIG  __HAL_RCC_SPI123_CONFIG
03354 
03355 /** @brief  Macro to get the SPI2 clock source.
03356   * @retval The clock source can be one of the following values:
03357   *             @arg RCC_SPI2CLKSOURCE_PLL: SPI2 clock = PLL
03358   *             @arg RCC_SPI2CLKSOURCE_PLL2: SPI2 clock = PLL2
03359   *             @arg RCC_SPI2CLKSOURCE_PLL3: SPI2 clock = PLL3
03360   *             @arg RCC_SPI2CLKSOURCE_CLKP: SPI2 clock  = CLKP
03361   *             @arg RCC_SPI2CLKSOURCE_PIN: SPI2 clock = External Clock
03362   */
03363 #define __HAL_RCC_GET_SPI2_SOURCE  __HAL_RCC_GET_SPI123_SOURCE
03364 
03365 /**
03366   * @brief  Macro to Configure the SPI3 clock source.
03367   * @param  __RCC_SPI3CLKSource__ defines the SPI3 clock source. This clock is derived
03368   *         from system PLL, PLL2, PLL3, OSC or external clock (through a dedicated PIN)
03369   *          This parameter can be one of the following values:
03370   *             @arg RCC_SPI3CLKSOURCE_PLL: SPI3 clock = PLL
03371   *             @arg RCC_SPI3CLKSOURCE_PLL2: SPI3 clock = PLL2
03372   *             @arg RCC_SPI3CLKSOURCE_PLL3: SPI3 clock = PLL3
03373   *             @arg RCC_SPI3CLKSOURCE_CLKP: SPI3 clock  = CLKP
03374   *             @arg RCC_SPI3CLKSOURCE_PIN: SPI3 clock = External Clock
03375   * @retval None
03376   */
03377 #define __HAL_RCC_SPI3_CONFIG  __HAL_RCC_SPI123_CONFIG
03378 
03379 /** @brief  Macro to get the SPI3 clock source.
03380   * @retval The clock source can be one of the following values:
03381   *             @arg RCC_SPI3CLKSOURCE_PLL: SPI3 clock = PLL
03382   *             @arg RCC_SPI3CLKSOURCE_PLL2: SPI3 clock = PLL2
03383   *             @arg RCC_SPI3CLKSOURCE_PLL3: SPI3 clock = PLL3
03384   *             @arg RCC_SPI3CLKSOURCE_CLKP: SPI3 clock  = CLKP
03385   *             @arg RCC_SPI3CLKSOURCE_PIN: SPI3 clock = External Clock
03386   */
03387 #define __HAL_RCC_GET_SPI3_SOURCE  __HAL_RCC_GET_SPI123_SOURCE
03388 
03389 /**
03390   * @brief  Macro to Configure the SPI4/5 clock source.
03391   * @param  __RCC_SPI45CLKSource__ defines the SPI4/5 clock source. This clock is derived
03392   *         from system PCLK, PLL2, PLL3, OSC
03393   *          This parameter can be one of the following values:
03394   *             @arg RCC_SPI45CLKSOURCE_D2PCLK1:SPI4/5 clock = D2PCLK1
03395   *             @arg RCC_SPI45CLKSOURCE_PLL2:   SPI4/5 clock = PLL2
03396   *             @arg RCC_SPI45CLKSOURCE_PLL3:   SPI4/5 clock = PLL3
03397   *             @arg RCC_SPI45CLKSOURCE_HSI:    SPI4/5 clock = HSI
03398   *             @arg RCC_SPI45CLKSOURCE_CSI:    SPI4/5 clock = CSI
03399   *             @arg RCC_SPI45CLKSOURCE_HSE:    SPI4/5 clock = HSE
03400   * @retval None
03401   */
03402 #if defined(RCC_D2CCIP1R_SPI45SEL)
03403 #define __HAL_RCC_SPI45_CONFIG(__RCC_SPI45CLKSource__ )\
03404                   MODIFY_REG(RCC->D2CCIP1R, RCC_D2CCIP1R_SPI45SEL, (__RCC_SPI45CLKSource__))
03405 #else
03406 #define __HAL_RCC_SPI45_CONFIG(__RCC_SPI45CLKSource__ )\
03407                   MODIFY_REG(RCC->CDCCIP1R, RCC_CDCCIP1R_SPI45SEL, (__RCC_SPI45CLKSource__))
03408 #endif /* RCC_D2CCIP1R_SPI45SEL */
03409 
03410 /** @brief  Macro to get the SPI4/5 clock source.
03411   * @retval The clock source can be one of the following values:
03412   *             @arg RCC_SPI45CLKSOURCE_D2PCLK1:SPI4/5 clock = D2PCLK1
03413   *             @arg RCC_SPI45CLKSOURCE_PLL2:   SPI4/5 clock = PLL2
03414   *             @arg RCC_SPI45CLKSOURCE_PLL3:   SPI4/5 clock = PLL3
03415   *             @arg RCC_SPI45CLKSOURCE_HSI:    SPI4/5 clock = HSI
03416   *             @arg RCC_SPI45CLKSOURCE_CSI:    SPI4/5 clock = CSI
03417   *             @arg RCC_SPI45CLKSOURCE_HSE:    SPI4/5 clock = HSE
03418 */
03419 #if defined(RCC_D2CCIP1R_SPI45SEL)
03420 #define __HAL_RCC_GET_SPI45_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP1R, RCC_D2CCIP1R_SPI45SEL)))
03421 #else
03422 #define __HAL_RCC_GET_SPI45_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP1R, RCC_CDCCIP1R_SPI45SEL)))
03423 #endif /* RCC_D2CCIP1R_SPI45SEL */
03424 
03425 /**
03426   * @brief  Macro to Configure the SPI4 clock source.
03427   * @param  __RCC_SPI4CLKSource__ defines the SPI4 clock source. This clock is derived
03428   *         from system PCLK, PLL2, PLL3, OSC
03429   *          This parameter can be one of the following values:
03430   *             @arg RCC_SPI4CLKSOURCE_D2PCLK1:SPI4 clock = D2PCLK1
03431   *             @arg RCC_SPI4CLKSOURCE_PLL2:   SPI4 clock = PLL2
03432   *             @arg RCC_SPI4CLKSOURCE_PLL3:   SPI4 clock = PLL3
03433   *             @arg RCC_SPI4CLKSOURCE_HSI:    SPI4 clock = HSI
03434   *             @arg RCC_SPI4CLKSOURCE_CSI:    SPI4 clock = CSI
03435   *             @arg RCC_SPI4CLKSOURCE_HSE:    SPI4 clock = HSE
03436   * @retval None
03437   */
03438 #define __HAL_RCC_SPI4_CONFIG  __HAL_RCC_SPI45_CONFIG
03439 
03440 /** @brief  Macro to get the SPI4 clock source.
03441   * @retval The clock source can be one of the following values:
03442   *             @arg RCC_SPI4CLKSOURCE_D2PCLK1:SPI4 clock = D2PCLK1
03443   *             @arg RCC_SPI4CLKSOURCE_PLL2:   SPI4 clock = PLL2
03444   *             @arg RCC_SPI4CLKSOURCE_PLL3:   SPI4 clock = PLL3
03445   *             @arg RCC_SPI4CLKSOURCE_HSI:    SPI4 clock = HSI
03446   *             @arg RCC_SPI4CLKSOURCE_CSI:    SPI4 clock = CSI
03447   *             @arg RCC_SPI4CLKSOURCE_HSE:    SPI4 clock = HSE
03448 */
03449 #define __HAL_RCC_GET_SPI4_SOURCE  __HAL_RCC_GET_SPI45_SOURCE
03450 
03451 /**
03452   * @brief  Macro to Configure the SPI5 clock source.
03453   * @param  __RCC_SPI5CLKSource__ defines the SPI5 clock source. This clock is derived
03454   *         from system PCLK, PLL2, PLL3, OSC
03455   *          This parameter can be one of the following values:
03456   *             @arg RCC_SPI5CLKSOURCE_D2PCLK1:SPI5 clock = D2PCLK1
03457   *             @arg RCC_SPI5CLKSOURCE_PLL2:   SPI5 clock = PLL2
03458   *             @arg RCC_SPI5CLKSOURCE_PLL3:   SPI5 clock = PLL3
03459   *             @arg RCC_SPI5CLKSOURCE_HSI:    SPI5 clock = HSI
03460   *             @arg RCC_SPI5CLKSOURCE_CSI:    SPI5 clock = CSI
03461   *             @arg RCC_SPI5CLKSOURCE_HSE:    SPI5 clock = HSE
03462   * @retval None
03463   */
03464 #define __HAL_RCC_SPI5_CONFIG  __HAL_RCC_SPI45_CONFIG
03465 
03466 /** @brief  Macro to get the SPI5 clock source.
03467   * @retval The clock source can be one of the following values:
03468   *             @arg RCC_SPI5CLKSOURCE_D2PCLK1:SPI5 clock = D2PCLK1
03469   *             @arg RCC_SPI5CLKSOURCE_PLL2:   SPI5 clock = PLL2
03470   *             @arg RCC_SPI5CLKSOURCE_PLL3:   SPI5 clock = PLL3
03471   *             @arg RCC_SPI5CLKSOURCE_HSI:    SPI5 clock = HSI
03472   *             @arg RCC_SPI5CLKSOURCE_CSI:    SPI5 clock = CSI
03473   *             @arg RCC_SPI5CLKSOURCE_HSE:    SPI5 clock = HSE
03474 */
03475 #define __HAL_RCC_GET_SPI5_SOURCE  __HAL_RCC_GET_SPI45_SOURCE
03476 
03477 /**
03478   * @brief  Macro to Configure the SPI6 clock source.
03479   * @param  __RCC_SPI6CLKSource__ defines the SPI6 clock source. This clock is derived
03480   *         from system PCLK, PLL2, PLL3, OSC
03481   *          This parameter can be one of the following values:
03482   *             @arg RCC_SPI6CLKSOURCE_D3PCLK1:SPI6 clock = D2PCLK1
03483   *             @arg RCC_SPI6CLKSOURCE_PLL2:   SPI6 clock = PLL2
03484   *             @arg RCC_SPI6CLKSOURCE_PLL3:   SPI6 clock = PLL3
03485   *             @arg RCC_SPI6CLKSOURCE_HSI:    SPI6 clock = HSI
03486   *             @arg RCC_SPI6CLKSOURCE_CSI:    SPI6 clock = CSI
03487   *             @arg RCC_SPI6CLKSOURCE_HSE:    SPI6 clock = HSE
03488   *             @arg RCC_SPI6CLKSOURCE_PIN:    SPI6 clock = I2S_CKIN (*)
03489   *
03490   * @retval None
03491   *
03492   * (*) : Available on stm32h7a3xx and stm32h7b3xx family lines.
03493   *
03494   */
03495 #if defined(RCC_D3CCIPR_SPI6SEL)
03496 #define __HAL_RCC_SPI6_CONFIG(__RCC_SPI6CLKSource__ )\
03497                   MODIFY_REG(RCC->D3CCIPR, RCC_D3CCIPR_SPI6SEL, (__RCC_SPI6CLKSource__))
03498 #else
03499 #define __HAL_RCC_SPI6_CONFIG(__RCC_SPI6CLKSource__ )\
03500                   MODIFY_REG(RCC->SRDCCIPR, RCC_SRDCCIPR_SPI6SEL, (__RCC_SPI6CLKSource__))
03501 #endif /* RCC_D3CCIPR_SPI6SEL */
03502 
03503 /** @brief  Macro to get the SPI6 clock source.
03504   * @retval The clock source can be one of the following values:
03505   *             @arg RCC_SPI6CLKSOURCE_D3PCLK1:SPI6 clock = D2PCLK1
03506   *             @arg RCC_SPI6CLKSOURCE_PLL2:   SPI6 clock = PLL2
03507   *             @arg RCC_SPI6CLKSOURCE_PLL3:   SPI6 clock = PLL3
03508   *             @arg RCC_SPI6CLKSOURCE_HSI:    SPI6 clock = HSI
03509   *             @arg RCC_SPI6CLKSOURCE_CSI:    SPI6 clock = CSI
03510   *             @arg RCC_SPI6CLKSOURCE_HSE:    SPI6 clock = HSE
03511   *                @arg RCC_SPI6CLKSOURCE_PIN:    SPI6 clock = I2S_CKIN
03512 */
03513 #if defined(RCC_D3CCIPR_SPI6SEL)
03514 #define __HAL_RCC_GET_SPI6_SOURCE() ((uint32_t)(READ_BIT(RCC->D3CCIPR, RCC_D3CCIPR_SPI6SEL)))
03515 #else
03516 #define __HAL_RCC_GET_SPI6_SOURCE() ((uint32_t)(READ_BIT(RCC->SRDCCIPR, RCC_SRDCCIPR_SPI6SEL)))
03517 #endif /* RCC_D3CCIPR_SPI6SEL */
03518 
03519 /** @brief  Macro to configure the SDMMC clock
03520   * @param  __SDMMCCLKSource__ specifies  clock source  for SDMMC
03521   *         This parameter can be one of the following values:
03522   *            @arg RCC_SDMMCCLKSOURCE_PLL:  PLLQ selected as SDMMC clock
03523   *            @arg RCC_SDMMCCLKSOURCE_PLL2: PLL2R selected as SDMMC clock
03524   */
03525 #if defined(RCC_D1CCIPR_SDMMCSEL)
03526 #define __HAL_RCC_SDMMC_CONFIG(__SDMMCCLKSource__) \
03527                   MODIFY_REG(RCC->D1CCIPR, RCC_D1CCIPR_SDMMCSEL, (uint32_t)(__SDMMCCLKSource__))
03528 #else
03529 #define __HAL_RCC_SDMMC_CONFIG(__SDMMCCLKSource__) \
03530                   MODIFY_REG(RCC->CDCCIPR, RCC_CDCCIPR_SDMMCSEL, (uint32_t)(__SDMMCCLKSource__))
03531 #endif /* RCC_D1CCIPR_SDMMCSEL */
03532 
03533 /** @brief  Macro to get the SDMMC clock
03534   */
03535 #if defined(RCC_D1CCIPR_SDMMCSEL)
03536 #define __HAL_RCC_GET_SDMMC_SOURCE() ((uint32_t)(READ_BIT(RCC->D1CCIPR, RCC_D1CCIPR_SDMMCSEL)))
03537 #else
03538 #define __HAL_RCC_GET_SDMMC_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIPR, RCC_CDCCIPR_SDMMCSEL)))
03539 #endif /* RCC_D1CCIPR_SDMMCSEL */
03540 
03541 /** @brief macro to configure the RNG clock (RNGCLK).
03542   *
03543   * @param  __RNGCLKSource__ specifies the RNG clock source.
03544   *          This parameter can be one of the following values:
03545   *            @arg RCC_RNGCLKSOURCE_HSI48: HSI48 selected as RNG clock
03546   *            @arg RCC_RNGCLKSOURCE_PLL: PLL1Q selected as RNG clock
03547   *            @arg RCC_RNGCLKSOURCE_LSE: LSE selected as RNG clock
03548   *            @arg RCC_RNGCLKSOURCE_LSI: LSI selected as RNG clock
03549   */
03550 #if defined(RCC_D2CCIP2R_RNGSEL)
03551 #define __HAL_RCC_RNG_CONFIG(__RNGCLKSource__) \
03552                   MODIFY_REG(RCC->D2CCIP2R, RCC_D2CCIP2R_RNGSEL, (uint32_t)(__RNGCLKSource__))
03553 #else
03554 #define __HAL_RCC_RNG_CONFIG(__RNGCLKSource__) \
03555                   MODIFY_REG(RCC->CDCCIP2R, RCC_CDCCIP2R_RNGSEL, (uint32_t)(__RNGCLKSource__))
03556 #endif /* RCC_D2CCIP2R_RNGSEL */
03557 
03558 /** @brief  macro to get the RNG clock source.
03559   * @retval The clock source can be one of the following values:
03560   *            @arg RCC_RNGCLKSOURCE_HSI48: HSI48 selected as RNG clock
03561   *            @arg RCC_RNGCLKSOURCE_PLL: PLL1Q selected as RNG clock
03562   *            @arg RCC_RNGCLKSOURCE_LSE: LSE selected as RNG clock
03563   *            @arg RCC_RNGCLKSOURCE_LSI: LSI selected as RNG clock
03564   */
03565 #if defined(RCC_D2CCIP2R_RNGSEL)
03566 #define __HAL_RCC_GET_RNG_SOURCE() ((uint32_t)(READ_BIT(RCC->D2CCIP2R, RCC_D2CCIP2R_RNGSEL)))
03567 #else
03568 #define __HAL_RCC_GET_RNG_SOURCE() ((uint32_t)(READ_BIT(RCC->CDCCIP2R, RCC_CDCCIP2R_RNGSEL)))
03569 #endif /* RCC_D2CCIP2R_RNGSEL */
03570 
03571 #if defined(HRTIM1)
03572 /** @brief  Macro to configure the HRTIM1 prescaler clock source.
03573   * @param  __HRTIM1CLKSource__ specifies the HRTIM1 prescaler clock source.
03574   *         This parameter can be one of the following values:
03575   *            @arg @ref RCC_HRTIM1CLK_TIMCLK    Timers  clock  selected as HRTIM1 prescaler clock
03576   *            @arg @ref RCC_HRTIM1CLK_CPUCLK CPU Clock selected as HRTIM1 clock
03577   */
03578 #define __HAL_RCC_HRTIM1_CONFIG(__HRTIM1CLKSource__) \
03579                   MODIFY_REG(RCC->CFGR, RCC_CFGR_HRTIMSEL, (uint32_t)(__HRTIM1CLKSource__))
03580 
03581 /** @brief  Macro to get the HRTIM1 clock source.
03582   * @retval The clock source can be one of the following values:
03583   *            @arg @ref RCC_HRTIM1CLK_TIMCLK   Timers  clock  selected as HRTIM1 prescaler clock
03584   *            @arg @ref RCC_HRTIM1CLK_CPUCLK CPU Clock selected as HRTIM1 clock
03585   */
03586 #define __HAL_RCC_GET_HRTIM1_SOURCE() ((uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_HRTIMSEL)))
03587 #endif /* HRTIM1 */
03588 
03589 /** @brief  Macro to configure the Timers clocks prescalers
03590   * @param  __PRESC__  specifies the Timers clocks prescalers selection
03591   *         This parameter can be one of the following values:
03592   *            @arg RCC_TIMPRES_DESACTIVATED: The Timers kernels clocks prescaler is
03593   *                 equal to rcc_hclk1 if D2PPREx is corresponding to division by 1 or 2,
03594   *                 else it is equal to 2 x Frcc_pclkx_d2 (default after reset)
03595   *            @arg RCC_TIMPRES_ACTIVATED: The Timers kernels clocks prescaler is
03596   *                 equal to rcc_hclk1 if D2PPREx is corresponding to division by 1, 2 or 4,
03597   *                 else it is equal to 4 x Frcc_pclkx_d2
03598   */
03599 #define __HAL_RCC_TIMCLKPRESCALER(__PRESC__) do {RCC->CFGR &= ~(RCC_CFGR_TIMPRE);\
03600                                                  RCC->CFGR |= (__PRESC__);       \
03601                                                 }while(0)
03602 
03603 /**
03604   * @brief Enable the RCC LSE CSS Extended Interrupt Line.
03605   * @retval None
03606   */
03607 #define __HAL_RCC_LSECSS_EXTI_ENABLE_IT()      SET_BIT(EXTI->IMR1, RCC_EXTI_LINE_LSECSS)
03608 
03609 /**
03610   * @brief Disable the RCC LSE CSS Extended Interrupt Line.
03611   * @retval None
03612   */
03613 #define __HAL_RCC_LSECSS_EXTI_DISABLE_IT()     CLEAR_BIT(EXTI->IMR1, RCC_EXTI_LINE_LSECSS)
03614 
03615 /**
03616   * @brief Enable the RCC LSE CSS Event Line.
03617   * @retval None.
03618   */
03619 #define __HAL_RCC_LSECSS_EXTI_ENABLE_EVENT()   SET_BIT(EXTI->EMR1, RCC_EXTI_LINE_LSECSS)
03620 
03621 /**
03622   * @brief Disable the RCC LSE CSS Event Line.
03623   * @retval None.
03624   */
03625 #define __HAL_RCC_LSECSS_EXTI_DISABLE_EVENT()  CLEAR_BIT(EXTI->EMR1, RCC_EXTI_LINE_LSECSS)
03626 
03627 #if defined(DUAL_CORE)
03628 /**
03629   * @brief Enable the RCC LSE CSS Extended Interrupt Line for CM4.
03630   * @retval None
03631   */
03632 #define __HAL_RCC_C2_LSECSS_EXTI_ENABLE_IT()       SET_BIT(EXTI->C2IMR1, RCC_EXTI_LINE_LSECSS)
03633 
03634 /**
03635   * @brief Disable the RCC LSE CSS Extended Interrupt Line for CM4.
03636   * @retval None
03637   */
03638 #define __HAL_RCC_C2_LSECSS_EXTI_DISABLE_IT()      CLEAR_BIT(EXTI->C2IMR1, RCC_EXTI_LINE_LSECSS)
03639 
03640 /**
03641   * @brief Enable the RCC LSE CSS Event Line for CM4.
03642   * @retval None.
03643   */
03644 #define __HAL_RCC_C2_LSECSS_EXTI_ENABLE_EVENT()    SET_BIT(EXTI->C2EMR1, RCC_EXTI_LINE_LSECSS)
03645 
03646 /**
03647   * @brief Disable the RCC LSE CSS Event Line for CM4.
03648   * @retval None.
03649   */
03650 #define __HAL_RCC_C2_LSECSS_EXTI_DISABLE_EVENT()   CLEAR_BIT(EXTI->C2EMR1, RCC_EXTI_LINE_LSECSS)
03651 #endif /* DUAL_CORE */
03652 
03653 /**
03654   * @brief  Enable the RCC LSE CSS Extended Interrupt Falling Trigger.
03655   * @retval None.
03656   */
03657 #define __HAL_RCC_LSECSS_EXTI_ENABLE_FALLING_EDGE()  SET_BIT(EXTI->FTSR1, RCC_EXTI_LINE_LSECSS)
03658 
03659 
03660 /**
03661   * @brief Disable the RCC LSE CSS Extended Interrupt Falling Trigger.
03662   * @retval None.
03663   */
03664 #define __HAL_RCC_LSECSS_EXTI_DISABLE_FALLING_EDGE()  CLEAR_BIT(EXTI->FTSR1, RCC_EXTI_LINE_LSECSS)
03665 
03666 
03667 /**
03668   * @brief  Enable the RCC LSE CSS Extended Interrupt Rising Trigger.
03669   * @retval None.
03670   */
03671 #define __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_EDGE()   SET_BIT(EXTI->RTSR1, RCC_EXTI_LINE_LSECSS)
03672 
03673 /**
03674   * @brief Disable the RCC LSE CSS Extended Interrupt Rising Trigger.
03675   * @retval None.
03676   */
03677 #define __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_EDGE()  CLEAR_BIT(EXTI->RTSR1, RCC_EXTI_LINE_LSECSS)
03678 
03679 /**
03680   * @brief Enable the RCC LSE CSS Extended Interrupt Rising & Falling Trigger.
03681   * @retval None.
03682   */
03683 #define __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_FALLING_EDGE()  \
03684   do {                                                      \
03685     __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_EDGE();             \
03686     __HAL_RCC_LSECSS_EXTI_ENABLE_FALLING_EDGE();            \
03687   } while(0)
03688 
03689 /**
03690   * @brief Disable the RCC LSE CSS Extended Interrupt Rising & Falling Trigger.
03691   * @retval None.
03692   */
03693 #define __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_FALLING_EDGE()  \
03694   do {                                                       \
03695     __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_EDGE();             \
03696     __HAL_RCC_LSECSS_EXTI_DISABLE_FALLING_EDGE();            \
03697   } while(0)
03698 
03699 /**
03700   * @brief Check whether the specified RCC LSE CSS EXTI interrupt flag is set or not.
03701   * @retval EXTI RCC LSE CSS Line Status.
03702   */
03703 #define __HAL_RCC_LSECSS_EXTI_GET_FLAG()       (READ_BIT(EXTI->PR1, RCC_EXTI_LINE_LSECSS) == RCC_EXTI_LINE_LSECSS)
03704 
03705 /**
03706   * @brief Clear the RCC LSE CSS EXTI flag.
03707   * @retval None.
03708   */
03709 #define __HAL_RCC_LSECSS_EXTI_CLEAR_FLAG()     WRITE_REG(EXTI->PR1, RCC_EXTI_LINE_LSECSS)
03710 
03711 #if defined(DUAL_CORE)
03712 /**
03713   * @brief Check whether the specified RCC LSE CSS EXTI interrupt flag is set or not for CM4.
03714   * @retval EXTI RCC LSE CSS Line Status.
03715   */
03716 #define __HAL_RCC_C2_LSECSS_EXTI_GET_FLAG()       (READ_BIT(EXTI->C2PR1, RCC_EXTI_LINE_LSECSS) == RCC_EXTI_LINE_LSECSS)
03717 
03718 /**
03719   * @brief Clear the RCC LSE CSS EXTI flag or not for CM4.
03720   * @retval None.
03721   */
03722 #define __HAL_RCC_C2_LSECSS_EXTI_CLEAR_FLAG()     WRITE_REG(EXTI->C2PR1, RCC_EXTI_LINE_LSECSS)
03723 #endif /* DUAL_CORE */
03724 /**
03725   * @brief Generate a Software interrupt on the RCC LSE CSS EXTI line.
03726   * @retval None.
03727   */
03728 #define __HAL_RCC_LSECSS_EXTI_GENERATE_SWIT()  SET_BIT(EXTI->SWIER1, RCC_EXTI_LINE_LSECSS)
03729  
03730 /**
03731   * @brief  Enable the specified CRS interrupts.
03732   * @param  __INTERRUPT__ specifies the CRS interrupt sources to be enabled.
03733   *          This parameter can be any combination of the following values:
03734   *              @arg @ref RCC_CRS_IT_SYNCOK  SYNC event OK interrupt
03735   *              @arg @ref RCC_CRS_IT_SYNCWARN  SYNC warning interrupt
03736   *              @arg @ref RCC_CRS_IT_ERR  Synchronization or trimming error interrupt
03737   *              @arg @ref RCC_CRS_IT_ESYNC  Expected SYNC interrupt
03738   * @retval None
03739   */
03740 #define __HAL_RCC_CRS_ENABLE_IT(__INTERRUPT__)   SET_BIT(CRS->CR, (__INTERRUPT__))
03741 
03742 /**
03743   * @brief  Disable the specified CRS interrupts.
03744   * @param  __INTERRUPT__ specifies the CRS interrupt sources to be disabled.
03745   *          This parameter can be any combination of the following values:
03746   *              @arg @ref RCC_CRS_IT_SYNCOK  SYNC event OK interrupt
03747   *              @arg @ref RCC_CRS_IT_SYNCWARN  SYNC warning interrupt
03748   *              @arg @ref RCC_CRS_IT_ERR  Synchronization or trimming error interrupt
03749   *              @arg @ref RCC_CRS_IT_ESYNC  Expected SYNC interrupt
03750   * @retval None
03751   */
03752 #define __HAL_RCC_CRS_DISABLE_IT(__INTERRUPT__)  CLEAR_BIT(CRS->CR, (__INTERRUPT__))
03753 
03754 /** @brief  Check whether the CRS interrupt has occurred or not.
03755   * @param  __INTERRUPT__ specifies the CRS interrupt source to check.
03756   *         This parameter can be one of the following values:
03757   *              @arg @ref RCC_CRS_IT_SYNCOK  SYNC event OK interrupt
03758   *              @arg @ref RCC_CRS_IT_SYNCWARN  SYNC warning interrupt
03759   *              @arg @ref RCC_CRS_IT_ERR  Synchronization or trimming error interrupt
03760   *              @arg @ref RCC_CRS_IT_ESYNC  Expected SYNC interrupt
03761   * @retval The new state of __INTERRUPT__ (SET or RESET).
03762   */
03763 #define __HAL_RCC_CRS_GET_IT_SOURCE(__INTERRUPT__)  ((READ_BIT(CRS->CR, (__INTERRUPT__)) != 0U) ? SET : RESET)
03764 
03765 /** @brief  Clear the CRS interrupt pending bits
03766   * @param  __INTERRUPT__ specifies the interrupt pending bit to clear.
03767   *         This parameter can be any combination of the following values:
03768   *              @arg @ref RCC_CRS_IT_SYNCOK  SYNC event OK interrupt
03769   *              @arg @ref RCC_CRS_IT_SYNCWARN  SYNC warning interrupt
03770   *              @arg @ref RCC_CRS_IT_ERR  Synchronization or trimming error interrupt
03771   *              @arg @ref RCC_CRS_IT_ESYNC  Expected SYNC interrupt
03772   *              @arg @ref RCC_CRS_IT_TRIMOVF  Trimming overflow or underflow interrupt
03773   *              @arg @ref RCC_CRS_IT_SYNCERR  SYNC error interrupt
03774   *              @arg @ref RCC_CRS_IT_SYNCMISS  SYNC missed interrupt
03775   */
03776 /* CRS IT Error Mask */
03777 #define  RCC_CRS_IT_ERROR_MASK                 ((uint32_t)(RCC_CRS_IT_TRIMOVF | RCC_CRS_IT_SYNCERR | RCC_CRS_IT_SYNCMISS))
03778 
03779 #define __HAL_RCC_CRS_CLEAR_IT(__INTERRUPT__)  do { \
03780                                                  if(((__INTERRUPT__) & RCC_CRS_IT_ERROR_MASK) != 0U) \
03781                                                  { \
03782                                                    WRITE_REG(CRS->ICR, CRS_ICR_ERRC | ((__INTERRUPT__) & ~RCC_CRS_IT_ERROR_MASK)); \
03783                                                  } \
03784                                                  else \
03785                                                  { \
03786                                                    WRITE_REG(CRS->ICR, (__INTERRUPT__)); \
03787                                                  } \
03788                                                } while(0)
03789 
03790 /**
03791   * @brief  Check whether the specified CRS flag is set or not.
03792   * @param  __FLAG__ specifies the flag to check.
03793   *          This parameter can be one of the following values:
03794   *              @arg @ref RCC_CRS_FLAG_SYNCOK  SYNC event OK
03795   *              @arg @ref RCC_CRS_FLAG_SYNCWARN  SYNC warning
03796   *              @arg @ref RCC_CRS_FLAG_ERR  Error
03797   *              @arg @ref RCC_CRS_FLAG_ESYNC  Expected SYNC
03798   *              @arg @ref RCC_CRS_FLAG_TRIMOVF  Trimming overflow or underflow
03799   *              @arg @ref RCC_CRS_FLAG_SYNCERR  SYNC error
03800   *              @arg @ref RCC_CRS_FLAG_SYNCMISS  SYNC missed
03801   * @retval The new state of _FLAG_ (TRUE or FALSE).
03802   */
03803 #define __HAL_RCC_CRS_GET_FLAG(__FLAG__)  (READ_BIT(CRS->ISR, (__FLAG__)) == (__FLAG__))
03804 
03805 /**
03806   * @brief  Clear the CRS specified FLAG.
03807   * @param __FLAG__ specifies the flag to clear.
03808   *          This parameter can be one of the following values:
03809   *              @arg @ref RCC_CRS_FLAG_SYNCOK  SYNC event OK
03810   *              @arg @ref RCC_CRS_FLAG_SYNCWARN  SYNC warning
03811   *              @arg @ref RCC_CRS_FLAG_ERR  Error
03812   *              @arg @ref RCC_CRS_FLAG_ESYNC  Expected SYNC
03813   *              @arg @ref RCC_CRS_FLAG_TRIMOVF  Trimming overflow or underflow
03814   *              @arg @ref RCC_CRS_FLAG_SYNCERR  SYNC error
03815   *              @arg @ref RCC_CRS_FLAG_SYNCMISS  SYNC missed
03816   * @note RCC_CRS_FLAG_ERR clears RCC_CRS_FLAG_TRIMOVF, RCC_CRS_FLAG_SYNCERR, RCC_CRS_FLAG_SYNCMISS and consequently RCC_CRS_FLAG_ERR
03817   * @retval None
03818   */
03819 
03820 /* CRS Flag Error Mask */
03821 #define RCC_CRS_FLAG_ERROR_MASK                ((uint32_t)(RCC_CRS_FLAG_TRIMOVF | RCC_CRS_FLAG_SYNCERR | RCC_CRS_FLAG_SYNCMISS))
03822 
03823 #define __HAL_RCC_CRS_CLEAR_FLAG(__FLAG__)     do { \
03824                                                  if(((__FLAG__) & RCC_CRS_FLAG_ERROR_MASK) != 0U) \
03825                                                  { \
03826                                                    WRITE_REG(CRS->ICR, CRS_ICR_ERRC | ((__FLAG__) & ~RCC_CRS_FLAG_ERROR_MASK)); \
03827                                                  } \
03828                                                  else \
03829                                                  { \
03830                                                    WRITE_REG(CRS->ICR, (__FLAG__)); \
03831                                                  } \
03832                                                } while(0)
03833 
03834  /** @defgroup RCCEx_CRS_Extended_Features RCCEx CRS Extended Features
03835   * @{
03836   */
03837 /**
03838   * @brief  Enable the oscillator clock for frequency error counter.
03839   * @note   when the CEN bit is set the CRS_CFGR register becomes write-protected.
03840   * @retval None
03841   */
03842 #define __HAL_RCC_CRS_FREQ_ERROR_COUNTER_ENABLE()  SET_BIT(CRS->CR, CRS_CR_CEN)
03843 
03844 /**
03845   * @brief  Disable the oscillator clock for frequency error counter.
03846   * @retval None
03847   */
03848 #define __HAL_RCC_CRS_FREQ_ERROR_COUNTER_DISABLE() CLEAR_BIT(CRS->CR, CRS_CR_CEN)
03849 
03850 /**
03851   * @brief  Enable the automatic hardware adjustment of TRIM bits.
03852   * @note   When the AUTOTRIMEN bit is set the CRS_CFGR register becomes write-protected.
03853   * @retval None
03854   */
03855 #define __HAL_RCC_CRS_AUTOMATIC_CALIB_ENABLE()     SET_BIT(CRS->CR, CRS_CR_AUTOTRIMEN)
03856 
03857 /**
03858   * @brief  Enable or disable the automatic hardware adjustment of TRIM bits.
03859   * @retval None
03860   */
03861 #define __HAL_RCC_CRS_AUTOMATIC_CALIB_DISABLE()    CLEAR_BIT(CRS->CR, CRS_CR_AUTOTRIMEN)
03862 
03863 /**
03864   * @brief  Macro to calculate reload value to be set in CRS register according to target and sync frequencies
03865   * @note   The RELOAD value should be selected according to the ratio between the target frequency and the frequency
03866   *             of the synchronization source after pre-scaling. It is then decreased by one in order to
03867   *             reach the expected synchronization on the zero value. The formula is the following:
03868   *             RELOAD = (fTARGET / fSYNC) -1
03869   * @param  __FTARGET__ Target frequency (value in Hz)
03870   * @param  __FSYNC__ Synchronization signal frequency (value in Hz)
03871   * @retval None
03872   */
03873 #define __HAL_RCC_CRS_RELOADVALUE_CALCULATE(__FTARGET__, __FSYNC__)  (((__FTARGET__) / (__FSYNC__)) - 1U)
03874 
03875 
03876 /**
03877   * @}
03878   */
03879 
03880 
03881 /**
03882   * @}
03883   */
03884 
03885 
03886 /* Exported functions --------------------------------------------------------*/
03887  /** @addtogroup RCCEx_Exported_Functions
03888   * @{
03889   */
03890 
03891 /** @addtogroup RCCEx_Exported_Functions_Group1
03892   * @{
03893   */
03894 HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef  *PeriphClkInit);
03895 void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef  *PeriphClkInit);
03896 uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk);
03897 uint32_t HAL_RCCEx_GetD1PCLK1Freq(void);
03898 uint32_t HAL_RCCEx_GetD3PCLK1Freq(void);
03899 uint32_t HAL_RCCEx_GetD1SysClockFreq(void);
03900 void     HAL_RCCEx_GetPLL1ClockFreq(PLL1_ClocksTypeDef* PLL1_Clocks);
03901 void     HAL_RCCEx_GetPLL2ClockFreq(PLL2_ClocksTypeDef* PLL2_Clocks);
03902 void     HAL_RCCEx_GetPLL3ClockFreq(PLL3_ClocksTypeDef* PLL3_Clocks);
03903 /**
03904   * @}
03905   */
03906 
03907 /** @addtogroup RCCEx_Exported_Functions_Group2
03908   * @{
03909   */
03910 void HAL_RCCEx_WakeUpStopCLKConfig(uint32_t WakeUpClk);
03911 void HAL_RCCEx_KerWakeUpStopCLKConfig(uint32_t WakeUpClk);
03912 void HAL_RCCEx_EnableLSECSS(void);
03913 void HAL_RCCEx_DisableLSECSS(void);
03914 void HAL_RCCEx_EnableLSECSS_IT(void);
03915 void HAL_RCCEx_LSECSS_IRQHandler(void);
03916 void HAL_RCCEx_LSECSS_Callback(void);
03917 #if defined(DUAL_CORE)
03918 void HAL_RCCEx_EnableBootCore(uint32_t RCC_BootCx);
03919 #endif /*DUAL_CORE*/
03920 #if defined(RCC_GCR_WW1RSC)
03921 void HAL_RCCEx_WWDGxSysResetConfig(uint32_t RCC_WWDGx);
03922 #endif /*RCC_GCR_WW1RSC*/
03923 /**
03924   * @}
03925   */
03926 
03927 
03928 /** @addtogroup RCCEx_Exported_Functions_Group3
03929   * @{
03930   */
03931 
03932 void     HAL_RCCEx_CRSConfig(RCC_CRSInitTypeDef *pInit);
03933 void     HAL_RCCEx_CRSSoftwareSynchronizationGenerate(void);
03934 void     HAL_RCCEx_CRSGetSynchronizationInfo(RCC_CRSSynchroInfoTypeDef *pSynchroInfo);
03935 uint32_t HAL_RCCEx_CRSWaitSynchronization(uint32_t Timeout);
03936 void     HAL_RCCEx_CRS_IRQHandler(void);
03937 void     HAL_RCCEx_CRS_SyncOkCallback(void);
03938 void     HAL_RCCEx_CRS_SyncWarnCallback(void);
03939 void     HAL_RCCEx_CRS_ExpectedSyncCallback(void);
03940 void     HAL_RCCEx_CRS_ErrorCallback(uint32_t Error);
03941 
03942 /**
03943   * @}
03944   */
03945 
03946 /**
03947   * @}
03948   */
03949 
03950  /* Private macros ------------------------------------------------------------*/
03951 /** @addtogroup RCCEx_Private_Macros RCCEx Private Macros
03952   * @{
03953   */
03954 /** @defgroup RCCEx_IS_RCC_Definitions RCC Private macros to check input parameters
03955   * @{
03956   */
03957 
03958 #define IS_RCC_PLL2CLOCKOUT_VALUE(VALUE) (((VALUE) == RCC_PLL2_DIVP) || \
03959                                          ((VALUE) == RCC_PLL2_DIVQ)  || \
03960                                          ((VALUE) == RCC_PLL2_DIVR))
03961 
03962 #define IS_RCC_PLL3CLOCKOUT_VALUE(VALUE) (((VALUE) == RCC_PLL3_DIVP) || \
03963                                           ((VALUE) == RCC_PLL3_DIVQ) || \
03964                                           ((VALUE) == RCC_PLL3_DIVR))
03965 
03966 #if defined(RCC_D2CCIP2R_USART16SEL)
03967 #define IS_RCC_USART16CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART16CLKSOURCE_D2PCLK2)|| \
03968                                          ((SOURCE) == RCC_USART16CLKSOURCE_PLL2)   || \
03969                                          ((SOURCE) == RCC_USART16CLKSOURCE_PLL3)   || \
03970                                          ((SOURCE) == RCC_USART16CLKSOURCE_CSI)    || \
03971                                          ((SOURCE) == RCC_USART16CLKSOURCE_LSE)    || \
03972                                          ((SOURCE) == RCC_USART16CLKSOURCE_HSI))
03973 #else
03974 #define IS_RCC_USART16CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART16CLKSOURCE_D2PCLK2)|| \
03975                                          ((SOURCE) == RCC_USART16CLKSOURCE_CDPCLK2)|| \
03976                                          ((SOURCE) == RCC_USART16CLKSOURCE_PLL2)   || \
03977                                          ((SOURCE) == RCC_USART16CLKSOURCE_PLL3)   || \
03978                                          ((SOURCE) == RCC_USART16CLKSOURCE_CSI)    || \
03979                                          ((SOURCE) == RCC_USART16CLKSOURCE_LSE)    || \
03980                                          ((SOURCE) == RCC_USART16CLKSOURCE_HSI))
03981 /* alias*/
03982 #define IS_RCC_USART16910CLKSOURCE    IS_RCC_USART16CLKSOURCE
03983 #endif /* RCC_D2CCIP2R_USART16SEL */
03984 
03985 #if defined(RCC_D2CCIP2R_USART28SEL)
03986 #define IS_RCC_USART234578CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART234578CLKSOURCE_D2PCLK1)|| \
03987                                              ((SOURCE) == RCC_USART234578CLKSOURCE_PLL2)   || \
03988                                              ((SOURCE) == RCC_USART234578CLKSOURCE_PLL3)   || \
03989                                              ((SOURCE) == RCC_USART234578CLKSOURCE_CSI)    || \
03990                                              ((SOURCE) == RCC_USART234578CLKSOURCE_LSE)    || \
03991                                              ((SOURCE) == RCC_USART234578CLKSOURCE_HSI))
03992 #else
03993 #define IS_RCC_USART234578CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART234578CLKSOURCE_D2PCLK1)|| \
03994                                              ((SOURCE) == RCC_USART234578CLKSOURCE_CDPCLK1)|| \
03995                                              ((SOURCE) == RCC_USART234578CLKSOURCE_PLL2)   || \
03996                                              ((SOURCE) == RCC_USART234578CLKSOURCE_PLL3)   || \
03997                                              ((SOURCE) == RCC_USART234578CLKSOURCE_CSI)    || \
03998                                              ((SOURCE) == RCC_USART234578CLKSOURCE_LSE)    || \
03999                                              ((SOURCE) == RCC_USART234578CLKSOURCE_HSI))
04000 #endif /* RCC_D2CCIP2R_USART28SEL */
04001 
04002 #define IS_RCC_USART1CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART1CLKSOURCE_D2PCLK2)|| \
04003                                         ((SOURCE) == RCC_USART1CLKSOURCE_PLL2)   || \
04004                                         ((SOURCE) == RCC_USART1CLKSOURCE_PLL3)   || \
04005                                         ((SOURCE) == RCC_USART1CLKSOURCE_CSI)    || \
04006                                         ((SOURCE) == RCC_USART1CLKSOURCE_LSE)    || \
04007                                         ((SOURCE) == RCC_USART1CLKSOURCE_HSI))
04008 
04009 #define IS_RCC_USART2CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART2CLKSOURCE_D2PCLK1)|| \
04010                                         ((SOURCE) == RCC_USART2CLKSOURCE_PLL2)   || \
04011                                         ((SOURCE) == RCC_USART2CLKSOURCE_PLL3)   || \
04012                                         ((SOURCE) == RCC_USART2CLKSOURCE_CSI)    || \
04013                                         ((SOURCE) == RCC_USART2CLKSOURCE_LSE)    || \
04014                                         ((SOURCE) == RCC_USART2CLKSOURCE_HSI))
04015 
04016 #define IS_RCC_USART3CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART3CLKSOURCE_D2PCLK1)|| \
04017                                         ((SOURCE) == RCC_USART3CLKSOURCE_PLL2)   || \
04018                                         ((SOURCE) == RCC_USART3CLKSOURCE_PLL3)   || \
04019                                         ((SOURCE) == RCC_USART3CLKSOURCE_CSI)    || \
04020                                         ((SOURCE) == RCC_USART3CLKSOURCE_LSE)    || \
04021                                         ((SOURCE) == RCC_USART3CLKSOURCE_HSI))
04022 
04023 #define IS_RCC_UART4CLKSOURCE(SOURCE)  (((SOURCE) == RCC_UART4CLKSOURCE_D2PCLK1) || \
04024                                         ((SOURCE) == RCC_UART4CLKSOURCE_PLL2)    || \
04025                                         ((SOURCE) == RCC_UART4CLKSOURCE_PLL3)    || \
04026                                         ((SOURCE) == RCC_UART4CLKSOURCE_CSI)     || \
04027                                         ((SOURCE) == RCC_UART4CLKSOURCE_LSE)     || \
04028                                         ((SOURCE) == RCC_UART4CLKSOURCE_HSI))
04029 
04030 #define IS_RCC_UART5CLKSOURCE(SOURCE)  (((SOURCE) == RCC_UART5CLKSOURCE_D2PCLK1) || \
04031                                         ((SOURCE) == RCC_UART5CLKSOURCE_PLL2)    || \
04032                                         ((SOURCE) == RCC_UART5CLKSOURCE_PLL3)    || \
04033                                         ((SOURCE) == RCC_UART5CLKSOURCE_CSI)     || \
04034                                         ((SOURCE) == RCC_UART5CLKSOURCE_LSE)     || \
04035                                         ((SOURCE) == RCC_UART5CLKSOURCE_HSI))
04036 
04037 #define IS_RCC_USART6CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART6CLKSOURCE_D2PCLK2)|| \
04038                                         ((SOURCE) == RCC_USART6CLKSOURCE_PLL2)   || \
04039                                         ((SOURCE) == RCC_USART6CLKSOURCE_PLL3)   || \
04040                                         ((SOURCE) == RCC_USART6CLKSOURCE_CSI)    || \
04041                                         ((SOURCE) == RCC_USART6CLKSOURCE_LSE)    || \
04042                                         ((SOURCE) == RCC_USART6CLKSOURCE_HSI))
04043 
04044 #define IS_RCC_UART7CLKSOURCE(SOURCE)  (((SOURCE) == RCC_UART7CLKSOURCE_D2PCLK1) || \
04045                                         ((SOURCE) == RCC_UART7CLKSOURCE_PLL2)    || \
04046                                         ((SOURCE) == RCC_UART7CLKSOURCE_PLL3)    || \
04047                                         ((SOURCE) == RCC_UART7CLKSOURCE_CSI)     || \
04048                                         ((SOURCE) == RCC_UART7CLKSOURCE_LSE)     || \
04049                                         ((SOURCE) == RCC_UART7CLKSOURCE_HSI))
04050 
04051 #define IS_RCC_UART8CLKSOURCE(SOURCE)  (((SOURCE) == RCC_UART8CLKSOURCE_D2PCLK1) || \
04052                                         ((SOURCE) == RCC_UART8CLKSOURCE_PLL2)    || \
04053                                         ((SOURCE) == RCC_UART8CLKSOURCE_PLL3)    || \
04054                                         ((SOURCE) == RCC_UART8CLKSOURCE_CSI)     || \
04055                                         ((SOURCE) == RCC_UART8CLKSOURCE_LSE)     || \
04056                                         ((SOURCE) == RCC_UART8CLKSOURCE_HSI))
04057 
04058 #if defined(UART9)
04059 #define IS_RCC_UART9CLKSOURCE(SOURCE) (((SOURCE) == RCC_UART9CLKSOURCE_D2PCLK2)|| \
04060                                         ((SOURCE) == RCC_UART9CLKSOURCE_PLL2)  || \
04061                                         ((SOURCE) == RCC_UART9CLKSOURCE_PLL3)  || \
04062                                         ((SOURCE) == RCC_UART9CLKSOURCE_CSI)   || \
04063                                         ((SOURCE) == RCC_UART9CLKSOURCE_LSE)   || \
04064                                         ((SOURCE) == RCC_UART9CLKSOURCE_HSI))
04065 #endif
04066 
04067 #if defined(USART10)
04068 #define IS_RCC_USART10CLKSOURCE(SOURCE) (((SOURCE) == RCC_USART10CLKSOURCE_D2PCLK2)|| \
04069                                         ((SOURCE) == RCC_USART10CLKSOURCE_PLL2)    || \
04070                                         ((SOURCE) == RCC_USART10CLKSOURCE_PLL3)    || \
04071                                         ((SOURCE) == RCC_USART10CLKSOURCE_CSI)     || \
04072                                         ((SOURCE) == RCC_USART10CLKSOURCE_LSE)     || \
04073                                         ((SOURCE) == RCC_USART10CLKSOURCE_HSI))
04074 #endif
04075 
04076 #define IS_RCC_LPUART1CLKSOURCE(SOURCE) (((SOURCE) == RCC_LPUART1CLKSOURCE_D3PCLK1) || \
04077                                          ((SOURCE) == RCC_LPUART1CLKSOURCE_PLL2)    || \
04078                                          ((SOURCE) == RCC_LPUART1CLKSOURCE_PLL3)    || \
04079                                          ((SOURCE) == RCC_LPUART1CLKSOURCE_CSI)     || \
04080                                          ((SOURCE) == RCC_LPUART1CLKSOURCE_LSE)     || \
04081                                          ((SOURCE) == RCC_LPUART1CLKSOURCE_HSI))
04082 
04083 #if defined(I2C5)
04084 #define IS_RCC_I2C1235CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C1235CLKSOURCE_PLL3)   || \
04085                                           ((SOURCE) == RCC_I2C1235CLKSOURCE_HSI)     || \
04086                                           ((SOURCE) == RCC_I2C1235CLKSOURCE_D2PCLK1) || \
04087                                           ((SOURCE) == RCC_I2C1235CLKSOURCE_CSI))
04088 
04089 #define IS_RCC_I2C123CLKSOURCE    IS_RCC_I2C1235CLKSOURCE  /* For  API Backward compatibility */
04090 #else
04091 #define IS_RCC_I2C123CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C123CLKSOURCE_PLL3)   || \
04092                                           ((SOURCE) == RCC_I2C123CLKSOURCE_HSI)    || \
04093                                           ((SOURCE) == RCC_I2C123CLKSOURCE_D2PCLK1)|| \
04094                                           ((SOURCE) == RCC_I2C123CLKSOURCE_CSI))
04095 #endif /*I2C5*/
04096 
04097 #define IS_RCC_I2C1CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C1CLKSOURCE_PLL3)   || \
04098                                         ((SOURCE) == RCC_I2C1CLKSOURCE_HSI)    || \
04099                                         ((SOURCE) == RCC_I2C1CLKSOURCE_D2PCLK1)|| \
04100                                         ((SOURCE) == RCC_I2C1CLKSOURCE_CSI))
04101 
04102 #define IS_RCC_I2C2CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C2CLKSOURCE_PLL3)   || \
04103                                         ((SOURCE) == RCC_I2C2CLKSOURCE_HSI)    || \
04104                                         ((SOURCE) == RCC_I2C2CLKSOURCE_D2PCLK1)|| \
04105                                         ((SOURCE) == RCC_I2C2CLKSOURCE_CSI))
04106 
04107 #define IS_RCC_I2C3CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C3CLKSOURCE_PLL3)   || \
04108                                         ((SOURCE) == RCC_I2C3CLKSOURCE_HSI)    || \
04109                                         ((SOURCE) == RCC_I2C3CLKSOURCE_D2PCLK1)|| \
04110                                         ((SOURCE) == RCC_I2C3CLKSOURCE_CSI))
04111 
04112 #define IS_RCC_I2C4CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C4CLKSOURCE_PLL3)   || \
04113                                         ((SOURCE) == RCC_I2C4CLKSOURCE_HSI)    || \
04114                                         ((SOURCE) == RCC_I2C4CLKSOURCE_D3PCLK1)|| \
04115                                         ((SOURCE) == RCC_I2C3CLKSOURCE_CSI))
04116 
04117 #if defined(I2C5)
04118 #define IS_RCC_I2C5CLKSOURCE(SOURCE)   (((SOURCE) == RCC_I2C5CLKSOURCE_PLL3)   || \
04119                                         ((SOURCE) == RCC_I2C5CLKSOURCE_HSI)    || \
04120                                         ((SOURCE) == RCC_I2C5CLKSOURCE_D2PCLK1)|| \
04121                                         ((SOURCE) == RCC_I2C5CLKSOURCE_CSI))
04122 #endif /*I2C5*/
04123 
04124 #define IS_RCC_RNGCLKSOURCE(SOURCE)    (((SOURCE) == RCC_RNGCLKSOURCE_HSI48)|| \
04125                                         ((SOURCE) == RCC_RNGCLKSOURCE_PLL)  || \
04126                                         ((SOURCE) == RCC_RNGCLKSOURCE_LSE)  || \
04127                                         ((SOURCE) == RCC_RNGCLKSOURCE_LSI))
04128 
04129 #if defined(HRTIM1)
04130 #define IS_RCC_HRTIM1CLKSOURCE(SOURCE) (((SOURCE) == RCC_HRTIM1CLK_TIMCLK) || \
04131                                         ((SOURCE) == RCC_HRTIM1CLK_CPUCLK))
04132 #endif
04133 
04134 #define IS_RCC_USBCLKSOURCE(SOURCE)    (((SOURCE) == RCC_USBCLKSOURCE_PLL)  || \
04135                                         ((SOURCE) == RCC_USBCLKSOURCE_PLL3) || \
04136                                         ((SOURCE) == RCC_USBCLKSOURCE_HSI48))
04137 
04138 #define IS_RCC_SAI1CLK(__SOURCE__)   \
04139                (((__SOURCE__) == RCC_SAI1CLKSOURCE_PLL)  || \
04140                 ((__SOURCE__) == RCC_SAI1CLKSOURCE_PLL2) || \
04141                 ((__SOURCE__) == RCC_SAI1CLKSOURCE_PLL3) || \
04142                 ((__SOURCE__) == RCC_SAI1CLKSOURCE_CLKP) || \
04143                 ((__SOURCE__) == RCC_SAI1CLKSOURCE_PIN))
04144 
04145 #if defined(SAI3)
04146 #define IS_RCC_SAI23CLK(__SOURCE__)   \
04147                (((__SOURCE__) == RCC_SAI23CLKSOURCE_PLL)  || \
04148                 ((__SOURCE__) == RCC_SAI23CLKSOURCE_PLL2) || \
04149                 ((__SOURCE__) == RCC_SAI23CLKSOURCE_PLL3) || \
04150                 ((__SOURCE__) == RCC_SAI23CLKSOURCE_CLKP) || \
04151                 ((__SOURCE__) == RCC_SAI23CLKSOURCE_PIN))
04152 
04153 #define IS_RCC_SAI2CLK(__SOURCE__)   \
04154                (((__SOURCE__) == RCC_SAI2CLKSOURCE_PLL)  || \
04155                 ((__SOURCE__) == RCC_SAI2CLKSOURCE_PLL2) || \
04156                 ((__SOURCE__) == RCC_SAI2CLKSOURCE_PLL3) || \
04157                 ((__SOURCE__) == RCC_SAI2CLKSOURCE_CLKP) || \
04158                 ((__SOURCE__) == RCC_SAI2CLKSOURCE_PIN))
04159 
04160 
04161 #define IS_RCC_SAI3CLK(__SOURCE__)   \
04162                (((__SOURCE__) == RCC_SAI3CLKSOURCE_PLL)  || \
04163                 ((__SOURCE__) == RCC_SAI3CLKSOURCE_PLL2) || \
04164                 ((__SOURCE__) == RCC_SAI3CLKSOURCE_PLL3) || \
04165                 ((__SOURCE__) == RCC_SAI3CLKSOURCE_CLKP) || \
04166                 ((__SOURCE__) == RCC_SAI3CLKSOURCE_PIN))
04167 #endif
04168 
04169 #if defined(RCC_CDCCIP1R_SAI2ASEL)
04170 #define IS_RCC_SAI2ACLK(__SOURCE__)   \
04171                (((__SOURCE__) == RCC_SAI2ACLKSOURCE_PLL)  || \
04172                 ((__SOURCE__) == RCC_SAI2ACLKSOURCE_PLL2) || \
04173                 ((__SOURCE__) == RCC_SAI2ACLKSOURCE_PLL3) || \
04174                 ((__SOURCE__) == RCC_SAI2ACLKSOURCE_CLKP) || \
04175                 ((__SOURCE__) == RCC_SAI2ACLKSOURCE_PIN) || \
04176                 ((__SOURCE__) == RCC_SAI2ACLKSOURCE_SPDIF))
04177 #endif
04178 
04179 #if defined(RCC_CDCCIP1R_SAI2BSEL)
04180 #define IS_RCC_SAI2BCLK(__SOURCE__)   \
04181                (((__SOURCE__) == RCC_SAI2BCLKSOURCE_PLL)  || \
04182                 ((__SOURCE__) == RCC_SAI2BCLKSOURCE_PLL2) || \
04183                 ((__SOURCE__) == RCC_SAI2BCLKSOURCE_PLL3) || \
04184                 ((__SOURCE__) == RCC_SAI2BCLKSOURCE_CLKP) || \
04185                 ((__SOURCE__) == RCC_SAI2BCLKSOURCE_PIN) || \
04186                 ((__SOURCE__) == RCC_SAI2BCLKSOURCE_SPDIF))
04187 #endif
04188 
04189 #define IS_RCC_SPI123CLK(__SOURCE__)   \
04190                (((__SOURCE__) == RCC_SPI123CLKSOURCE_PLL)  || \
04191                 ((__SOURCE__) == RCC_SPI123CLKSOURCE_PLL2) || \
04192                 ((__SOURCE__) == RCC_SPI123CLKSOURCE_PLL3) || \
04193                 ((__SOURCE__) == RCC_SPI123CLKSOURCE_CLKP) || \
04194                 ((__SOURCE__) == RCC_SPI123CLKSOURCE_PIN))
04195 
04196 #define IS_RCC_SPI1CLK(__SOURCE__)   \
04197                (((__SOURCE__) == RCC_SPI1CLKSOURCE_PLL)  || \
04198                 ((__SOURCE__) == RCC_SPI1CLKSOURCE_PLL2) || \
04199                 ((__SOURCE__) == RCC_SPI1CLKSOURCE_PLL3) || \
04200                 ((__SOURCE__) == RCC_SPI1CLKSOURCE_CLKP) || \
04201                 ((__SOURCE__) == RCC_SPI1CLKSOURCE_PIN))
04202 
04203 #define IS_RCC_SPI2CLK(__SOURCE__)   \
04204                (((__SOURCE__) == RCC_SPI2CLKSOURCE_PLL)  || \
04205                 ((__SOURCE__) == RCC_SPI2CLKSOURCE_PLL2) || \
04206                 ((__SOURCE__) == RCC_SPI2CLKSOURCE_PLL3) || \
04207                 ((__SOURCE__) == RCC_SPI2CLKSOURCE_CLKP) || \
04208                 ((__SOURCE__) == RCC_SPI2CLKSOURCE_PIN))
04209 
04210 #define IS_RCC_SPI3CLK(__SOURCE__)   \
04211                (((__SOURCE__) == RCC_SPI3CLKSOURCE_PLL)  || \
04212                 ((__SOURCE__) == RCC_SPI3CLKSOURCE_PLL2) || \
04213                 ((__SOURCE__) == RCC_SPI3CLKSOURCE_PLL3) || \
04214                 ((__SOURCE__) == RCC_SPI3CLKSOURCE_CLKP) || \
04215                 ((__SOURCE__) == RCC_SPI3CLKSOURCE_PIN))
04216 
04217 #define IS_RCC_SPI45CLK(__SOURCE__)   \
04218                (((__SOURCE__) == RCC_SPI45CLKSOURCE_D2PCLK1)  || \
04219                 ((__SOURCE__) == RCC_SPI45CLKSOURCE_PLL2)     || \
04220                 ((__SOURCE__) == RCC_SPI45CLKSOURCE_PLL3)     || \
04221                 ((__SOURCE__) == RCC_SPI45CLKSOURCE_HSI)      || \
04222                 ((__SOURCE__) == RCC_SPI45CLKSOURCE_CSI)      || \
04223                 ((__SOURCE__) == RCC_SPI45CLKSOURCE_HSE))
04224 
04225 #define IS_RCC_SPI4CLK(__SOURCE__)   \
04226                (((__SOURCE__) == RCC_SPI4CLKSOURCE_D2PCLK1)  || \
04227                 ((__SOURCE__) == RCC_SPI4CLKSOURCE_PLL2)     || \
04228                 ((__SOURCE__) == RCC_SPI4CLKSOURCE_PLL3)     || \
04229                 ((__SOURCE__) == RCC_SPI4CLKSOURCE_HSI)      || \
04230                 ((__SOURCE__) == RCC_SPI4CLKSOURCE_CSI)      || \
04231                 ((__SOURCE__) == RCC_SPI4CLKSOURCE_HSE))
04232 
04233 #define IS_RCC_SPI5CLK(__SOURCE__)   \
04234                (((__SOURCE__) == RCC_SPI5CLKSOURCE_D2PCLK1)|| \
04235                 ((__SOURCE__) == RCC_SPI5CLKSOURCE_PLL2)   || \
04236                 ((__SOURCE__) == RCC_SPI5CLKSOURCE_PLL3)   || \
04237                 ((__SOURCE__) == RCC_SPI5CLKSOURCE_HSI)    || \
04238                 ((__SOURCE__) == RCC_SPI5CLKSOURCE_CSI)    || \
04239                 ((__SOURCE__) == RCC_SPI5CLKSOURCE_HSE))
04240 
04241 #if defined(RCC_D3CCIPR_SPI6SEL)
04242 #define IS_RCC_SPI6CLK(__SOURCE__)   \
04243                (((__SOURCE__) == RCC_SPI6CLKSOURCE_D3PCLK1) || \
04244                 ((__SOURCE__) == RCC_SPI6CLKSOURCE_PLL2)    || \
04245                 ((__SOURCE__) == RCC_SPI6CLKSOURCE_PLL3)    || \
04246                 ((__SOURCE__) == RCC_SPI6CLKSOURCE_HSI)     || \
04247                 ((__SOURCE__) == RCC_SPI6CLKSOURCE_CSI)     || \
04248                 ((__SOURCE__) == RCC_SPI6CLKSOURCE_HSE))
04249 #else
04250 #define IS_RCC_SPI6CLK(__SOURCE__)   \
04251                (((__SOURCE__) == RCC_SPI6CLKSOURCE_D3PCLK1) || \
04252                 ((__SOURCE__) == RCC_SPI6CLKSOURCE_PLL2)    || \
04253                 ((__SOURCE__) == RCC_SPI6CLKSOURCE_PLL3)    || \
04254                 ((__SOURCE__) == RCC_SPI6CLKSOURCE_HSI)     || \
04255                 ((__SOURCE__) == RCC_SPI6CLKSOURCE_CSI)     || \
04256                 ((__SOURCE__) == RCC_SPI6CLKSOURCE_HSE)     || \
04257                 ((__SOURCE__) == RCC_SPI6CLKSOURCE_PIN))
04258 #endif /* RCC_D3CCIPR_SPI6SEL */
04259 
04260 #if defined(SAI4)
04261 #define IS_RCC_SAI4ACLK(__SOURCE__)   \
04262                (((__SOURCE__) == RCC_SAI4ACLKSOURCE_PLL)  || \
04263                 ((__SOURCE__) == RCC_SAI4ACLKSOURCE_PLL2) || \
04264                 ((__SOURCE__) == RCC_SAI4ACLKSOURCE_PLL3) || \
04265                 ((__SOURCE__) == RCC_SAI4ACLKSOURCE_CLKP) || \
04266                 ((__SOURCE__) == RCC_SAI4ACLKSOURCE_PIN))
04267 
04268 #define IS_RCC_SAI4BCLK(__SOURCE__)   \
04269                (((__SOURCE__) == RCC_SAI4BCLKSOURCE_PLL)  || \
04270                 ((__SOURCE__) == RCC_SAI4BCLKSOURCE_PLL2) || \
04271                 ((__SOURCE__) == RCC_SAI4BCLKSOURCE_PLL3) || \
04272                 ((__SOURCE__) == RCC_SAI4BCLKSOURCE_CLKP) || \
04273                 ((__SOURCE__) == RCC_SAI4BCLKSOURCE_PIN))
04274 #endif /*SAI4*/
04275 
04276 #define IS_RCC_PLL3M_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 63U))
04277 #define IS_RCC_PLL3N_VALUE(VALUE) ((4U <= (VALUE)) && ((VALUE) <= 512U))
04278 #define IS_RCC_PLL3P_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
04279 #define IS_RCC_PLL3Q_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
04280 #define IS_RCC_PLL3R_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
04281 
04282 #define IS_RCC_PLL2M_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 63U))
04283 #define IS_RCC_PLL2N_VALUE(VALUE) ((4U <= (VALUE)) && ((VALUE) <= 512U))
04284 #define IS_RCC_PLL2P_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
04285 #define IS_RCC_PLL2Q_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
04286 #define IS_RCC_PLL2R_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
04287 
04288 #define IS_RCC_PLL2RGE_VALUE(VALUE) (((VALUE) == RCC_PLL2VCIRANGE_0)  || \
04289                                     ((VALUE) == RCC_PLL2VCIRANGE_1)   || \
04290                                     ((VALUE) == RCC_PLL2VCIRANGE_2)   || \
04291                                     ((VALUE) == RCC_PLL2VCIRANGE_3))
04292 
04293 #define IS_RCC_PLL3RGE_VALUE(VALUE) (((VALUE) == RCC_PLL3VCIRANGE_0)  || \
04294                                     ((VALUE) == RCC_PLL3VCIRANGE_1)   || \
04295                                     ((VALUE) == RCC_PLL3VCIRANGE_2)   || \
04296                                     ((VALUE) == RCC_PLL3VCIRANGE_3))
04297 
04298 #define IS_RCC_PLL2VCO_VALUE(VALUE) (((VALUE) == RCC_PLL2VCOWIDE)  || \
04299                                     ((VALUE) == RCC_PLL2VCOMEDIUM))
04300 
04301 #define IS_RCC_PLL3VCO_VALUE(VALUE) (((VALUE) == RCC_PLL3VCOWIDE)  || \
04302                                     ((VALUE) == RCC_PLL3VCOMEDIUM))
04303 
04304 #define IS_RCC_LPTIM1CLK(SOURCE)       (((SOURCE) == RCC_LPTIM1CLKSOURCE_D2PCLK1)|| \
04305                                         ((SOURCE) == RCC_LPTIM1CLKSOURCE_PLL2)   || \
04306                                         ((SOURCE) == RCC_LPTIM1CLKSOURCE_PLL3)   || \
04307                                         ((SOURCE) == RCC_LPTIM1CLKSOURCE_LSE)    || \
04308                                         ((SOURCE) == RCC_LPTIM1CLKSOURCE_LSI)    || \
04309                                         ((SOURCE) == RCC_LPTIM1CLKSOURCE_CLKP))
04310 
04311 #define IS_RCC_LPTIM2CLK(SOURCE)       (((SOURCE) == RCC_LPTIM2CLKSOURCE_D3PCLK1)|| \
04312                                         ((SOURCE) == RCC_LPTIM2CLKSOURCE_PLL2)   || \
04313                                         ((SOURCE) == RCC_LPTIM2CLKSOURCE_PLL3)   || \
04314                                         ((SOURCE) == RCC_LPTIM2CLKSOURCE_LSE)    || \
04315                                         ((SOURCE) == RCC_LPTIM2CLKSOURCE_LSI)    || \
04316                                         ((SOURCE) == RCC_LPTIM2CLKSOURCE_CLKP))
04317 
04318 #define IS_RCC_LPTIM345CLK(SOURCE)     (((SOURCE) == RCC_LPTIM345CLKSOURCE_D3PCLK1)|| \
04319                                         ((SOURCE) == RCC_LPTIM345CLKSOURCE_PLL2)   || \
04320                                         ((SOURCE) == RCC_LPTIM345CLKSOURCE_PLL3)   || \
04321                                         ((SOURCE) == RCC_LPTIM345CLKSOURCE_LSE)    || \
04322                                         ((SOURCE) == RCC_LPTIM345CLKSOURCE_LSI)    || \
04323                                         ((SOURCE) == RCC_LPTIM345CLKSOURCE_CLKP))
04324 
04325 #define IS_RCC_LPTIM3CLK(SOURCE)       (((SOURCE) == RCC_LPTIM3CLKSOURCE_D3PCLK1)  || \
04326                                         ((SOURCE) == RCC_LPTIM3CLKSOURCE_PLL2)     || \
04327                                         ((SOURCE) == RCC_LPTIM3CLKSOURCE_PLL3)     || \
04328                                         ((SOURCE) == RCC_LPTIM3CLKSOURCE_LSE)      || \
04329                                         ((SOURCE) == RCC_LPTIM3CLKSOURCE_LSI)      || \
04330                                         ((SOURCE) == RCC_LPTIM3CLKSOURCE_CLKP))
04331 
04332 #if defined(LPTIM4)
04333 #define IS_RCC_LPTIM4CLK(SOURCE)       (((SOURCE) == RCC_LPTIM4CLKSOURCE_D3PCLK1)|| \
04334                                         ((SOURCE) == RCC_LPTIM4CLKSOURCE_PLL2)   || \
04335                                         ((SOURCE) == RCC_LPTIM4CLKSOURCE_PLL3)   || \
04336                                         ((SOURCE) == RCC_LPTIM4CLKSOURCE_LSE)    || \
04337                                         ((SOURCE) == RCC_LPTIM4CLKSOURCE_LSI)    || \
04338                                         ((SOURCE) == RCC_LPTIM4CLKSOURCE_CLKP))
04339 #endif /* LPTIM4*/
04340 
04341 #if defined(LPTIM5)
04342 #define IS_RCC_LPTIM5CLK(SOURCE)       (((SOURCE) == RCC_LPTIM5CLKSOURCE_D3PCLK1)|| \
04343                                         ((SOURCE) == RCC_LPTIM5CLKSOURCE_PLL2)   || \
04344                                         ((SOURCE) == RCC_LPTIM5CLKSOURCE_PLL3)   || \
04345                                         ((SOURCE) == RCC_LPTIM5CLKSOURCE_LSE)    || \
04346                                         ((SOURCE) == RCC_LPTIM5CLKSOURCE_LSI)    || \
04347                                         ((SOURCE) == RCC_LPTIM5CLKSOURCE_CLKP))
04348 #endif /*LPTIM5*/
04349 
04350 #if defined(QUADSPI)
04351 #define IS_RCC_QSPICLK(__SOURCE__)   \
04352                (((__SOURCE__) == RCC_QSPICLKSOURCE_D1HCLK)  || \
04353                 ((__SOURCE__) == RCC_QSPICLKSOURCE_PLL)     || \
04354                 ((__SOURCE__) == RCC_QSPICLKSOURCE_PLL2)    || \
04355                 ((__SOURCE__) == RCC_QSPICLKSOURCE_CLKP))
04356 #endif /*QUADSPI*/
04357 
04358 #if defined(OCTOSPI1) || defined(OCTOSPI1)
04359 #define IS_RCC_OSPICLK(__SOURCE__)   \
04360                (((__SOURCE__) == RCC_OSPICLKSOURCE_D1HCLK)  || \
04361                 ((__SOURCE__) == RCC_OSPICLKSOURCE_PLL)     || \
04362                 ((__SOURCE__) == RCC_OSPICLKSOURCE_PLL2)    || \
04363                 ((__SOURCE__) == RCC_OSPICLKSOURCE_CLKP))
04364 #endif /*OCTOSPI1 || OCTOSPI1*/
04365 
04366 #if defined(DSI)
04367 #define IS_RCC_DSICLK(__SOURCE__)   \
04368                (((__SOURCE__) == RCC_DSICLKSOURCE_PHY)  || \
04369                 ((__SOURCE__) == RCC_DSICLKSOURCE_PLL2))
04370 #endif /*DSI*/
04371 
04372 #define IS_RCC_FMCCLK(__SOURCE__)   \
04373                (((__SOURCE__) == RCC_FMCCLKSOURCE_D1HCLK)  || \
04374                 ((__SOURCE__) == RCC_FMCCLKSOURCE_PLL)     || \
04375                 ((__SOURCE__) == RCC_FMCCLKSOURCE_PLL2)    || \
04376                 ((__SOURCE__) == RCC_FMCCLKSOURCE_CLKP))
04377 
04378 #if defined(FDCAN1) || defined(FDCAN2)
04379 #define IS_RCC_FDCANCLK(__SOURCE__)   \
04380                (((__SOURCE__) == RCC_FDCANCLKSOURCE_HSE)  || \
04381                 ((__SOURCE__) == RCC_FDCANCLKSOURCE_PLL)  || \
04382                 ((__SOURCE__) == RCC_FDCANCLKSOURCE_PLL2))
04383 #endif /*FDCAN1 || FDCAN2*/
04384 
04385 #define IS_RCC_SDMMC(__SOURCE__)   \
04386                 (((__SOURCE__) == RCC_SDMMCCLKSOURCE_PLL)  || \
04387                 ((__SOURCE__) == RCC_SDMMCCLKSOURCE_PLL2))
04388 
04389 #define IS_RCC_ADCCLKSOURCE(SOURCE)    (((SOURCE) == RCC_ADCCLKSOURCE_PLL2) || \
04390                                         ((SOURCE) == RCC_ADCCLKSOURCE_PLL3) || \
04391                                         ((SOURCE) == RCC_ADCCLKSOURCE_CLKP))
04392 
04393 #define IS_RCC_SWPMI1CLKSOURCE(SOURCE) (((SOURCE) == RCC_SWPMI1CLKSOURCE_D2PCLK1) || \
04394                                         ((SOURCE) == RCC_SWPMI1CLKSOURCE_HSI))
04395 
04396 #define IS_RCC_DFSDM1CLKSOURCE(SOURCE)  (((SOURCE) == RCC_DFSDM1CLKSOURCE_D2PCLK1) || \
04397                                          ((SOURCE) == RCC_DFSDM1CLKSOURCE_SYS))
04398 
04399 #if defined(DFSDM2_BASE)
04400 #define IS_RCC_DFSDM2CLKSOURCE(SOURCE)  (((SOURCE) == RCC_DFSDM2CLKSOURCE_SRDPCLK1) || \
04401                                         ((SOURCE) == RCC_DFSDM2CLKSOURCE_SYS))
04402 #endif /*DFSDM2*/
04403 
04404 #define IS_RCC_SPDIFRXCLKSOURCE(SOURCE)(((SOURCE) == RCC_SPDIFRXCLKSOURCE_PLL)  || \
04405                                         ((SOURCE) == RCC_SPDIFRXCLKSOURCE_PLL2) || \
04406                                         ((SOURCE) == RCC_SPDIFRXCLKSOURCE_PLL3) || \
04407                                         ((SOURCE) == RCC_SPDIFRXCLKSOURCE_HSI))
04408 
04409 #define IS_RCC_CECCLKSOURCE(SOURCE)  (((SOURCE) == RCC_CECCLKSOURCE_LSE) || \
04410                                       ((SOURCE) == RCC_CECCLKSOURCE_LSI) || \
04411                                       ((SOURCE) == RCC_CECCLKSOURCE_CSI))
04412 
04413 #define IS_RCC_CLKPSOURCE(SOURCE)   (((SOURCE) == RCC_CLKPSOURCE_HSI)  || \
04414                                       ((SOURCE) == RCC_CLKPSOURCE_CSI) || \
04415                                       ((SOURCE) == RCC_CLKPSOURCE_HSE))
04416 #define IS_RCC_TIMPRES(VALUE)  \
04417                (((VALUE) == RCC_TIMPRES_DESACTIVATED) || \
04418                 ((VALUE) == RCC_TIMPRES_ACTIVATED))
04419 
04420 #if defined(DUAL_CORE)
04421 #define IS_RCC_BOOT_CORE(CORE)   (((CORE) == RCC_BOOT_C1)  || \
04422                                   ((CORE) == RCC_BOOT_C2))
04423 #endif /*DUAL_CORE*/
04424 
04425 #if defined(DUAL_CORE)
04426 #define IS_RCC_SCOPE_WWDG(WWDG)   (((WWDG) == RCC_WWDG1)  || \
04427                                   ((WWDG) == RCC_WWDG2))
04428 #else
04429 #define IS_RCC_SCOPE_WWDG(WWDG)   ((WWDG) == RCC_WWDG1)
04430 
04431 #endif /*DUAL_CORE*/
04432 
04433 #define IS_RCC_CRS_SYNC_SOURCE(__SOURCE__) (((__SOURCE__) == RCC_CRS_SYNC_SOURCE_USB2) || \
04434                                             ((__SOURCE__) == RCC_CRS_SYNC_SOURCE_LSE)  || \
04435                                             ((__SOURCE__) == RCC_CRS_SYNC_SOURCE_USB1) || \
04436                                             ((__SOURCE__) == RCC_CRS_SYNC_SOURCE_PIN))
04437 
04438 #define IS_RCC_CRS_SYNC_DIV(__DIV__)       (((__DIV__) == RCC_CRS_SYNC_DIV1)  || ((__DIV__) == RCC_CRS_SYNC_DIV2)  || \
04439                                             ((__DIV__) == RCC_CRS_SYNC_DIV4)  || ((__DIV__) == RCC_CRS_SYNC_DIV8)  || \
04440                                             ((__DIV__) == RCC_CRS_SYNC_DIV16) || ((__DIV__) == RCC_CRS_SYNC_DIV32) || \
04441                                             ((__DIV__) == RCC_CRS_SYNC_DIV64) || ((__DIV__) == RCC_CRS_SYNC_DIV128))
04442 
04443 #define IS_RCC_CRS_SYNC_POLARITY(__POLARITY__) (((__POLARITY__) == RCC_CRS_SYNC_POLARITY_RISING) || \
04444                                                 ((__POLARITY__) == RCC_CRS_SYNC_POLARITY_FALLING))
04445 
04446 #define IS_RCC_CRS_RELOADVALUE(__VALUE__)  (((__VALUE__) <= 0xFFFFU))
04447 
04448 #define IS_RCC_CRS_ERRORLIMIT(__VALUE__)   (((__VALUE__) <= 0xFFU))
04449 
04450 #define IS_RCC_CRS_HSI48CALIBRATION(__VALUE__) (((__VALUE__) <= 0x3FU))
04451 
04452 #define IS_RCC_CRS_FREQERRORDIR(__DIR__)   (((__DIR__) == RCC_CRS_FREQERRORDIR_UP) || \
04453                                             ((__DIR__) == RCC_CRS_FREQERRORDIR_DOWN))
04454 /**
04455   * @}
04456   */
04457 
04458 /**
04459   * @}
04460   */
04461 
04462 /**
04463   * @}
04464   */
04465 
04466 /**
04467   * @}
04468   */
04469 
04470 #ifdef __cplusplus
04471 }
04472 #endif
04473 
04474 #endif /* STM32H7xx_HAL_RCC_EX_H */
04475