generated from Template/H563ZI-HAL-CMake-Template
	
		
			
				
	
	
		
			3850 lines
		
	
	
		
			174 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			3850 lines
		
	
	
		
			174 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|   ******************************************************************************
 | |
|   * @file    stm32h5xx_hal_rcc_ex.h
 | |
|   * @author  MCD Application Team
 | |
|   * @brief   Header file of RCC HAL Extended  module.
 | |
|   ******************************************************************************
 | |
|   * @attention
 | |
|   *
 | |
|   * Copyright (c) 2023 STMicroelectronics.
 | |
|   * All rights reserved.
 | |
|   *
 | |
|   * This software is licensed under terms that can be found in the LICENSE file
 | |
|   * in the root directory of this software component.
 | |
|   * If no LICENSE file comes with this software, it is provided AS-IS.
 | |
|   *
 | |
|   ******************************************************************************
 | |
|   */
 | |
| 
 | |
| /* Define to prevent recursive inclusion -------------------------------------*/
 | |
| #ifndef __STM32H5xx_HAL_RCC_EX_H
 | |
| #define __STM32H5xx_HAL_RCC_EX_H
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| /* Includes ------------------------------------------------------------------*/
 | |
| #include "stm32h5xx_hal_def.h"
 | |
| 
 | |
| /** @addtogroup STM32H5xx_HAL_Driver
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /** @addtogroup RCCEx
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /* Exported types ------------------------------------------------------------*/
 | |
| /** @defgroup RCCEx_Exported_Types RCCEx Exported Types
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @brief  PLL2 Clock structure definition
 | |
|   */
 | |
| typedef struct
 | |
| {
 | |
|   uint32_t PLL2Source;  /*!< RCC_PLL2Source: PLL2 entry clock source.
 | |
|                             This parameter must be a value of @ref RCC_PLL2_Clock_Source               */
 | |
| 
 | |
|   uint32_t PLL2M;       /*!< PLL2M: Division factor for PLL2 VCO input clock.
 | |
|                              This parameter must be a number between Min_Data = 1 and Max_Data = 63    */
 | |
| 
 | |
|   uint32_t PLL2N;       /*!< PLL2N: Multiplication factor for PLL2 VCO output clock.
 | |
|                              This parameter must be a number between Min_Data = 4 and Max_Data = 512   */
 | |
| 
 | |
|   uint32_t PLL2P;       /*!< PLL2P: Division factor for peripheral clock.
 | |
|                              This parameter must be a number between Min_Data = 2 and Max_Data = 128   */
 | |
| 
 | |
|   uint32_t PLL2Q;        /*!< PLL2Q: Division factor for peripheral clocks.
 | |
|                              This parameter must be a number between Min_Data = 1 and Max_Data = 128   */
 | |
| 
 | |
|   uint32_t PLL2R;        /*!< PLL2R: Division factor for peripheral clocks.
 | |
|                              This parameter must be a number between Min_Data = 1 and Max_Data = 128
 | |
|                              odd division factors are not allowed                                      */
 | |
| 
 | |
|   uint32_t PLL2RGE;      /*!<PLL2RGE: PLL2 clock Input range
 | |
|                           This parameter must be a value of @ref RCC_PLL2_VCI_Range                    */
 | |
| 
 | |
|   uint32_t PLL2VCOSEL;   /*!<PLL2VCOSEL: PLL2 clock Output range
 | |
|                           This parameter must be a value of @ref RCC_PLL2_VCO_Range                    */
 | |
| 
 | |
|   uint32_t PLL2FRACN;    /*!<PLL2FRACN: Specifies Fractional Part Of The Multiplication Factor for
 | |
|                             PLL2 VCO It should be a value between 0 and 8191                           */
 | |
| 
 | |
|   uint32_t PLL2ClockOut; /*!< PLL2ClockOut: specifies PLL2 output clock to be enabled.
 | |
|                                   This parameter must be a value or a combination of @ref RCC_PLL2_Clock_Output */
 | |
| } RCC_PLL2InitTypeDef;
 | |
| 
 | |
| 
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| /**
 | |
|   * @brief  PLL3 Clock structure definition
 | |
|   */
 | |
| typedef struct
 | |
| {
 | |
|   uint32_t PLL3Source;  /*!< RCC_PLL3Source: PLL3 entry clock source.
 | |
|                             This parameter must be a value of @ref RCC_PLL3_Clock_Source               */
 | |
| 
 | |
|   uint32_t PLL3M;       /*!< PLL3M: Division factor for PLL3 VCO input clock.
 | |
|                              This parameter must be a number between Min_Data = 1 and Max_Data = 63    */
 | |
| 
 | |
|   uint32_t PLL3N;       /*!< PLL3N: Multiplication factor for PLL3 VCO output clock.
 | |
|                              This parameter must be a number between Min_Data = 4 and Max_Data = 512   */
 | |
| 
 | |
|   uint32_t PLL3P;       /*!< PLL3P: Division factor for system clock.
 | |
|                              This parameter must be a number between Min_Data = 2 and Max_Data = 128   */
 | |
| 
 | |
|   uint32_t PLL3Q;        /*!< PLL3Q: Division factor for peripheral clocks.
 | |
|                              This parameter must be a number between Min_Data = 1 and Max_Data = 128   */
 | |
| 
 | |
|   uint32_t PLL3R;        /*!< PLL3R: Division factor for peripheral clocks.
 | |
|                              This parameter must be a number between Min_Data = 1 and Max_Data = 128
 | |
|                              odd division factors are not allowed                                      */
 | |
| 
 | |
|   uint32_t PLL3RGE;      /*!<PLL3RGE: PLL3 clock Input range
 | |
|                           This parameter must be a value of @ref RCC_PLL3_VCI_Range                    */
 | |
| 
 | |
|   uint32_t PLL3VCOSEL;   /*!<PLL3VCOSEL: PLL3 clock Output range
 | |
|                           This parameter must be a value of @ref RCC_PLL3_VCO_Range                    */
 | |
| 
 | |
|   uint32_t PLL3FRACN;    /*!<PLL3FRACN: Specifies Fractional Part Of The Multiplication Factor for
 | |
|                             PLL3 VCO It should be a value between 0 and 8191                           */
 | |
| 
 | |
|   uint32_t PLL3ClockOut; /*!< PLL3ClockOut: specifies PLL3 output clock to be enabled.
 | |
|                                   This parameter must be a value or a combination of @ref RCC_PLL3_Clock_Output */
 | |
| } RCC_PLL3InitTypeDef;
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
| /**
 | |
|   * @brief  RCC PLL1 Clocks structure definition
 | |
|   */
 | |
| typedef struct
 | |
| {
 | |
|   uint32_t PLL1_P_Frequency;
 | |
|   uint32_t PLL1_Q_Frequency;
 | |
|   uint32_t PLL1_R_Frequency;
 | |
| } PLL1_ClocksTypeDef;
 | |
| 
 | |
| /**
 | |
|   * @brief  RCC PLL2 Clocks structure definition
 | |
|   */
 | |
| typedef struct
 | |
| {
 | |
|   uint32_t PLL2_P_Frequency;
 | |
|   uint32_t PLL2_Q_Frequency;
 | |
|   uint32_t PLL2_R_Frequency;
 | |
| } PLL2_ClocksTypeDef;
 | |
| 
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| /**
 | |
|   * @brief  RCC PLL3 Clocks structure definition
 | |
|   */
 | |
| typedef struct
 | |
| {
 | |
|   uint32_t PLL3_P_Frequency;
 | |
|   uint32_t PLL3_Q_Frequency;
 | |
|   uint32_t PLL3_R_Frequency;
 | |
| } PLL3_ClocksTypeDef;
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
| 
 | |
| /**
 | |
|   * @brief  RCC extended clocks structure definition
 | |
|   */
 | |
| typedef struct
 | |
| {
 | |
|   uint64_t PeriphClockSelection;   /*!< The Extended Clock to be configured.
 | |
|                                         This parameter can be a value of @ref RCCEx_Periph_Clock_Selection */
 | |
| 
 | |
|   RCC_PLL2InitTypeDef PLL2;        /*!< PLL2structure parameters.
 | |
|                                         This parameter will be used only when PLL2 is selected as kernel clock Source
 | |
|                                         for some peripherals */
 | |
| 
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
|   RCC_PLL3InitTypeDef PLL3;        /*!< PLL3 structure parameters.
 | |
|                                         This parameter will be used only when PLL2 is selected as kernel clock Source
 | |
|                                         for some peripherals */
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
|   uint32_t CkperClockSelection;    /*!< Specifies CKPER clock source
 | |
|                                         This parameter can be a value of @ref RCCEx_CLKP_Clock_Source   */
 | |
| 
 | |
|   uint32_t Usart1ClockSelection;   /*!< Specifies USART1 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_USART1_Clock_Source */
 | |
| 
 | |
|   uint32_t Usart2ClockSelection;   /*!< Specifies USART2 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_USART2_Clock_Source */
 | |
| 
 | |
|   uint32_t Usart3ClockSelection;   /*!< Specifies USART3 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_USART3_Clock_Source */
 | |
| 
 | |
| #if defined(UART4)
 | |
|   uint32_t Uart4ClockSelection;    /*!< Specifies UART4 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_UART4_Clock_Source */
 | |
| #endif /* UART4 */
 | |
| 
 | |
| #if defined(UART5)
 | |
|   uint32_t Uart5ClockSelection;    /*!< Specifies UART5 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_UART5_Clock_Source */
 | |
| #endif /* UART5 */
 | |
| 
 | |
| #if defined(USART6)
 | |
|   uint32_t Usart6ClockSelection;   /*!< Specifies USART6 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_USART6_Clock_Source */
 | |
| #endif /* USART6 */
 | |
| 
 | |
| #if defined(UART7)
 | |
|   uint32_t Uart7ClockSelection;    /*!< Specifies UART7 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_UART7_Clock_Source */
 | |
| #endif /* UART7 */
 | |
| 
 | |
| #if defined(UART8)
 | |
|   uint32_t Uart8ClockSelection;    /*!< Specifies UART8 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_UART8_Clock_Source */
 | |
| #endif /* UART8 */
 | |
| 
 | |
| #if defined(UART9)
 | |
|   uint32_t Uart9ClockSelection;    /*!< Specifies UART9 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_UART9_Clock_Source */
 | |
| #endif /* UART9 */
 | |
| 
 | |
| #if defined(USART10)
 | |
|   uint32_t Usart10ClockSelection;   /*!< Specifies USART10 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_USART10_Clock_Source */
 | |
| #endif /* USART10 */
 | |
| 
 | |
| #if defined(USART11)
 | |
|   uint32_t Usart11ClockSelection;   /*!< Specifies USART11 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_USART11_Clock_Source */
 | |
| #endif /* USART11 */
 | |
| 
 | |
| #if defined(UART12)
 | |
|   uint32_t Uart12ClockSelection;    /*!< Specifies UART12 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_UART12_Clock_Source */
 | |
| #endif /* UART12 */
 | |
| 
 | |
|   uint32_t Lpuart1ClockSelection;  /*!< Specifies LPUART1 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_LPUART1_Clock_Source */
 | |
| 
 | |
|   uint32_t I2c1ClockSelection;     /*!< Specifies I2C1 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_I2C1_Clock_Source */
 | |
| 
 | |
|   uint32_t I2c2ClockSelection;     /*!< Specifies I2C2 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_I2C2_Clock_Source */
 | |
| 
 | |
| #if defined(I2C3)
 | |
|   uint32_t I2c3ClockSelection;     /*!< Specifies I2C3 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_I2C3_Clock_Source */
 | |
| #endif /* I2C3 */
 | |
| 
 | |
| #if defined(I2C4)
 | |
|   uint32_t I2c4ClockSelection;     /*!< Specifies I2C4 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_I2C4_Clock_Source */
 | |
| #endif /* I2C4 */
 | |
| 
 | |
|   uint32_t I3c1ClockSelection;     /*!< Specifies I3C1 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_I3C1_Clock_Source */
 | |
| 
 | |
| #if defined(I3C2)
 | |
|   uint32_t I3c2ClockSelection;     /*!< Specifies I3C2 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_I3C2_Clock_Source */
 | |
| #endif /* I3C2*/
 | |
| 
 | |
|   uint32_t Lptim1ClockSelection;   /*!< Specifies LPTIM1 clock source.
 | |
|                                      This parameter can be a value of @ref RCCEx_LPTIM1_Clock_Source */
 | |
| 
 | |
|   uint32_t Lptim2ClockSelection;   /*!< Specifies LPTIM2 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_LPTIM2_Clock_Source */
 | |
| 
 | |
| #if defined(LPTIM3)
 | |
|   uint32_t Lptim3ClockSelection;   /*!< Specifies LPTIM3 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_LPTIM3_Clock_Source */
 | |
| #endif /* LPTIM3 */
 | |
| 
 | |
| #if defined(LPTIM4)
 | |
|   uint32_t Lptim4ClockSelection;   /*!< Specifies LPTIM4 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_LPTIM4_Clock_Source */
 | |
| #endif /* LPTIM4 */
 | |
| 
 | |
| #if defined(LPTIM5)
 | |
|   uint32_t Lptim5ClockSelection;   /*!< Specifies LPTIM5 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_LPTIM5_Clock_Source */
 | |
| #endif /* LPTIM5 */
 | |
| 
 | |
| #if defined(LPTIM6)
 | |
|   uint32_t Lptim6ClockSelection;   /*!< Specifies LPTIM6 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_LPTIM6_Clock_Source */
 | |
| #endif /* LPTIM6 */
 | |
| 
 | |
|   uint32_t FdcanClockSelection;    /*!< Specifies FDCAN kernel clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_FDCAN_Clock_Source */
 | |
| #if defined(SAI1)
 | |
|   uint32_t Sai1ClockSelection;     /*!< Specifies SAI1 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_SAI1_Clock_Source */
 | |
| #endif /* SAI1*/
 | |
| 
 | |
| #if defined(SAI2)
 | |
|   uint32_t Sai2ClockSelection;     /*!< Specifies SAI2 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_SAI2_Clock_Source */
 | |
| #endif /* SAI2*/
 | |
| 
 | |
|   uint32_t RngClockSelection;      /*!< Specifies RNG clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_RNG_Clock_Source  */
 | |
| 
 | |
| #if defined(SDMMC1)
 | |
|   uint32_t Sdmmc1ClockSelection;    /*!< Specifies SDMMC1 clock source.
 | |
|                                        This parameter can be a value of @ref RCCEx_SDMMC1_Clock_Source */
 | |
| #endif /* SDMMC1 */
 | |
| 
 | |
| #if defined(SDMMC2)
 | |
|   uint32_t Sdmmc2ClockSelection;    /*!< Specifies SDMMC2 clock source.
 | |
|                                        This parameter can be a value of @ref RCCEx_SDMMC2_Clock_Source */
 | |
| #endif /* SDMMC2 */
 | |
| 
 | |
|   uint32_t AdcDacClockSelection;   /*!< Specifies ADC1, ADC2 and DAC interface clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_ADCDAC_Clock_Source */
 | |
| 
 | |
|   uint32_t DacLowPowerClockSelection;  /*!< Specifies DAC low-power clock source used in Sample and hold mode.
 | |
|                                             This parameter can be a value of @ref RCCEx_DAC_Low_Power_Clock_Source */
 | |
| 
 | |
| #if defined(OCTOSPI1)
 | |
|   uint32_t OspiClockSelection;     /*!< Specifies OctoSPI clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_OSPI_Clock_Source */
 | |
| #endif /* OCTOSPI1 */
 | |
| 
 | |
|   uint32_t Spi1ClockSelection;     /*!< Specifies SPI1 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_SPI1_Clock_Source    */
 | |
| 
 | |
|   uint32_t Spi2ClockSelection;     /*!< Specifies SPI2 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_SPI2_Clock_Source    */
 | |
| 
 | |
|   uint32_t Spi3ClockSelection;     /*!< Specifies SPI3 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_SPI3_Clock_Source    */
 | |
| 
 | |
| #if defined(SPI4)
 | |
|   uint32_t Spi4ClockSelection;     /*!< Specifies SPI4 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_SPI4_Clock_Source    */
 | |
| #endif /* SPI4 */
 | |
| 
 | |
| #if defined(SPI5)
 | |
|   uint32_t Spi5ClockSelection;     /*!< Specifies SPI5 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_SPI5_Clock_Source    */
 | |
| #endif /* SPI5 */
 | |
| 
 | |
| #if defined(SPI6)
 | |
|   uint32_t Spi6ClockSelection;     /*!< Specifies SPI6 clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_SPI6_Clock_Source    */
 | |
| #endif /* SPI6 */
 | |
| 
 | |
|   uint32_t RTCClockSelection;      /*!< Specifies RTC clock source.
 | |
|                                         This parameter can be a value of @ref RCC_RTC_Clock_Source */
 | |
| 
 | |
| #if defined(CEC)
 | |
|   uint32_t CecClockSelection;      /*!< Specifies CEC clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_CEC_Clock_Source */
 | |
| #endif /* CEC */
 | |
| 
 | |
| #if defined(USB_DRD_FS)
 | |
|   uint32_t UsbClockSelection;      /*!< Specifies USB clock source.
 | |
|                                         This parameter can be a value of @ref RCCEx_USB_Clock_Source */
 | |
| #endif /* USB_DRD_FS */
 | |
| 
 | |
|   uint32_t TimPresSelection;       /*!< Specifies TIM Clock Prescalers Selection.
 | |
|                                        This parameter can be a value of @ref RCCEx_TIM_Prescaler_Selection */
 | |
| } RCC_PeriphCLKInitTypeDef;
 | |
| 
 | |
| #if defined(CRS)
 | |
| 
 | |
| /**
 | |
|   * @brief RCC_CRS Init structure definition
 | |
|   */
 | |
| typedef struct
 | |
| {
 | |
|   uint32_t Prescaler;             /*!< Specifies the division factor of the SYNC signal.
 | |
|                                      This parameter can be a value of @ref RCCEx_CRS_SynchroDivider  */
 | |
| 
 | |
|   uint32_t Source;                /*!< Specifies the SYNC signal source.
 | |
|                                      This parameter can be a value of @ref RCCEx_CRS_SynchroSource   */
 | |
| 
 | |
|   uint32_t Polarity;              /*!< Specifies the input polarity for the SYNC signal source.
 | |
|                                      This parameter can be a value of @ref RCCEx_CRS_SynchroPolarity */
 | |
| 
 | |
|   uint32_t ReloadValue;           /*!< Specifies the value to be loaded in the frequency error counter with each SYNC
 | |
|                                      event. It can be calculated in using macro
 | |
|                                      __HAL_RCC_CRS_RELOADVALUE_CALCULATE(__FTARGET__, __FSYNC__)
 | |
|                                      This parameter must be a number between 0 and 0xFFFF or a value of
 | |
|                                      @ref RCCEx_CRS_ReloadValueDefault .*/
 | |
| 
 | |
|   uint32_t ErrorLimitValue;       /*!< Specifies the value to be used to evaluate the captured frequency error value.
 | |
|                                      This parameter must be a number between 0 and 0xFF or a value of
 | |
|                                      @ref RCCEx_CRS_ErrorLimitDefault */
 | |
| 
 | |
|   uint32_t HSI48CalibrationValue; /*!< Specifies a user-programmable trimming value to the HSI48 oscillator.
 | |
|                                      This parameter must be a number between 0 and 0x7F or a value of
 | |
|                                      @ref RCCEx_CRS_HSI48CalibrationDefault */
 | |
| 
 | |
| } RCC_CRSInitTypeDef;
 | |
| 
 | |
| /**
 | |
|   * @brief RCC_CRS Synchronization structure definition
 | |
|   */
 | |
| typedef struct
 | |
| {
 | |
|   uint32_t ReloadValue;           /*!< Specifies the value loaded in the Counter reload value.
 | |
|                                      This parameter must be a number between 0 and 0xFFFF */
 | |
| 
 | |
|   uint32_t HSI48CalibrationValue; /*!< Specifies value loaded in HSI48 oscillator smooth trimming.
 | |
|                                      This parameter must be a number between 0 and 0x3F */
 | |
| 
 | |
|   uint32_t FreqErrorCapture;      /*!< Specifies the value loaded in the .FECAP, the frequency error counter
 | |
|                                      value latched in the time of the last SYNC event.
 | |
|                                      This parameter must be a number between 0 and 0xFFFF */
 | |
| 
 | |
|   uint32_t FreqErrorDirection;    /*!< Specifies the value loaded in the .FEDIR, the counting direction of the
 | |
|                                      frequency error counter latched in the time of the last SYNC event.
 | |
|                                      It shows whether the actual frequency is below or above the target.
 | |
|                                      This parameter must be a value of @ref RCCEx_CRS_FreqErrorDirection */
 | |
| 
 | |
| } RCC_CRSSynchroInfoTypeDef;
 | |
| 
 | |
| #endif /* CRS */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| 
 | |
| /* Exported constants --------------------------------------------------------*/
 | |
| /** @defgroup RCCEx_Exported_Constants RCCEx Exported Constants
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_LSCO_Clock_Source Low Speed Microcontroller Clock Output Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_LSCOSOURCE_LSI             0x00000000U            /*!< LSI selection for low speed microcontroller clock output */
 | |
| #define RCC_LSCOSOURCE_LSE             RCC_BDCR_LSCOSEL       /*!< LSE selection for low speed microcontroller clock output */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #if defined(PWR_USBSCR_OTGHSEN)
 | |
| /** @defgroup OTGHS_CLK48_VALUE OTG_HS output clock
 | |
|   * @{
 | |
|   */
 | |
| #define OTGHS_CLK48_VALUE        48000000U    /*!< Value of the OTGHS_CLK48 in Hz*/
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* PWR_USBSCR_OTGHSEN */
 | |
| 
 | |
| /** @defgroup RCCEx_Periph_Clock_Selection  RCCEx Periph Clock Selection
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_PERIPHCLK_USART1           ((uint64_t)0x00000001U)
 | |
| #define RCC_PERIPHCLK_USART2           ((uint64_t)0x00000002U)
 | |
| #define RCC_PERIPHCLK_USART3           ((uint64_t)0x00000004U)
 | |
| #if defined(UART4)
 | |
| #define RCC_PERIPHCLK_UART4            ((uint64_t)0x00000008U)
 | |
| #endif /* UART4 */
 | |
| #if defined(UART5)
 | |
| #define RCC_PERIPHCLK_UART5            ((uint64_t)0x00000010U)
 | |
| #endif /* UART5 */
 | |
| #if defined(USART6)
 | |
| #define RCC_PERIPHCLK_USART6           ((uint64_t)0x00000020U)
 | |
| #endif /* USART6 */
 | |
| #if defined(UART7)
 | |
| #define RCC_PERIPHCLK_UART7            ((uint64_t)0x00000040U)
 | |
| #endif /* UART7 */
 | |
| #if defined(UART8)
 | |
| #define RCC_PERIPHCLK_UART8            ((uint64_t)0x00000080U)
 | |
| #endif /* UART8 */
 | |
| #if defined(UART9)
 | |
| #define RCC_PERIPHCLK_UART9            ((uint64_t)0x00000100U)
 | |
| #endif /* UART9 */
 | |
| #if defined(USART10)
 | |
| #define RCC_PERIPHCLK_USART10          ((uint64_t)0x00000200U)
 | |
| #endif /* USART10 */
 | |
| #if defined(USART11)
 | |
| #define RCC_PERIPHCLK_USART11          ((uint64_t)0x00000400U)
 | |
| #endif /* USART11 */
 | |
| #if defined(UART12)
 | |
| #define RCC_PERIPHCLK_UART12           ((uint64_t)0x00000800U)
 | |
| #endif /* UART12 */
 | |
| #define RCC_PERIPHCLK_LPUART1          ((uint64_t)0x00001000U)
 | |
| #define RCC_PERIPHCLK_I2C1             ((uint64_t)0x00002000U)
 | |
| #define RCC_PERIPHCLK_I2C2             ((uint64_t)0x00004000U)
 | |
| #if defined(I2C3)
 | |
| #define RCC_PERIPHCLK_I2C3             ((uint64_t)0x00008000U)
 | |
| #endif /* I2C3 */
 | |
| #define RCC_PERIPHCLK_I3C1             ((uint64_t)0x00010000U)
 | |
| #define RCC_PERIPHCLK_LPTIM1           ((uint64_t)0x00020000U)
 | |
| #define RCC_PERIPHCLK_LPTIM2           ((uint64_t)0x00040000U)
 | |
| #if defined(SAI1)
 | |
| #define RCC_PERIPHCLK_SAI1             ((uint64_t)0x00080000U)
 | |
| #endif /* SAI1 */
 | |
| #if defined(SAI2)
 | |
| #define RCC_PERIPHCLK_SAI2             ((uint64_t)0x00100000U)
 | |
| #endif /* SAI2 */
 | |
| #define RCC_PERIPHCLK_ADCDAC           ((uint64_t)0x00200000U)
 | |
| #define RCC_PERIPHCLK_ADC               RCC_PERIPHCLK_ADCDAC
 | |
| #define RCC_PERIPHCLK_DAC               RCC_PERIPHCLK_ADCDAC
 | |
| #if defined(SDMMC1)
 | |
| #define RCC_PERIPHCLK_SDMMC1           ((uint64_t)0x00400000U)
 | |
| #endif /* SDMMC1 */
 | |
| #if defined(SDMMC2)
 | |
| #define RCC_PERIPHCLK_SDMMC2           ((uint64_t)0x00800000U)
 | |
| #endif /* SDMMC2 */
 | |
| #define RCC_PERIPHCLK_CKPER            ((uint64_t)0x01000000U)
 | |
| #define RCC_PERIPHCLK_RTC              ((uint64_t)0x02000000U)
 | |
| #define RCC_PERIPHCLK_RNG              ((uint64_t)0x04000000U)
 | |
| #define RCC_PERIPHCLK_SPI1             ((uint64_t)0x08000000U)
 | |
| #define RCC_PERIPHCLK_SPI2             ((uint64_t)0x10000000U)
 | |
| #define RCC_PERIPHCLK_SPI3             ((uint64_t)0x20000000U)
 | |
| #if defined(SPI4)
 | |
| #define RCC_PERIPHCLK_SPI4             ((uint64_t)0x40000000U)
 | |
| #endif /* SPI4 */
 | |
| #if defined(SPI5)
 | |
| #define RCC_PERIPHCLK_SPI5             ((uint64_t)0x80000000U)
 | |
| #endif /* SPI5 */
 | |
| #if defined(SPI6)
 | |
| #define RCC_PERIPHCLK_SPI6             ((uint64_t)0x100000000U)
 | |
| #endif /* SPI6 */
 | |
| #if defined(OCTOSPI1)
 | |
| #define RCC_PERIPHCLK_OSPI             ((uint64_t)0x200000000U)
 | |
| #endif /* OCTOSPI1 */
 | |
| #define RCC_PERIPHCLK_FDCAN            ((uint64_t)0x400000000U)
 | |
| #if defined(CEC)
 | |
| #define RCC_PERIPHCLK_CEC              ((uint64_t)0x800000000U)
 | |
| #endif /* CEC */
 | |
| #if defined(USB_DRD_FS)
 | |
| #define RCC_PERIPHCLK_USB              ((uint64_t)0x1000000000U)
 | |
| #endif /* USB_DRD_FS */
 | |
| #if defined(LPTIM3)
 | |
| #define RCC_PERIPHCLK_LPTIM3           ((uint64_t)0x2000000000U)
 | |
| #endif /* LPTIM3 */
 | |
| #if defined(LPTIM4)
 | |
| #define RCC_PERIPHCLK_LPTIM4           ((uint64_t)0x4000000000U)
 | |
| #endif /* LPTIM4 */
 | |
| #if defined(LPTIM5)
 | |
| #define RCC_PERIPHCLK_LPTIM5           ((uint64_t)0x8000000000U)
 | |
| #endif /* LPTIM5 */
 | |
| #if defined(LPTIM6)
 | |
| #define RCC_PERIPHCLK_LPTIM6           ((uint64_t)0x10000000000U)
 | |
| #endif /* LPTIM6 */
 | |
| #define RCC_PERIPHCLK_DAC_LP           ((uint64_t)0x20000000000U)
 | |
| #if defined(I2C4)
 | |
| #define RCC_PERIPHCLK_I2C4             ((uint64_t)0x40000000000U)
 | |
| #endif /* I2C4 */
 | |
| #define RCC_PERIPHCLK_TIM              ((uint64_t)0x80000000000U)
 | |
| #if defined(I3C2)
 | |
| #define RCC_PERIPHCLK_I3C2             ((uint64_t)0x100000000000U)
 | |
| #endif /* I3C2 */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| 
 | |
| /** @defgroup RCC_PLL2_Clock_Output  RCC PLL2 Clock Output
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_PLL2_DIVP                RCC_PLL2CFGR_PLL2PEN
 | |
| #define RCC_PLL2_DIVQ                RCC_PLL2CFGR_PLL2QEN
 | |
| #define RCC_PLL2_DIVR                RCC_PLL2CFGR_PLL2REN
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| /** @defgroup RCC_PLL3_Clock_Output  RCC PLL3 Clock Output
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_PLL3_DIVP                RCC_PLL3CFGR_PLL3PEN
 | |
| #define RCC_PLL3_DIVQ                RCC_PLL3CFGR_PLL3QEN
 | |
| #define RCC_PLL3_DIVR                RCC_PLL3CFGR_PLL3REN
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
| /** @defgroup RCC_PLL2_VCI_Range  RCC PLL2 VCI Range
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_PLL2_VCIRANGE_0           (0x00000000U)                                       /*!< Clock range frequency between 1 and 2 MHz  */
 | |
| #define RCC_PLL2_VCIRANGE_1           RCC_PLL2CFGR_PLL2RGE_0                              /*!< Clock range frequency between 2 and 4 MHz  */
 | |
| #define RCC_PLL2_VCIRANGE_2           RCC_PLL2CFGR_PLL2RGE_1                              /*!< Clock range frequency between 4 and 8 MHz  */
 | |
| #define RCC_PLL2_VCIRANGE_3          (RCC_PLL2CFGR_PLL2RGE_0 | RCC_PLL2CFGR_PLL2RGE_1)    /*!< Clock range frequency between 8 and 16 MHz */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCC_PLL2_VCO_Range  RCC PLL2 VCO Range
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_PLL2_VCORANGE_WIDE       (0x00000000U)                                       /*!< Wide VCO range: 192 to 836 MHz    */
 | |
| #define RCC_PLL2_VCORANGE_MEDIUM     RCC_PLL2CFGR_PLL2VCOSEL                             /*!< Medium VCO range: 150 to 420 MHz  */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCC_PLL2_Clock_Source  RCC PLL2 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_PLL2_SOURCE_NONE          (0x00000000U)
 | |
| #define RCC_PLL2_SOURCE_HSI           RCC_PLL2CFGR_PLL2SRC_0
 | |
| #define RCC_PLL2_SOURCE_CSI           RCC_PLL2CFGR_PLL2SRC_1
 | |
| #define RCC_PLL2_SOURCE_HSE          (RCC_PLL2CFGR_PLL2SRC_0 | RCC_PLL2CFGR_PLL2SRC_1)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| /** @defgroup RCC_PLL3_VCI_Range  RCC PLL3 VCI Range
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_PLL3_VCIRANGE_0           (0x00000000U)                                       /*!< Clock range frequency between 1 and 2 MHz  */
 | |
| #define RCC_PLL3_VCIRANGE_1           RCC_PLL3CFGR_PLL3RGE_0                              /*!< Clock range frequency between 2 and 4 MHz  */
 | |
| #define RCC_PLL3_VCIRANGE_2           RCC_PLL3CFGR_PLL3RGE_1                              /*!< Clock range frequency between 4 and 8 MHz  */
 | |
| #define RCC_PLL3_VCIRANGE_3          (RCC_PLL3CFGR_PLL3RGE_0 | RCC_PLL3CFGR_PLL3RGE_1)    /*!< Clock range frequency between 8 and 16 MHz */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCC_PLL3_VCO_Range  RCC PLL3 VCO Range
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_PLL3_VCORANGE_WIDE        (0x00000000U)                                       /*!< Wide VCO range: 192 to 836 MHz    */
 | |
| #define RCC_PLL3_VCORANGE_MEDIUM      RCC_PLL3CFGR_PLL3VCOSEL                             /*!< Medium VCO range: 150 to 420 MHz  */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCC_PLL3_Clock_Source  RCC PLL3 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_PLL3_SOURCE_NONE          (0x00000000U)
 | |
| #define RCC_PLL3_SOURCE_HSI           RCC_PLL3CFGR_PLL3SRC_0
 | |
| #define RCC_PLL3_SOURCE_CSI           RCC_PLL3CFGR_PLL3SRC_1
 | |
| #define RCC_PLL3_SOURCE_HSE          (RCC_PLL3CFGR_PLL3SRC_0 | RCC_PLL3CFGR_PLL3SRC_1)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
| /** @defgroup RCCEx_USART1_Clock_Source USART1 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_USART1CLKSOURCE_PCLK2      ((uint32_t)0x00000000U)
 | |
| #define RCC_USART1CLKSOURCE_PLL2Q      RCC_CCIPR1_USART1SEL_0
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_USART1CLKSOURCE_PLL3Q      RCC_CCIPR1_USART1SEL_1
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_USART1CLKSOURCE_HSI        (RCC_CCIPR1_USART1SEL_0 | RCC_CCIPR1_USART1SEL_1)
 | |
| #define RCC_USART1CLKSOURCE_CSI        RCC_CCIPR1_USART1SEL_2
 | |
| #define RCC_USART1CLKSOURCE_LSE        (RCC_CCIPR1_USART1SEL_0 | RCC_CCIPR1_USART1SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_USART2_Clock_Source USART2 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_USART2CLKSOURCE_PCLK1      ((uint32_t)0x00000000U)
 | |
| #define RCC_USART2CLKSOURCE_PLL2Q      RCC_CCIPR1_USART2SEL_0
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_USART2CLKSOURCE_PLL3Q      RCC_CCIPR1_USART2SEL_1
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_USART2CLKSOURCE_HSI        (RCC_CCIPR1_USART2SEL_0 | RCC_CCIPR1_USART2SEL_1)
 | |
| #define RCC_USART2CLKSOURCE_CSI        RCC_CCIPR1_USART2SEL_2
 | |
| #define RCC_USART2CLKSOURCE_LSE        (RCC_CCIPR1_USART2SEL_0 | RCC_CCIPR1_USART2SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_USART3_Clock_Source USART3 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_USART3CLKSOURCE_PCLK1      ((uint32_t)0x00000000U)
 | |
| #define RCC_USART3CLKSOURCE_PLL2Q      RCC_CCIPR1_USART3SEL_0
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_USART3CLKSOURCE_PLL3Q      RCC_CCIPR1_USART3SEL_1
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_USART3CLKSOURCE_HSI        (RCC_CCIPR1_USART3SEL_0 | RCC_CCIPR1_USART3SEL_1)
 | |
| #define RCC_USART3CLKSOURCE_CSI        RCC_CCIPR1_USART3SEL_2
 | |
| #define RCC_USART3CLKSOURCE_LSE        (RCC_CCIPR1_USART3SEL_0 | RCC_CCIPR1_USART3SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #if defined(UART4)
 | |
| /** @defgroup RCCEx_UART4_Clock_Source UART4 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_UART4CLKSOURCE_PCLK1      ((uint32_t)0x00000000U)
 | |
| #define RCC_UART4CLKSOURCE_PLL2Q      RCC_CCIPR1_UART4SEL_0
 | |
| #define RCC_UART4CLKSOURCE_PLL3Q      RCC_CCIPR1_UART4SEL_1
 | |
| #define RCC_UART4CLKSOURCE_HSI        (RCC_CCIPR1_UART4SEL_0 | RCC_CCIPR1_UART4SEL_1)
 | |
| #define RCC_UART4CLKSOURCE_CSI        RCC_CCIPR1_UART4SEL_2
 | |
| #define RCC_UART4CLKSOURCE_LSE        (RCC_CCIPR1_UART4SEL_0 | RCC_CCIPR1_UART4SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* UART4 */
 | |
| 
 | |
| #if defined(UART5)
 | |
| /** @defgroup RCCEx_UART5_Clock_Source UART5 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_UART5CLKSOURCE_PCLK1      ((uint32_t)0x00000000U)
 | |
| #define RCC_UART5CLKSOURCE_PLL2Q      RCC_CCIPR1_UART5SEL_0
 | |
| #define RCC_UART5CLKSOURCE_PLL3Q      RCC_CCIPR1_UART5SEL_1
 | |
| #define RCC_UART5CLKSOURCE_HSI        (RCC_CCIPR1_UART5SEL_0 | RCC_CCIPR1_UART5SEL_1)
 | |
| #define RCC_UART5CLKSOURCE_CSI        RCC_CCIPR1_UART5SEL_2
 | |
| #define RCC_UART5CLKSOURCE_LSE        (RCC_CCIPR1_UART5SEL_0 | RCC_CCIPR1_UART5SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* UART5 */
 | |
| 
 | |
| #if defined(USART6)
 | |
| /** @defgroup RCCEx_USART6_Clock_Source USART6 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_USART6CLKSOURCE_PCLK1      ((uint32_t)0x00000000U)
 | |
| #define RCC_USART6CLKSOURCE_PLL2Q      RCC_CCIPR1_USART6SEL_0
 | |
| #define RCC_USART6CLKSOURCE_PLL3Q      RCC_CCIPR1_USART6SEL_1
 | |
| #define RCC_USART6CLKSOURCE_HSI        (RCC_CCIPR1_USART6SEL_0 | RCC_CCIPR1_USART6SEL_1)
 | |
| #define RCC_USART6CLKSOURCE_CSI        RCC_CCIPR1_USART6SEL_2
 | |
| #define RCC_USART6CLKSOURCE_LSE        (RCC_CCIPR1_USART6SEL_0 | RCC_CCIPR1_USART6SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* USART6 */
 | |
| 
 | |
| #if defined(UART7)
 | |
| /** @defgroup RCCEx_UART7_Clock_Source UART7 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_UART7CLKSOURCE_PCLK1      ((uint32_t)0x00000000U)
 | |
| #define RCC_UART7CLKSOURCE_PLL2Q      RCC_CCIPR1_UART7SEL_0
 | |
| #define RCC_UART7CLKSOURCE_PLL3Q      RCC_CCIPR1_UART7SEL_1
 | |
| #define RCC_UART7CLKSOURCE_HSI        (RCC_CCIPR1_UART7SEL_0 | RCC_CCIPR1_UART7SEL_1)
 | |
| #define RCC_UART7CLKSOURCE_CSI        RCC_CCIPR1_UART7SEL_2
 | |
| #define RCC_UART7CLKSOURCE_LSE        (RCC_CCIPR1_UART7SEL_0 | RCC_CCIPR1_UART7SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* UART7 */
 | |
| 
 | |
| #if defined(UART8)
 | |
| /** @defgroup RCCEx_UART8_Clock_Source UART8 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_UART8CLKSOURCE_PCLK1      ((uint32_t)0x00000000U)
 | |
| #define RCC_UART8CLKSOURCE_PLL2Q      RCC_CCIPR1_UART8SEL_0
 | |
| #define RCC_UART8CLKSOURCE_PLL3Q      RCC_CCIPR1_UART8SEL_1
 | |
| #define RCC_UART8CLKSOURCE_HSI        (RCC_CCIPR1_UART8SEL_0 | RCC_CCIPR1_UART8SEL_1)
 | |
| #define RCC_UART8CLKSOURCE_CSI        RCC_CCIPR1_UART8SEL_2
 | |
| #define RCC_UART8CLKSOURCE_LSE        (RCC_CCIPR1_UART8SEL_0 | RCC_CCIPR1_UART8SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* UART8 */
 | |
| 
 | |
| #if defined(UART9)
 | |
| /** @defgroup RCCEx_UART9_Clock_Source UART9 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_UART9CLKSOURCE_PCLK1      ((uint32_t)0x00000000U)
 | |
| #define RCC_UART9CLKSOURCE_PLL2Q      RCC_CCIPR1_UART9SEL_0
 | |
| #define RCC_UART9CLKSOURCE_PLL3Q      RCC_CCIPR1_UART9SEL_1
 | |
| #define RCC_UART9CLKSOURCE_HSI        (RCC_CCIPR1_UART9SEL_0 | RCC_CCIPR1_UART9SEL_1)
 | |
| #define RCC_UART9CLKSOURCE_CSI        RCC_CCIPR1_UART9SEL_2
 | |
| #define RCC_UART9CLKSOURCE_LSE        (RCC_CCIPR1_UART9SEL_0 | RCC_CCIPR1_UART9SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* UART9 */
 | |
| 
 | |
| #if defined(USART10)
 | |
| /** @defgroup RCCEx_USART10_Clock_Source USART10 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_USART10CLKSOURCE_PCLK1     ((uint32_t)0x00000000U)
 | |
| #define RCC_USART10CLKSOURCE_PLL2Q     RCC_CCIPR1_USART10SEL_0
 | |
| #define RCC_USART10CLKSOURCE_PLL3Q     RCC_CCIPR1_USART10SEL_1
 | |
| #define RCC_USART10CLKSOURCE_HSI       (RCC_CCIPR1_USART10SEL_0 | RCC_CCIPR1_USART10SEL_1)
 | |
| #define RCC_USART10CLKSOURCE_CSI       RCC_CCIPR1_USART10SEL_2
 | |
| #define RCC_USART10CLKSOURCE_LSE       (RCC_CCIPR1_USART10SEL_0 | RCC_CCIPR1_USART10SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* USART10 */
 | |
| 
 | |
| #if defined(USART11)
 | |
| /** @defgroup RCCEx_USART11_Clock_Source USART11 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_USART11CLKSOURCE_PCLK1      ((uint32_t)0x00000000U)
 | |
| #define RCC_USART11CLKSOURCE_PLL2Q      RCC_CCIPR2_USART11SEL_0
 | |
| #define RCC_USART11CLKSOURCE_PLL3Q      RCC_CCIPR2_USART11SEL_1
 | |
| #define RCC_USART11CLKSOURCE_HSI        (RCC_CCIPR2_USART11SEL_0 | RCC_CCIPR2_USART11SEL_1)
 | |
| #define RCC_USART11CLKSOURCE_CSI        RCC_CCIPR2_USART11SEL_2
 | |
| #define RCC_USART11CLKSOURCE_LSE        (RCC_CCIPR2_USART11SEL_0 | RCC_CCIPR2_USART11SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* USART11 */
 | |
| 
 | |
| #if defined(UART12)
 | |
| /** @defgroup RCCEx_UART12_Clock_Source UART12 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_UART12CLKSOURCE_PCLK1       ((uint32_t)0x00000000U)
 | |
| #define RCC_UART12CLKSOURCE_PLL2Q       RCC_CCIPR2_UART12SEL_0
 | |
| #define RCC_UART12CLKSOURCE_PLL3Q       RCC_CCIPR2_UART12SEL_1
 | |
| #define RCC_UART12CLKSOURCE_HSI         (RCC_CCIPR2_UART12SEL_0 | RCC_CCIPR2_UART12SEL_1)
 | |
| #define RCC_UART12CLKSOURCE_CSI         RCC_CCIPR2_UART12SEL_2
 | |
| #define RCC_UART12CLKSOURCE_LSE         (RCC_CCIPR2_UART12SEL_0 | RCC_CCIPR2_UART12SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* UART12 */
 | |
| 
 | |
| /** @defgroup RCCEx_LPUART1_Clock_Source LPUART1 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_LPUART1CLKSOURCE_PCLK3      ((uint32_t)0x00000000U)
 | |
| #define RCC_LPUART1CLKSOURCE_PLL2Q       RCC_CCIPR3_LPUART1SEL_0
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_LPUART1CLKSOURCE_PLL3Q       RCC_CCIPR3_LPUART1SEL_1
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_LPUART1CLKSOURCE_HSI        (RCC_CCIPR3_LPUART1SEL_0 | RCC_CCIPR3_LPUART1SEL_1)
 | |
| #define RCC_LPUART1CLKSOURCE_CSI         RCC_CCIPR3_LPUART1SEL_2
 | |
| #define RCC_LPUART1CLKSOURCE_LSE        (RCC_CCIPR3_LPUART1SEL_0 | RCC_CCIPR3_LPUART1SEL_2)
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_I2C1_Clock_Source I2C1 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_I2C1CLKSOURCE_PCLK1        ((uint32_t)0x00000000U)
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_I2C1CLKSOURCE_PLL3R        RCC_CCIPR4_I2C1SEL_0
 | |
| #else
 | |
| #define RCC_I2C1CLKSOURCE_PLL2R        RCC_CCIPR4_I2C1SEL_0
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_I2C1CLKSOURCE_HSI          RCC_CCIPR4_I2C1SEL_1
 | |
| #define RCC_I2C1CLKSOURCE_CSI         (RCC_CCIPR4_I2C1SEL_1 | RCC_CCIPR4_I2C1SEL_0)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_I2C2_Clock_Source I2C2 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_I2C2CLKSOURCE_PCLK1        ((uint32_t)0x00000000U)
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_I2C2CLKSOURCE_PLL3R        RCC_CCIPR4_I2C2SEL_0
 | |
| #else
 | |
| #define RCC_I2C2CLKSOURCE_PLL2R        RCC_CCIPR4_I2C2SEL_0
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_I2C2CLKSOURCE_HSI          RCC_CCIPR4_I2C2SEL_1
 | |
| #define RCC_I2C2CLKSOURCE_CSI         (RCC_CCIPR4_I2C2SEL_1 | RCC_CCIPR4_I2C2SEL_0)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #if defined(I2C3)
 | |
| /** @defgroup RCCEx_I2C3_Clock_Source I2C3 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_I2C3CLKSOURCE_PCLK3        ((uint32_t)0x00000000U)
 | |
| #define RCC_I2C3CLKSOURCE_PLL3R        RCC_CCIPR4_I2C3SEL_0
 | |
| #define RCC_I2C3CLKSOURCE_HSI          RCC_CCIPR4_I2C3SEL_1
 | |
| #define RCC_I2C3CLKSOURCE_CSI         (RCC_CCIPR4_I2C3SEL_0 | RCC_CCIPR4_I2C3SEL_1)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* I2C3 */
 | |
| 
 | |
| #if defined(I2C4)
 | |
| /** @defgroup RCCEx_I2C4_Clock_Source I2C4 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_I2C4CLKSOURCE_PCLK3        ((uint32_t)0x00000000U)
 | |
| #define RCC_I2C4CLKSOURCE_PLL3R        RCC_CCIPR4_I2C4SEL_0
 | |
| #define RCC_I2C4CLKSOURCE_HSI          RCC_CCIPR4_I2C4SEL_1
 | |
| #define RCC_I2C4CLKSOURCE_CSI         (RCC_CCIPR4_I2C4SEL_0 | RCC_CCIPR4_I2C4SEL_1)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* I2C4 */
 | |
| 
 | |
| /** @defgroup RCCEx_I3C1_Clock_Source I3C1 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_I3C1CLKSOURCE_PCLK1        ((uint32_t)0x00000000U)
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_I3C1CLKSOURCE_PLL3R        RCC_CCIPR4_I3C1SEL_0
 | |
| #else
 | |
| #define RCC_I3C1CLKSOURCE_PLL2R        RCC_CCIPR4_I3C1SEL_0
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_I3C1CLKSOURCE_HSI          RCC_CCIPR4_I3C1SEL_1
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #if defined(I3C2)
 | |
| /** @defgroup RCCEx_I3C2_Clock_Source I3C2 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_I3C2CLKSOURCE_PCLK3        ((uint32_t)0x00000000U)
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_I3C2CLKSOURCE_PLL3R        RCC_CCIPR4_I3C2SEL_0
 | |
| #else
 | |
| #define RCC_I3C2CLKSOURCE_PLL2R        RCC_CCIPR4_I3C2SEL_0
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_I3C2CLKSOURCE_HSI          RCC_CCIPR4_I3C2SEL_1
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* I3C2 */
 | |
| 
 | |
| /** @defgroup RCCEx_RNG_Clock_Source  RCCEx RNG Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_RNGCLKSOURCE_HSI48        ((uint32_t)0x00000000U)
 | |
| #define RCC_RNGCLKSOURCE_PLL1Q         RCC_CCIPR5_RNGSEL_0
 | |
| #define RCC_RNGCLKSOURCE_LSE           RCC_CCIPR5_RNGSEL_1
 | |
| #define RCC_RNGCLKSOURCE_LSI          (RCC_CCIPR5_RNGSEL_0 | RCC_CCIPR5_RNGSEL_1)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_SPI1_Clock_Source SPI1 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_SPI1CLKSOURCE_PLL1Q       ((uint32_t)0x00000000U)
 | |
| #define RCC_SPI1CLKSOURCE_PLL2P        RCC_CCIPR3_SPI1SEL_0
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_SPI1CLKSOURCE_PLL3P        RCC_CCIPR3_SPI1SEL_1
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_SPI1CLKSOURCE_PIN         (RCC_CCIPR3_SPI1SEL_0 | RCC_CCIPR3_SPI1SEL_1)
 | |
| #define RCC_SPI1CLKSOURCE_CLKP         RCC_CCIPR3_SPI1SEL_2
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_SPI2_Clock_Source SPI2 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_SPI2CLKSOURCE_PLL1Q       ((uint32_t)0x00000000U)
 | |
| #define RCC_SPI2CLKSOURCE_PLL2P        RCC_CCIPR3_SPI2SEL_0
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_SPI2CLKSOURCE_PLL3P        RCC_CCIPR3_SPI2SEL_1
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_SPI2CLKSOURCE_PIN         (RCC_CCIPR3_SPI2SEL_0 | RCC_CCIPR3_SPI2SEL_1)
 | |
| #define RCC_SPI2CLKSOURCE_CLKP         RCC_CCIPR3_SPI2SEL_2
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_SPI3_Clock_Source SPI3 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_SPI3CLKSOURCE_PLL1Q       ((uint32_t)0x00000000U)
 | |
| #define RCC_SPI3CLKSOURCE_PLL2P        RCC_CCIPR3_SPI3SEL_0
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_SPI3CLKSOURCE_PLL3P        RCC_CCIPR3_SPI3SEL_1
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_SPI3CLKSOURCE_PIN         (RCC_CCIPR3_SPI3SEL_0 | RCC_CCIPR3_SPI3SEL_1)
 | |
| #define RCC_SPI3CLKSOURCE_CLKP         RCC_CCIPR3_SPI3SEL_2
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #if defined(SPI4)
 | |
| /** @defgroup RCCEx_SPI4_Clock_Source SPI4 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_SPI4CLKSOURCE_PCLK2        ((uint32_t)0x00000000U)
 | |
| #define RCC_SPI4CLKSOURCE_PLL2Q         RCC_CCIPR3_SPI4SEL_0
 | |
| #define RCC_SPI4CLKSOURCE_PLL3Q         RCC_CCIPR3_SPI4SEL_1
 | |
| #define RCC_SPI4CLKSOURCE_HSI           (RCC_CCIPR3_SPI4SEL_0 | RCC_CCIPR3_SPI4SEL_1)
 | |
| #define RCC_SPI4CLKSOURCE_CSI           RCC_CCIPR3_SPI4SEL_2
 | |
| #define RCC_SPI4CLKSOURCE_HSE          (RCC_CCIPR3_SPI4SEL_0 | RCC_CCIPR3_SPI4SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* SPI4 */
 | |
| 
 | |
| #if defined(SPI5)
 | |
| /** @defgroup RCCEx_SPI5_Clock_Source SPI5 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_SPI5CLKSOURCE_PCLK3        ((uint32_t)0x00000000U)
 | |
| #define RCC_SPI5CLKSOURCE_PLL2Q         RCC_CCIPR3_SPI5SEL_0
 | |
| #define RCC_SPI5CLKSOURCE_PLL3Q         RCC_CCIPR3_SPI5SEL_1
 | |
| #define RCC_SPI5CLKSOURCE_HSI           (RCC_CCIPR3_SPI5SEL_0 | RCC_CCIPR3_SPI5SEL_1)
 | |
| #define RCC_SPI5CLKSOURCE_CSI           RCC_CCIPR3_SPI5SEL_2
 | |
| #define RCC_SPI5CLKSOURCE_HSE          (RCC_CCIPR3_SPI5SEL_0 | RCC_CCIPR3_SPI5SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* SPI5 */
 | |
| 
 | |
| #if defined(SPI6)
 | |
| /** @defgroup RCCEx_SPI6_Clock_Source SPI6 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_SPI6CLKSOURCE_PCLK2        ((uint32_t)0x00000000U)
 | |
| #define RCC_SPI6CLKSOURCE_PLL2Q         RCC_CCIPR3_SPI6SEL_0
 | |
| #define RCC_SPI6CLKSOURCE_PLL3Q         RCC_CCIPR3_SPI6SEL_1
 | |
| #define RCC_SPI6CLKSOURCE_HSI           (RCC_CCIPR3_SPI6SEL_0 | RCC_CCIPR3_SPI6SEL_1)
 | |
| #define RCC_SPI6CLKSOURCE_CSI           RCC_CCIPR3_SPI6SEL_2
 | |
| #define RCC_SPI6CLKSOURCE_HSE          (RCC_CCIPR3_SPI6SEL_0 | RCC_CCIPR3_SPI6SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* SPI6 */
 | |
| 
 | |
| /** @defgroup RCCEx_LPTIM1_Clock_Source LPTIM1 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_LPTIM1CLKSOURCE_PCLK3      ((uint32_t)0x00000000U)
 | |
| #define RCC_LPTIM1CLKSOURCE_PLL2P       RCC_CCIPR2_LPTIM1SEL_0
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_LPTIM1CLKSOURCE_PLL3R       RCC_CCIPR2_LPTIM1SEL_1
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_LPTIM1CLKSOURCE_LSE        (RCC_CCIPR2_LPTIM1SEL_0 | RCC_CCIPR2_LPTIM1SEL_1)
 | |
| #define RCC_LPTIM1CLKSOURCE_LSI         RCC_CCIPR2_LPTIM1SEL_2
 | |
| #define RCC_LPTIM1CLKSOURCE_CLKP       (RCC_CCIPR2_LPTIM1SEL_0 | RCC_CCIPR2_LPTIM1SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_LPTIM2_Clock_Source LPTIM2 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_LPTIM2CLKSOURCE_PCLK1      ((uint32_t)0x00000000U)
 | |
| #define RCC_LPTIM2CLKSOURCE_PLL2P       RCC_CCIPR2_LPTIM2SEL_0
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_LPTIM2CLKSOURCE_PLL3R       RCC_CCIPR2_LPTIM2SEL_1
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_LPTIM2CLKSOURCE_LSE        (RCC_CCIPR2_LPTIM2SEL_0 | RCC_CCIPR2_LPTIM2SEL_1)
 | |
| #define RCC_LPTIM2CLKSOURCE_LSI         RCC_CCIPR2_LPTIM2SEL_2
 | |
| #define RCC_LPTIM2CLKSOURCE_CLKP       (RCC_CCIPR2_LPTIM2SEL_0 | RCC_CCIPR2_LPTIM2SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #if defined(LPTIM3)
 | |
| /** @defgroup RCCEx_LPTIM3_Clock_Source LPTIM3 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_LPTIM3CLKSOURCE_PCLK3      ((uint32_t)0x00000000U)
 | |
| #define RCC_LPTIM3CLKSOURCE_PLL2P       RCC_CCIPR2_LPTIM3SEL_0
 | |
| #define RCC_LPTIM3CLKSOURCE_PLL3R       RCC_CCIPR2_LPTIM3SEL_1
 | |
| #define RCC_LPTIM3CLKSOURCE_LSE        (RCC_CCIPR2_LPTIM3SEL_0 | RCC_CCIPR2_LPTIM3SEL_1)
 | |
| #define RCC_LPTIM3CLKSOURCE_LSI         RCC_CCIPR2_LPTIM3SEL_2
 | |
| #define RCC_LPTIM3CLKSOURCE_CLKP       (RCC_CCIPR2_LPTIM3SEL_0 | RCC_CCIPR2_LPTIM3SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* LPTIM3 */
 | |
| 
 | |
| #if defined(LPTIM4)
 | |
| /** @defgroup RCCEx_LPTIM4_Clock_Source LPTIM4 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_LPTIM4CLKSOURCE_PCLK3      ((uint32_t)0x00000000U)
 | |
| #define RCC_LPTIM4CLKSOURCE_PLL2P       RCC_CCIPR2_LPTIM4SEL_0
 | |
| #define RCC_LPTIM4CLKSOURCE_PLL3R       RCC_CCIPR2_LPTIM4SEL_1
 | |
| #define RCC_LPTIM4CLKSOURCE_LSE        (RCC_CCIPR2_LPTIM4SEL_0 | RCC_CCIPR2_LPTIM4SEL_1)
 | |
| #define RCC_LPTIM4CLKSOURCE_LSI         RCC_CCIPR2_LPTIM4SEL_2
 | |
| #define RCC_LPTIM4CLKSOURCE_CLKP       (RCC_CCIPR2_LPTIM4SEL_0 | RCC_CCIPR2_LPTIM4SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* LPTIM4 */
 | |
| 
 | |
| #if defined(LPTIM5)
 | |
| /** @defgroup RCCEx_LPTIM5_Clock_Source LPTIM5 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_LPTIM5CLKSOURCE_PCLK3      ((uint32_t)0x00000000U)
 | |
| #define RCC_LPTIM5CLKSOURCE_PLL2P       RCC_CCIPR2_LPTIM5SEL_0
 | |
| #define RCC_LPTIM5CLKSOURCE_PLL3R       RCC_CCIPR2_LPTIM5SEL_1
 | |
| #define RCC_LPTIM5CLKSOURCE_LSE        (RCC_CCIPR2_LPTIM5SEL_0 | RCC_CCIPR2_LPTIM5SEL_1)
 | |
| #define RCC_LPTIM5CLKSOURCE_LSI         RCC_CCIPR2_LPTIM5SEL_2
 | |
| #define RCC_LPTIM5CLKSOURCE_CLKP       (RCC_CCIPR2_LPTIM5SEL_0 | RCC_CCIPR2_LPTIM5SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* LPTIM5 */
 | |
| 
 | |
| #if defined(LPTIM6)
 | |
| /** @defgroup RCCEx_LPTIM6_Clock_Source LPTIM6 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_LPTIM6CLKSOURCE_PCLK3      ((uint32_t)0x00000000U)
 | |
| #define RCC_LPTIM6CLKSOURCE_PLL2P       RCC_CCIPR2_LPTIM6SEL_0
 | |
| #define RCC_LPTIM6CLKSOURCE_PLL3R       RCC_CCIPR2_LPTIM6SEL_1
 | |
| #define RCC_LPTIM6CLKSOURCE_LSE        (RCC_CCIPR2_LPTIM6SEL_0 | RCC_CCIPR2_LPTIM6SEL_1)
 | |
| #define RCC_LPTIM6CLKSOURCE_LSI         RCC_CCIPR2_LPTIM6SEL_2
 | |
| #define RCC_LPTIM6CLKSOURCE_CLKP       (RCC_CCIPR2_LPTIM6SEL_0 | RCC_CCIPR2_LPTIM6SEL_2)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* LPTIM6 */
 | |
| 
 | |
| /** @defgroup RCCEx_FDCAN_Clock_Source FDCAN Kernel Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_FDCANCLKSOURCE_HSE         ((uint32_t)0x00000000U)
 | |
| #define RCC_FDCANCLKSOURCE_PLL1Q        RCC_CCIPR5_FDCANSEL_0
 | |
| #define RCC_FDCANCLKSOURCE_PLL2Q        RCC_CCIPR5_FDCANSEL_1
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_ADCDAC_Clock_Source ADCDAC Kernel Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_ADCDACCLKSOURCE_HCLK         ((uint32_t)0x00000000U)
 | |
| #define RCC_ADCDACCLKSOURCE_SYSCLK       RCC_CCIPR5_ADCDACSEL_0
 | |
| #define RCC_ADCDACCLKSOURCE_PLL2R        RCC_CCIPR5_ADCDACSEL_1
 | |
| #define RCC_ADCDACCLKSOURCE_HSE         (RCC_CCIPR5_ADCDACSEL_1 | RCC_CCIPR5_ADCDACSEL_0)
 | |
| #define RCC_ADCDACCLKSOURCE_HSI          RCC_CCIPR5_ADCDACSEL_2
 | |
| #define RCC_ADCDACCLKSOURCE_CSI         (RCC_CCIPR5_ADCDACSEL_2 | RCC_CCIPR5_ADCDACSEL_0)
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_DAC_Low_Power_Clock_Source DAC Low Power Kernel Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_DACLPCLKSOURCE_LSE   ((uint32_t)0x00000000U)
 | |
| #define RCC_DACLPCLKSOURCE_LSI   RCC_CCIPR5_DACSEL
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #if defined(SAI1)
 | |
| /** @defgroup RCCEx_SAI1_Clock_Source SAI1 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_SAI1CLKSOURCE_PLL1Q        ((uint32_t)0x00000000U)
 | |
| #define RCC_SAI1CLKSOURCE_PLL2P        RCC_CCIPR5_SAI1SEL_0
 | |
| #define RCC_SAI1CLKSOURCE_PLL3P        RCC_CCIPR5_SAI1SEL_1
 | |
| #define RCC_SAI1CLKSOURCE_PIN          (RCC_CCIPR5_SAI1SEL_1 | RCC_CCIPR5_SAI1SEL_0)
 | |
| #define RCC_SAI1CLKSOURCE_CLKP         RCC_CCIPR5_SAI1SEL_2
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* SAI1 */
 | |
| 
 | |
| #if defined(SAI2)
 | |
| /** @defgroup RCCEx_SAI2_Clock_Source SAI2 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_SAI2CLKSOURCE_PLL1Q        ((uint32_t)0x00000000U)
 | |
| #define RCC_SAI2CLKSOURCE_PLL2P        RCC_CCIPR5_SAI2SEL_0
 | |
| #define RCC_SAI2CLKSOURCE_PLL3P        RCC_CCIPR5_SAI2SEL_1
 | |
| #define RCC_SAI2CLKSOURCE_PIN          (RCC_CCIPR5_SAI2SEL_1 | RCC_CCIPR5_SAI2SEL_0)
 | |
| #define RCC_SAI2CLKSOURCE_CLKP         RCC_CCIPR5_SAI2SEL_2
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* SAI2 */
 | |
| 
 | |
| /** @defgroup RCCEx_CLKP_Clock_Source  RCCEx CLKP Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_CLKPSOURCE_HSI            (0x00000000U)
 | |
| #define RCC_CLKPSOURCE_CSI             RCC_CCIPR5_CKERPSEL_0
 | |
| #define RCC_CLKPSOURCE_HSE             RCC_CCIPR5_CKERPSEL_1
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #if defined(SDMMC1)
 | |
| /** @defgroup RCCEx_SDMMC1_Clock_Source SDMMC1 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_SDMMC1CLKSOURCE_PLL1Q     ((uint32_t)0x00000000U)
 | |
| #define RCC_SDMMC1CLKSOURCE_PLL2R      RCC_CCIPR4_SDMMC1SEL
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* SDMMC1 */
 | |
| 
 | |
| #if defined(SDMMC2)
 | |
| /** @defgroup RCCEx_SDMMC2_Clock_Source SDMMC2 Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_SDMMC2CLKSOURCE_PLL1Q     ((uint32_t)0x00000000U)
 | |
| #define RCC_SDMMC2CLKSOURCE_PLL2R      RCC_CCIPR4_SDMMC2SEL
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* SDMMC2 */
 | |
| 
 | |
| #if defined(OCTOSPI1)
 | |
| /** @defgroup RCCEx_OSPI_Clock_Source OctoSPI Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_OSPICLKSOURCE_HCLK      ((uint32_t)0x00000000U)
 | |
| #define RCC_OSPICLKSOURCE_PLL1Q      RCC_CCIPR4_OCTOSPISEL_0
 | |
| #define RCC_OSPICLKSOURCE_PLL2R      RCC_CCIPR4_OCTOSPISEL_1
 | |
| #define RCC_OSPICLKSOURCE_CLKP      (RCC_CCIPR4_OCTOSPISEL_0 | RCC_CCIPR4_OCTOSPISEL_1)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* OCTOSPI1 */
 | |
| 
 | |
| #if defined(CEC)
 | |
| /** @defgroup RCCEx_CEC_Clock_Source CEC Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_CECCLKSOURCE_LSE              ((uint32_t)0x00000000U)
 | |
| #define RCC_CECCLKSOURCE_LSI               RCC_CCIPR5_CECSEL_0
 | |
| #define RCC_CECCLKSOURCE_CSI_DIV122        RCC_CCIPR5_CECSEL_1
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* CEC */
 | |
| 
 | |
| #if defined(USB_DRD_FS)
 | |
| /** @defgroup RCCEx_USB_Clock_Source  RCCEx USB Clock Source
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_USBCLKSOURCE_PLL1Q          RCC_CCIPR4_USBSEL_0
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define RCC_USBCLKSOURCE_PLL3Q          RCC_CCIPR4_USBSEL_1
 | |
| #else
 | |
| #define RCC_USBCLKSOURCE_PLL2Q          RCC_CCIPR4_USBSEL_1
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #define RCC_USBCLKSOURCE_HSI48          RCC_CCIPR4_USBSEL
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* USB_DRD_FS */
 | |
| 
 | |
| /** @defgroup RCCEx_TIM_Prescaler_Selection RCCEx TIM Prescaler Selection
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_TIMPRES_DEACTIVATED         (0x00000000U)
 | |
| #define RCC_TIMPRES_ACTIVATED            RCC_CFGR1_TIMPRE
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #if defined(CRS)
 | |
| 
 | |
| /** @defgroup RCCEx_CRS_Status RCCEx CRS Status
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_CRS_NONE                   ((uint32_t)0x00000000U)
 | |
| #define RCC_CRS_TIMEOUT                ((uint32_t)0x00000001U)
 | |
| #define RCC_CRS_SYNCOK                 ((uint32_t)0x00000002U)
 | |
| #define RCC_CRS_SYNCWARN               ((uint32_t)0x00000004U)
 | |
| #define RCC_CRS_SYNCERR                ((uint32_t)0x00000008U)
 | |
| #define RCC_CRS_SYNCMISS               ((uint32_t)0x00000010U)
 | |
| #define RCC_CRS_TRIMOVF                ((uint32_t)0x00000020U)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_CRS_SynchroSource RCCEx CRS SynchroSource
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_CRS_SYNC_SOURCE_GPIO       ((uint32_t)0x00000000U)                     /*!< Synchro Signal source GPIO */
 | |
| #define RCC_CRS_SYNC_SOURCE_LSE        CRS_CFGR_SYNCSRC_0                          /*!< Synchro Signal source LSE */
 | |
| #if defined(USB_DRD_FS)
 | |
| #define RCC_CRS_SYNC_SOURCE_USB        CRS_CFGR_SYNCSRC_1                          /*!< Synchro Signal source USB SOF (default)*/
 | |
| #endif /* USB_DRD_FS */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_CRS_SynchroDivider RCCEx CRS SynchroDivider
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_CRS_SYNC_DIV1        ((uint32_t)0x00000000U)                   /*!< Synchro Signal not divided (default) */
 | |
| #define RCC_CRS_SYNC_DIV2        CRS_CFGR_SYNCDIV_0                        /*!< Synchro Signal divided by 2 */
 | |
| #define RCC_CRS_SYNC_DIV4        CRS_CFGR_SYNCDIV_1                        /*!< Synchro Signal divided by 4 */
 | |
| #define RCC_CRS_SYNC_DIV8        (CRS_CFGR_SYNCDIV_1 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 8 */
 | |
| #define RCC_CRS_SYNC_DIV16       CRS_CFGR_SYNCDIV_2                        /*!< Synchro Signal divided by 16 */
 | |
| #define RCC_CRS_SYNC_DIV32       (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 32 */
 | |
| #define RCC_CRS_SYNC_DIV64       (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_1) /*!< Synchro Signal divided by 64 */
 | |
| #define RCC_CRS_SYNC_DIV128      CRS_CFGR_SYNCDIV                          /*!< Synchro Signal divided by 128 */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_CRS_SynchroPolarity RCCEx CRS SynchroPolarity
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_CRS_SYNC_POLARITY_RISING   ((uint32_t)0x00000000U) /*!< Synchro Active on rising edge (default) */
 | |
| #define RCC_CRS_SYNC_POLARITY_FALLING  CRS_CFGR_SYNCPOL        /*!< Synchro Active on falling edge */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_CRS_ReloadValueDefault RCCEx CRS ReloadValueDefault
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_CRS_RELOADVALUE_DEFAULT    ((uint32_t)0x0000BB7FU) /*!< The reset value of the RELOAD field corresponds
 | |
|                                                                    to a target frequency of 48 MHz and a synchronization
 | |
|                                                                    signal frequency of 1 kHz (SOF signal from USB). */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_CRS_ErrorLimitDefault RCCEx CRS ErrorLimitDefault
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_CRS_ERRORLIMIT_DEFAULT     ((uint32_t)0x00000022U) /*!< Default Frequency error limit */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_CRS_HSI48CalibrationDefault RCCEx CRS HSI48CalibrationDefault
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_CRS_HSI48CALIBRATION_DEFAULT ((uint32_t)0x00000020U) /*!< The default value is 32, which corresponds to the
 | |
|                                                                       middle of the trimming interval. The trimming step
 | |
|                                                                       is around 67 kHz between two consecutive TRIM
 | |
|                                                                       steps. A higher TRIM value corresponds to a higher
 | |
|                                                                       output frequency */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_CRS_FreqErrorDirection RCCEx CRS FreqErrorDirection
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_CRS_FREQERRORDIR_UP        ((uint32_t)0x00000000U)   /*!< Upcounting direction, the actual frequency is above the target */
 | |
| #define RCC_CRS_FREQERRORDIR_DOWN      ((uint32_t)CRS_ISR_FEDIR) /*!< Downcounting direction, the actual frequency is below the target */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_CRS_Interrupt_Sources RCCEx CRS Interrupt Sources
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_CRS_IT_SYNCOK              CRS_CR_SYNCOKIE       /*!< SYNC event OK */
 | |
| #define RCC_CRS_IT_SYNCWARN            CRS_CR_SYNCWARNIE     /*!< SYNC warning */
 | |
| #define RCC_CRS_IT_ERR                 CRS_CR_ERRIE          /*!< Error */
 | |
| #define RCC_CRS_IT_ESYNC               CRS_CR_ESYNCIE        /*!< Expected SYNC */
 | |
| #define RCC_CRS_IT_SYNCERR             CRS_CR_ERRIE          /*!< SYNC error */
 | |
| #define RCC_CRS_IT_SYNCMISS            CRS_CR_ERRIE          /*!< SYNC missed */
 | |
| #define RCC_CRS_IT_TRIMOVF             CRS_CR_ERRIE          /*!< Trimming overflow or underflow */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_CRS_Flags RCCEx CRS Flags
 | |
|   * @{
 | |
|   */
 | |
| #define RCC_CRS_FLAG_SYNCOK            CRS_ISR_SYNCOKF       /*!< SYNC event OK flag     */
 | |
| #define RCC_CRS_FLAG_SYNCWARN          CRS_ISR_SYNCWARNF     /*!< SYNC warning flag      */
 | |
| #define RCC_CRS_FLAG_ERR               CRS_ISR_ERRF          /*!< Error flag        */
 | |
| #define RCC_CRS_FLAG_ESYNC             CRS_ISR_ESYNCF        /*!< Expected SYNC flag     */
 | |
| #define RCC_CRS_FLAG_SYNCERR           CRS_ISR_SYNCERR       /*!< SYNC error */
 | |
| #define RCC_CRS_FLAG_SYNCMISS          CRS_ISR_SYNCMISS      /*!< SYNC missed*/
 | |
| #define RCC_CRS_FLAG_TRIMOVF           CRS_ISR_TRIMOVF       /*!< Trimming overflow or underflow */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #endif /* CRS */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Exported macros -----------------------------------------------------------*/
 | |
| /** @defgroup RCCEx_Exported_Macros RCCEx Exported Macros
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /** @brief  Macros to enable or disable the HSI and CSI divided clock for Timers 12, 15 and LPTimer2 input capture.
 | |
|   * @note   HSI and CSI clocks without division are available when TIMIC is enabled
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_TIMIC_ENABLE()  SET_BIT(RCC->CCIPR1, RCC_CCIPR1_TIMICSEL)     /*!< HSI/1024, CSI/128 and HSI/8 generation for Timers 12,15 and LPTimer2 Input capture */
 | |
| #define __HAL_RCC_TIMIC_DISABLE() CLEAR_BIT(RCC->CCIPR1, RCC_CCIPR1_TIMICSEL)   /*!< No clock available for Timers Input capture */
 | |
| 
 | |
| /** @brief  Macro to configure the PLL2 clock source.
 | |
|   * @note   This function must be used only when all PLL2 is disabled.
 | |
|   * @param  __PLL2SOURCE__: specifies the PLL2 entry clock source.
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg RCC_PLL2_SOURCE_NONE: No oscillator clock selected as PLL2 clock entry
 | |
|   *            @arg RCC_PLL2_SOURCE_CSI: CSI oscillator clock selected as PLL2 clock entry
 | |
|   *            @arg RCC_PLL2_SOURCE_HSI: HSI oscillator clock selected as PLL2 clock entry
 | |
|   *            @arg RCC_PLL2_SOURCE_HSE: HSE oscillator clock selected as PLL2 clock entry
 | |
|   *
 | |
|   */
 | |
| #define __HAL_RCC_PLL2_PLLSOURCE_CONFIG(__PLL2SOURCE__) MODIFY_REG(RCC->PLL2CFGR, RCC_PLL2CFGR_PLL2SRC, \
 | |
|                                                                    (__PLL2SOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the oscillator used as PLL2 clock source.
 | |
|   * @retval The oscillator used as PLL2 clock source. The returned value can be one
 | |
|   *         of the following:
 | |
|   *              - RCC_PLL2_SOURCE_NONE: No oscillator is used as PLL clock source.
 | |
|   *              - RCC_PLL2_SOURCE_CSI: CSI oscillator is used as PLL clock source.
 | |
|   *              - RCC_PLL2_SOURCE_HSI: HSI oscillator is used as PLL clock source.
 | |
|   *              - RCC_PLL2_SOURCE_HSE: HSE oscillator is used as PLL clock source.
 | |
|   */
 | |
| #define __HAL_RCC_GET_PLL2_OSCSOURCE() ((uint32_t)(RCC->PLL2CFGR & RCC_PLL2CFGR_PLL2SRC))
 | |
| 
 | |
| /**
 | |
|   * @brief  Macro to configures the PLL2 source, multiplication and division factors.
 | |
|   * @note   This function must be used only when PLL2 is disabled.
 | |
|   *
 | |
|   * @param  __PLL2SOURCE__: specifies the PLL2 entry clock source.
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_PLL2_SOURCE_NONE  No clock selected as PLL2 clock entry
 | |
|   *            @arg @ref RCC_PLL2_SOURCE_CSI  CSI oscillator clock selected as PLL2 clock entry
 | |
|   *            @arg @ref RCC_PLL2_SOURCE_HSI  HSI oscillator clock selected as PLL2 clock entry
 | |
|   *            @arg @ref RCC_PLL2_SOURCE_HSE  HSE oscillator clock selected as PLL2 clock entry
 | |
|   *
 | |
|   * @param  __PLL2M__ specifies the division factor of PLL2 input clock.
 | |
|   *         This parameter must be a number between Min_Data = 1 and Max_Data = 63.
 | |
|   *
 | |
|   * @param  __PLL2N__: specifies the multiplication factor for PLL2 VCO output clock
 | |
|   *          This parameter must be a number between 4 and 512.
 | |
|   * @note   You have to set the PLL2N parameter correctly to ensure that the VCO
 | |
|   *         output frequency is between 192 and 836 MHz (Wide range) or 150 and 420 Mhz (Medium range).
 | |
|   *         PLL2 clock frequency = f(PLL2) multiplied by PLL2N
 | |
|   *
 | |
|   * @param  __PLL2P__: specifies the division factor for peripheral kernel clocks
 | |
|   *          This parameter must be a number between 1 and 128
 | |
|   *
 | |
|   * @param  __PLL2Q__: specifies the division factor for peripheral kernel clocks
 | |
|   *          This parameter must be a number between 1 and 128
 | |
|   *
 | |
|   * @param  __PLL2R__: specifies the division factor for peripheral kernel clocks
 | |
|   *          This parameter must be a number between 1 and 128
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL2_CONFIG(__PLL2SOURCE__, __PLL2M__, __PLL2N__, __PLL2P__, __PLL2Q__, __PLL2R__) \
 | |
|   do{ \
 | |
|     MODIFY_REG(RCC->PLL2CFGR, (RCC_PLL2CFGR_PLL2SRC | RCC_PLL2CFGR_PLL2M), \
 | |
|                ((__PLL2SOURCE__) << RCC_PLL2CFGR_PLL2SRC_Pos) | ((__PLL2M__) << RCC_PLL2CFGR_PLL2M_Pos)); \
 | |
|     WRITE_REG(RCC->PLL2DIVR , ((((__PLL2N__) - 1U) & RCC_PLL2DIVR_PLL2N) | \
 | |
|                                ((((__PLL2P__) - 1U) << RCC_PLL2DIVR_PLL2P_Pos) & RCC_PLL2DIVR_PLL2P) |  \
 | |
|                                ((((__PLL2Q__) - 1U) << RCC_PLL2DIVR_PLL2Q_Pos) & RCC_PLL2DIVR_PLL2Q) |  \
 | |
|                                ((((__PLL2R__) - 1U) << RCC_PLL2DIVR_PLL2R_Pos) & RCC_PLL2DIVR_PLL2R))); \
 | |
|   } while(0)
 | |
| /**
 | |
|   * @brief  Macro to configure the PLL2 clock multiplication factor N.
 | |
|   *
 | |
|   * @note   This function must be used only when the PLL2 is disabled.
 | |
|   * @note   PLL2 clock source is independent from the main PLL and is configured through
 | |
|   *         __HAL_RCC_PLL2_CONFIG() macro.
 | |
|   *
 | |
|   * @param  __PLL2N__ specifies the multiplication factor for PLL2 VCO output clock.
 | |
|   *          This parameter must be a number between 4 and 512.
 | |
|   * @note   You have to set the PLL2N parameter correctly to ensure that the VCO
 | |
|   *         output frequency is between 192 and 836 MHz (Wide range) or 150 and 420 Mhz (Medium range).
 | |
|   *         PLL2 clock frequency = f(PLL2) multiplied by PLL2N
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL2_MULN_CONFIG(__PLL2N__) \
 | |
|   MODIFY_REG(RCC->PLL2DIVR, RCC_PLL2DIVR_N2, ((__PLL2N__) - 1U) << RCC_PLL2DIVR_N2_Pos)
 | |
| 
 | |
| /** @brief  Macro to configure the PLL2 input clock division factor M.
 | |
|   *
 | |
|   * @note   This function must be used only when the PLL2 is disabled.
 | |
|   * @note   PLL2 clock source is independent from the main PLL and is configured through
 | |
|   *         __HAL_RCC_PLL2_CONFIG() macro.
 | |
|   *
 | |
|   * @param  __PLL2M__ specifies the division factor for PLL2 clock.
 | |
|   *         This parameter must be a number between Min_Data = 1 and Max_Data = 63.
 | |
|   *         In order to save power when PLL2 is not used, the value of PLL2M must be set to 0.
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL2_DIVM_CONFIG(__PLL2M__) \
 | |
|   MODIFY_REG(RCC->PLL2CFGR, RCC_PLL2CFGR_DIVM2, (__PLL2M__) << RCC_PLL2CFGR_DIVM2_Pos)
 | |
| 
 | |
| /** @brief  Macro to configure the PLL2 clock division factor P.
 | |
|   *
 | |
|   * @note   This function must be used only when the PLL2 is disabled.
 | |
|   * @note   PLL2 clock source is independent from the main PLL and is configured through
 | |
|   *         __HAL_RCC_PLL2_CONFIG() macro.
 | |
|   *
 | |
|   * @param  __PLL2P__ specifies the division factor for PLL2 output P clock.
 | |
|   *         This parameter must be a number in the range (1 to 128).
 | |
|   *         Use to set PLL2 output P clock frequency = f(PLL2) / PLL2P
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL2_DIVP_CONFIG(__PLL2P__) \
 | |
|   MODIFY_REG(RCC->PLL2DIVR, RCC_PLL2DIVR_P2, ((__PLL2P__) - 1U) << RCC_PLL2DIVR_P2_Pos)
 | |
| 
 | |
| /** @brief  Macro to configure the PLL2 clock division factor Q.
 | |
|   *
 | |
|   * @note   This function must be used only when the PLL2 is disabled.
 | |
|   * @note   PLL2 clock source is independent from the main PLL and is configured through
 | |
|   *         __HAL_RCC_PLL2_CONFIG() macro.
 | |
|   *
 | |
|   * @param  __PLL2Q__ specifies the division factor for PLL2 output Q clock.
 | |
|   *         This parameter must be a number in the range (1 to 128).
 | |
|   *         Use to set PLL2 output Q clock frequency = f(PLL2) / PLL2Q
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL2_DIVQ_CONFIG(__PLL2Q__) \
 | |
|   MODIFY_REG(RCC->PLL2DIVR, RCC_PLL2DIVR_Q2, ((__PLL2Q__) - 1U) << RCC_PLL2DIVR_Q2_Pos)
 | |
| 
 | |
| /** @brief  Macro to configure the PLL2 clock division factor R.
 | |
|   *
 | |
|   * @note   This function must be used only when the PLL2 is disabled.
 | |
|   * @note   PLL2 clock source is independent from the main PLL and is configured through
 | |
|   *         __HAL_RCC_PLL2_CONFIG() macro.
 | |
|   *
 | |
|   * @param  __PLL2R__ specifies the division factor for PLL2 output R clock.
 | |
|   *         This parameter must be a number in the range (1 to 128).
 | |
|   *         Use to set PLL2 output R clock frequency = f(PLL2) / PLL2R
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL2_DIVR_CONFIG(__PLL2R__) \
 | |
|   MODIFY_REG(RCC->PLL2DIVR, RCC_PLL2DIVR_R2, ((__PLL2R__) - 1U) << RCC_PLL2DIVR_R2_Pos)
 | |
| 
 | |
| /** @brief  Macros to enable or disable the PLL2.
 | |
|   * @note   After enabling PLL2, the application software should wait on
 | |
|   *         PLL2RDY flag to be set indicating that PLL2 clock is stable and can
 | |
|   *         be used as kernel clock source.
 | |
|   * @note   The PLL2 is disabled by hardware when entering STOP and STANDBY modes.
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL2_ENABLE()  SET_BIT(RCC->CR, RCC_CR_PLL2ON)
 | |
| #define __HAL_RCC_PLL2_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_PLL2ON)
 | |
| 
 | |
| /**
 | |
|   * @brief  Enables or disables each clock output (PLL2_P_CLK, PLL2_Q_CLK, PLL2_R_CLK)
 | |
|   * @note   Enabling/disabling those clocks can be done at any time without the need to stop the PLL2,
 | |
|   *         This is mainly used to save Power.
 | |
|   * @param  __PLL2_CLOCKOUT__ specifies the PLL2 clock to be output.
 | |
|   *         This parameter can be one or a combination of the following values:
 | |
|   *            @arg RCC_PLL2_DIVP: This clock is used to generate an accurate kernel clock to achieve
 | |
|   *                                high-quality audio performance on SAI interface, SPI/I2S and LPTIM peripherals.
 | |
|   *            @arg RCC_PLL2_DIVQ: This clock is used to generate kernel clock for the random number generator RNG
 | |
|   *                                (<=48 MHz), SPI, FDCAN and UART/USART peripherals.
 | |
|   *            @arg RCC_PLL2_DIVR: This clock is used to generate kernel clock for ADC and DAC peripherals.
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL2_CLKOUT_ENABLE(__PLL2_CLOCKOUT__)   SET_BIT(RCC->PLL2CFGR, (__PLL2_CLOCKOUT__))
 | |
| #define __HAL_RCC_PLL2_CLKOUT_DISABLE(__PLL2_CLOCKOUT__)  CLEAR_BIT(RCC->PLL2CFGR, (__PLL2_CLOCKOUT__))
 | |
| 
 | |
| /**
 | |
|   * @brief  Macro to get the PLL2 clock output enable status.
 | |
|   * @param  __PLL2_CLOCKOUT__ specifies the PLL2 clock to be output.
 | |
|   *         This parameter can be one or a combination of the following values:
 | |
|   *            @arg RCC_PLL2_DIVP: This clock is used to generate an accurate kernel clock to achieve
 | |
|   *                                high-quality audio performance on SAI interface, SPI/I2S and LPTIM peripherals.
 | |
|   *            @arg RCC_PLL2_DIVQ: This clock is used to generate kernel clock for the random number generator RNG
 | |
|   *                                (<=48 MHz), SPI, FDCAN and UART/USART peripherals.
 | |
|   *            @arg RCC_PLL2_DIVR: This clock is used to generate kernel clock for ADC and DAC peripherals.
 | |
|   * @retval SET / RESET
 | |
|   */
 | |
| #define __HAL_RCC_GET_PLL2_CLKOUT_CONFIG(__PLL2_CLOCKOUT__)  READ_BIT(RCC->PLL2CFGR, (__PLL2_CLOCKOUT__))
 | |
| 
 | |
| /**
 | |
|   * @brief  Enables or disables Fractional Part Of The Multiplication Factor of PLL2 VCO
 | |
|   * @note   Enabling/disabling  Fractional Part can be done at any time without the need to stop the PLL2
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL2_FRACN_ENABLE()   SET_BIT(RCC->PLL2CFGR, RCC_PLL2CFGR_PLL2FRACEN)
 | |
| #define __HAL_RCC_PLL2_FRACN_DISABLE()  CLEAR_BIT(RCC->PLL2CFGR, RCC_PLL2CFGR_PLL2FRACEN)
 | |
| 
 | |
| /**
 | |
|   * @brief  Macro to configures PLL2 clock Fractional Part Of The Multiplication Factor
 | |
|   *
 | |
|   * @note   These bits can be written at any time, allowing dynamic fine-tuning of the PLL2 VCO
 | |
|   *
 | |
|   * @param  __PLL2FRACN__: Specifies Fractional Part Of The Multiplication factor for PLL2 VCO
 | |
|   *                           It should be a value between 0 and 8191
 | |
|   * @note   Warning: the software has to set correctly these bits to insure that the VCO
 | |
|   *                  output frequency is between its valid frequency range, which is:
 | |
|   *                  192 to 836 MHz if PLL2VCOSEL = 0
 | |
|   *                  150 to 420 MHz if PLL2VCOSEL = 1.
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define  __HAL_RCC_PLL2_FRACN_CONFIG(__PLL2FRACN__) MODIFY_REG(RCC->PLL2FRACR, RCC_PLL2FRACR_PLL2FRACN, \
 | |
|                                                                (uint32_t)(__PLL2FRACN__) << RCC_PLL2FRACR_PLL2FRACN_Pos)
 | |
| 
 | |
| /** @brief  Macro to select  the PLL2  reference frequency range.
 | |
|   * @param  __PLL2VCIRange__: specifies the PLL2 input frequency range
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg RCC_PLL2_VCIRANGE_0: Range frequency is between 1 and 2 MHz
 | |
|   *            @arg RCC_PLL2_VCIRANGE_1: Range frequency is between 2 and 4 MHz
 | |
|   *            @arg RCC_PLL2_VCIRANGE_2: Range frequency is between 4 and 8 MHz
 | |
|   *            @arg RCC_PLL2_VCIRANGE_3: Range frequency is between 8 and 16 MHz
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL2_VCIRANGE(__PLL2VCIRange__) \
 | |
|   MODIFY_REG(RCC->PLL2CFGR, RCC_PLL2CFGR_PLL2RGE, (__PLL2VCIRange__))
 | |
| 
 | |
| /** @brief  Macro to select the PLL2 reference frequency range.
 | |
|   * @param  __RCC_PLL2VCORange__: specifies the PLL2 output frequency range
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg RCC_PLL2_VCORANGE_WIDE: Range frequency is between 192 and 836 MHz
 | |
|   *            @arg RCC_PLL2_VCORANGE_MEDIUM: Range frequency is between 150 and 420 MHz
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL2_VCORANGE(__RCC_PLL2VCORange__) \
 | |
|   MODIFY_REG(RCC->PLL2CFGR, RCC_PLL2CFGR_PLL2VCOSEL, (__RCC_PLL2VCORange__))
 | |
| 
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| /** @brief  Macro to configure the PLL3 clock source.
 | |
|   * @note   This function must be used only when all PLL3 is disabled.
 | |
|   * @param  __PLL3SOURCE__: specifies the PLL3 entry clock source.
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg RCC_PLL3_SOURCE_NONE: No oscillator clock selected as PLL3 clock entry
 | |
|   *            @arg RCC_PLL3_SOURCE_CSI: CSI oscillator clock selected as PLL3 clock entry
 | |
|   *            @arg RCC_PLL3_SOURCE_HSI: HSI oscillator clock selected as PLL3 clock entry
 | |
|   *            @arg RCC_PLL3_SOURCE_HSE: HSE oscillator clock selected as PLL3 clock entry
 | |
|   *
 | |
|   */
 | |
| #define __HAL_RCC_PLL3_PLLSOURCE_CONFIG(__PLL3SOURCE__) MODIFY_REG(RCC->PLL3CFGR, RCC_PLL3CFGR_PLL3SRC, \
 | |
|                                                                    (__PLL3SOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the oscillator used as PLL3 clock source.
 | |
|   * @retval The oscillator used as PLL3 clock source. The returned value can be one
 | |
|   *         of the following:
 | |
|   *              - RCC_PLL3_SOURCE_NONE: No oscillator is used as PLL3 clock source.
 | |
|   *              - RCC_PLL3_SOURCE_CSI: CSI oscillator is used as PLL3 clock source.
 | |
|   *              - RCC_PLL3_SOURCE_HSI: HSI oscillator is used as PLL3 clock source.
 | |
|   *              - RCC_PLL3_SOURCE_HSE: HSE oscillator is used as PLL3 clock source.
 | |
|   */
 | |
| #define __HAL_RCC_GET_PLL3_OSCSOURCE() ((uint32_t)(RCC->PLL3CFGR & RCC_PLL3CFGR_PLL3SRC))
 | |
| 
 | |
| /**
 | |
|   * @brief  Macro to configures the PLL3  source, multiplication and division factors.
 | |
|   * @note   This function must be used only when PLL3 is disabled.
 | |
|   *
 | |
|   * @param  __PLL3SOURCE__: specifies the PLL3 entry clock source.
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_PLL3_SOURCE_NONE  No clock selected as PLL3 clock entry
 | |
|   *            @arg @ref RCC_PLL3_SOURCE_CSI  CSI oscillator clock selected as PLL3 clock entry
 | |
|   *            @arg @ref RCC_PLL3_SOURCE_HSI  HSI oscillator clock selected as PLL3 clock entry
 | |
|   *            @arg @ref RCC_PLL3_SOURCE_HSE  HSE oscillator clock selected as PLL3 clock entry
 | |
|   *
 | |
|   * @param  __PLL3M__ specifies the division factor of PLL3 input clock.
 | |
|   *         This parameter must be a number between Min_Data = 1 and Max_Data = 63.
 | |
|   *
 | |
|   * @param  __PLL3N__: specifies the multiplication factor for PLL3 VCO output clock
 | |
|   *          This parameter must be a number between 4 and 512.
 | |
|   * @note   You have to set the PLL3N parameter correctly to ensure that the VCO
 | |
|   *         output frequency is between 150 and 420 MHz (when in medium VCO range)
 | |
|   *         or between 192 and 836 MHZ (when in wide VCO range)
 | |
|   *
 | |
|   * @param  __PLL3P__: specifies the division factor for peripheral kernel clocks
 | |
|   *          This parameter must be a number between 1 and 128
 | |
|   *
 | |
|   * @param  __PLL3Q__: specifies the division factor for peripheral kernel clocks
 | |
|   *          This parameter must be a number between 1 and 128
 | |
|   *
 | |
|   * @param  __PLL3R__: specifies the division factor for peripheral kernel clocks
 | |
|   *          This parameter must be a number between 1 and 128
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL3_CONFIG(__PLL3SOURCE__, __PLL3M__, __PLL3N__, __PLL3P__, __PLL3Q__, __PLL3R__) \
 | |
|   do{\
 | |
|     MODIFY_REG(RCC->PLL3CFGR, (RCC_PLL3CFGR_PLL3SRC | RCC_PLL3CFGR_PLL3M), \
 | |
|                ((__PLL3SOURCE__) << RCC_PLL3CFGR_PLL3SRC_Pos) | ((__PLL3M__) << RCC_PLL3CFGR_PLL3M_Pos)); \
 | |
|     WRITE_REG(RCC->PLL3DIVR , ( (((__PLL3N__) - 1U) & RCC_PLL3DIVR_PLL3N)   | \
 | |
|                                 ((((__PLL3P__) - 1U) << RCC_PLL3DIVR_PLL3P_Pos) & RCC_PLL3DIVR_PLL3P)  | \
 | |
|                                 ((((__PLL3Q__) - 1U) << RCC_PLL3DIVR_PLL3Q_Pos) & RCC_PLL3DIVR_PLL3Q)  | \
 | |
|                                 ((((__PLL3R__) - 1U) << RCC_PLL3DIVR_PLL3R_Pos) & RCC_PLL3DIVR_PLL3R))); \
 | |
|   } while(0)
 | |
| 
 | |
| /**
 | |
|   * @brief  Macro to configure the PLL3 clock multiplication factor N.
 | |
|   *
 | |
|   * @note   This function must be used only when the PLL3 is disabled.
 | |
|   * @note   PLL3 clock source is independent from the main PLL and is configured through
 | |
|   *         __HAL_RCC_PLL3_CONFIG() macro.
 | |
|   *
 | |
|   * @param  __PLL3N__ specifies the multiplication factor for PLL3 VCO output clock.
 | |
|   *          This parameter must be a number between 8 and 86.
 | |
|   * @note   You have to set the PLL3N parameter correctly to ensure that the VCO
 | |
|   *         output frequency is between 192 and 836 MHz (Wide range) or 150 and 420 Mhz (Medium range).
 | |
|   *         PLL3 clock frequency = f(PLL3) multiplied by PLL3N
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL3_MULN_CONFIG(__PLL3N__) \
 | |
|   MODIFY_REG(RCC->PLL3DIVR, RCC_PLL3DIVR_N3, ((__PLL3N__) - 1U) << RCC_PLL3DIVR_N3_Pos)
 | |
| 
 | |
| /** @brief  Macro to configure the PLL3 input clock division factor M.
 | |
|   *
 | |
|   * @note   This function must be used only when the PLL3 is disabled.
 | |
|   * @note   PLL3 clock source is independent from the main PLL and is configured through
 | |
|   *         __HAL_RCC_PLL3_CONFIG() macro.
 | |
|   *
 | |
|   * @param  __PLL3M__ specifies the division factor for PLL3 clock.
 | |
|   *         This parameter must be a number between Min_Data = 1 and Max_Data = 63.
 | |
|   *         In order to save power when PLL3 is not used, the value of PLL3M must be set to 0.
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL3_DIVM_CONFIG(__PLL3M__) \
 | |
|   MODIFY_REG(RCC->PLL3CFGR, RCC_PLL3CFGR_DIVM3,  (__PLL3M__) << RCC_PLL3CFGR_DIVM3_Pos)
 | |
| 
 | |
| /** @brief  Macro to configure the PLL3 clock division factor P.
 | |
|   *
 | |
|   * @note   This function must be used only when the PLL3 is disabled.
 | |
|   * @note   PLL3 clock source is independent from the main PLL and is configured through
 | |
|   *         __HAL_RCC_PLL3_CONFIG() macro.
 | |
|   *
 | |
|   * @param  __PLL3P__ specifies the division factor for PLL3 output P clock.
 | |
|   *         This parameter must be a number in the range (1 to 128).
 | |
|   *         Use to set PLL3 output P clock frequency = f(PLL3) / PLL3P
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL3_DIVP_CONFIG(__PLL3P__) \
 | |
|   MODIFY_REG(RCC->PLL3DIVR, RCC_PLL3DIVR_P3, ((__PLL3P__) - 1U) << RCC_PLL3DIVR_P3_Pos)
 | |
| 
 | |
| /** @brief  Macro to configure the PLL3 clock division factor Q.
 | |
|   *
 | |
|   * @note   This function must be used only when the PLL3 is disabled.
 | |
|   * @note   PLL3 clock source is independent from the main PLL and is configured through
 | |
|   *         __HAL_RCC_PLL3_CONFIG() macro.
 | |
|   *
 | |
|   * @param  __PLL3Q__ specifies the division factor for PLL3 output Q clock.
 | |
|   *         This parameter must be a number in the range (1 to 128).
 | |
|   *         Use to set PLL3 output Q clock frequency = f(PLL3) / PLL3Q
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL3_DIVQ_CONFIG(__PLL3Q__) \
 | |
|   MODIFY_REG(RCC->PLL3DIVR, RCC_PLL3DIVR_Q3, ((__PLL3Q__) - 1U) << RCC_PLL3DIVR_Q3_Pos)
 | |
| 
 | |
| /** @brief  Macro to configure the PLL3 clock division factor R.
 | |
|   *
 | |
|   * @note   This function must be used only when the PLL3 is disabled.
 | |
|   * @note   PLL3 clock source is independent from the main PLL and is configured through
 | |
|   *         __HAL_RCC_PLL3_CONFIG() macro.
 | |
|   *
 | |
|   * @param  __PLL3R__ specifies the division factor for PLL3 output R clock.
 | |
|   *         This parameter must be a number in the range (1 to 128).
 | |
|   *         Use to set PLL3 output R clock frequency = f(PLL3) / PLL3R
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL3_DIVR_CONFIG(__PLL3R__) \
 | |
|   MODIFY_REG(RCC->PLL3DIVR, RCC_PLL3DIVR_R3, ((__PLL3R__) - 1U) << RCC_PLL3DIVR_R3_Pos)
 | |
| 
 | |
| /**
 | |
|   * @brief  Macro to configures  PLL3 clock Fractional Part of The Multiplication Factor
 | |
|   *
 | |
|   * @note   These bits can be written at any time, allowing dynamic fine-tuning of the PLL3 VCO
 | |
|   *
 | |
|   * @param  __PLL3FRACN__: specifies Fractional Part Of The Multiplication Factor for PLL3 VCO
 | |
|   *                            It should be a value between 0 and 8191
 | |
|   * @note   Warning: the software has to set correctly these bits to insure that the VCO
 | |
|   *                  output frequency is between its valid frequency range, which is:
 | |
|   *                  192 to 836 MHz if PLL3VCOSEL = 0
 | |
|   *                  150 to 420 MHz if PLL3VCOSEL = 1.
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define  __HAL_RCC_PLL3_FRACN_CONFIG(__PLL3FRACN__) MODIFY_REG(RCC->PLL3FRACR, RCC_PLL3FRACR_PLL3FRACN, \
 | |
|                                                                (uint32_t)(__PLL3FRACN__) << RCC_PLL3FRACR_PLL3FRACN_Pos)
 | |
| 
 | |
| /** @brief  Macro to select  the PLL3  reference frequency range.
 | |
|   * @param  __PLL3VCIRange__: specifies the PLL3 input frequency range
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg RCC_PLL3_VCIRANGE_0: Range frequency is between 1 and 2 MHz
 | |
|   *            @arg RCC_PLL3_VCIRANGE_1: Range frequency is between 2 and 4 MHz
 | |
|   *            @arg RCC_PLL3_VCIRANGE_2: Range frequency is between 4 and 8 MHz
 | |
|   *            @arg RCC_PLL3_VCIRANGE_3: Range frequency is between 8 and 16 MHz
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL3_VCIRANGE(__PLL3VCIRange__) \
 | |
|   MODIFY_REG(RCC->PLL3CFGR, RCC_PLL3CFGR_PLL3RGE, (__PLL3VCIRange__))
 | |
| 
 | |
| /** @brief  Macro to select the PLL3 reference frequency range.
 | |
|   * @param  __RCC_PLL3VCORange__: specifies the PLL3 input frequency range
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg RCC_PLL3VCOWIDE: Range frequency is between 192 and 836 MHz
 | |
|   *            @arg RCC_PLL3VCOMEDIUM: Range frequency is between 150 and 420 MHz
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL3_VCORANGE(__RCC_PLL3VCORange__) \
 | |
|   MODIFY_REG(RCC->PLL3CFGR, RCC_PLL3CFGR_PLL3VCOSEL, (__RCC_PLL3VCORange__))
 | |
| 
 | |
| /**
 | |
|   * @brief  Macros to enable or disable the PLL3.
 | |
|   * @note   The PLL3 is disabled by hardware when entering STOP and STANDBY modes.
 | |
|   * @retval None
 | |
|   */
 | |
| 
 | |
| /** @brief  Macros to enable or disable the main PLL3.
 | |
|   * @note   After enabling  PLL3, the application software should wait on
 | |
|   *         PLL3RDY flag to be set indicating that PLL3 clock is stable and can
 | |
|   *         be used as kernel clock source.
 | |
|   * @note   PLL3 is disabled by hardware when entering STOP and STANDBY modes.
 | |
|   */
 | |
| #define __HAL_RCC_PLL3_ENABLE()  SET_BIT(RCC->CR, RCC_CR_PLL3ON)
 | |
| #define __HAL_RCC_PLL3_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_PLL3ON)
 | |
| 
 | |
| /**
 | |
|   * @brief  Enables or disables Fractional Part Of The Multiplication Factor of PLL3 VCO
 | |
|   * @note   Enabling/disabling Fractional Part can be done at any time without the need to stop the PLL3
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL3_FRACN_ENABLE()   SET_BIT(RCC->PLL3CFGR, RCC_PLL3CFGR_PLL3FRACEN)
 | |
| #define __HAL_RCC_PLL3_FRACN_DISABLE()  CLEAR_BIT(RCC->PLL3CFGR, RCC_PLL3CFGR_PLL3FRACEN)
 | |
| 
 | |
| /**
 | |
|   * @brief  Enables or disables each clock output (PLL3_P_CLK, PLL3_Q_CLK, PLL3_R_CLK)
 | |
|   * @note   Enabling/disabling  Those Clocks can be any time  without the need to stop the PLL3,
 | |
|   *         This is mainly used to save Power.
 | |
|   * @param  __PLL3_CLOCKOUT__: specifies the PLL3 clock to be outputted
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg RCC_PLL3_DIVP: This clock is used to generate an accurate clock to achieve
 | |
|   *                                high-quality audio performance on SAI and SPI/I2S interfaces.
 | |
|   *            @arg RCC_PLL3_DIVQ: This clock is used to generate kernel clock for SPI, LPUART, UART/USART
 | |
|   *                                and USB peripherals.
 | |
|   *            @arg RCC_PLL3_DIVR: This clock is used to generate kernel clock for I2C, I3C and LPTIM peripherals.
 | |
|   *
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_PLL3_CLKOUT_ENABLE(__PLL3_CLOCKOUT__)  SET_BIT(RCC->PLL3CFGR, (__PLL3_CLOCKOUT__))
 | |
| #define __HAL_RCC_PLL3_CLKOUT_DISABLE(__PLL3_CLOCKOUT__) CLEAR_BIT(RCC->PLL3CFGR, (__PLL3_CLOCKOUT__))
 | |
| 
 | |
| /**
 | |
|   * @brief  Macro to get clock output enable status (PLL3_SAI2).
 | |
|   * @param  __PLL3_CLOCKOUT__ specifies the PLL3 clock to be output.
 | |
|   *          This parameter can be one or a combination of the following values:
 | |
|   *            @arg RCC_PLL3_DIVP: This clock is used to generate an accurate clock to achieve
 | |
|   *                                high-quality audio performance on SAI and SPI/I2S interfaces.
 | |
|   *            @arg RCC_PLL3_DIVQ: This clock is used to generate kernel clock for SPI, LPUART, UART/USART
 | |
|   *                                and USB peripherals.
 | |
|   *            @arg RCC_PLL3_DIVR: This clock is used to generate kernel clock for I2C, I3C and LPTIM peripherals.
 | |
|   *
 | |
|   * @retval SET / RESET
 | |
|   */
 | |
| #define __HAL_RCC_GET_PLL3_CLKOUT_CONFIG(__PLL3_CLOCKOUT__)  READ_BIT(RCC->PLL3CFGR, (__PLL3_CLOCKOUT__))
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
| /** @brief  Macro to configure the ADC and DAC kernel clock source.
 | |
|   * @param  __ADCDAC_CLKSOURCE__ specifies the ADC and DAC kernel clock source.
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_ADCDACCLKSOURCE_HCLK   AHB bus clock selected as ADC and DAC kernel clock
 | |
|   *            @arg @ref RCC_ADCDACCLKSOURCE_SYSCLK System clock selected as ADC and DAC kernel clock
 | |
|   *            @arg @ref RCC_ADCDACCLKSOURCE_PLL2R  PLL2R clock selected as ADC and DAC kernel clock
 | |
|   *            @arg @ref RCC_ADCDACCLKSOURCE_HSE    HSE clock selected as ADC and DAC kernel clock
 | |
|   *            @arg @ref RCC_ADCDACCLKSOURCE_HSI    HSI clock selected as ADC and DAC kernel clock
 | |
|   *            @arg @ref RCC_ADCDACCLKSOURCE_CSI    CSI clock selected as ADC and DAC kernel clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_ADCDAC_CONFIG(__ADCDAC_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR5, RCC_CCIPR5_ADCDACSEL, (uint32_t)(__ADCDAC_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the ADC and DAC kernel clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_ADCDACCLKSOURCE_HCLK   AHB Bus clock used as ADC and DAC kernel clock
 | |
|   *            @arg @ref RCC_ADCDACCLKSOURCE_SYSCLK System clock used as ADC and DAC kernel clock
 | |
|   *            @arg @ref RCC_ADCDACCLKSOURCE_PLL2R  PLL2R clock used as ADC and DAC kernel clock
 | |
|   *            @arg @ref RCC_ADCDACCLKSOURCE_HSE    HSE oscillator used as ADC and DAC kernel clock
 | |
|   *            @arg @ref RCC_ADCDACCLKSOURCE_HSI    HSI oscillator used as ADC and DAC kernel clock
 | |
|   *            @arg @ref RCC_ADCDACCLKSOURCE_CSI    CSI oscillator used as ADC and DAC kernel clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_ADCDAC_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR5, RCC_CCIPR5_ADCDACSEL)))
 | |
| 
 | |
| /** @brief  Macro to configure the DAC kernel clock source in low-power mode.
 | |
|   * @param  __DACLPCLKSOURCE__ specifies the DAC kernel clock source in low-power mode.
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_DACLPCLKSOURCE_LSE LSE oscillator selected as DAC kernel clock in low-power mode
 | |
|   *            @arg @ref RCC_DACLPCLKSOURCE_LSI LSI oscillator selected as DAC kernel clock in low-power mode
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_DAC_LP_CONFIG(__DACLPCLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR5, RCC_CCIPR5_DACSEL, (uint32_t)(__DACLPCLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the DAC kernel clock source in low-power mode.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_DACLPCLKSOURCE_LSE LSE oscillator used as DAC kernel clock in low-power mode
 | |
|   *            @arg @ref RCC_DACLPCLKSOURCE_LSI LSI oscillator used as DAC kernel clock in low-power mode
 | |
|   */
 | |
| #define __HAL_RCC_GET_DAC_LP_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR5, RCC_CCIPR5_DACSEL)))
 | |
| 
 | |
| /** @brief  Macro to configure the FDCAN kernel clock (FDCANCLK).
 | |
|   *
 | |
|   * @param  __FDCAN_CLKSOURCE__ specifies the FDCAN kernel clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_FDCANCLKSOURCE_HSE  HSE oscillator selected as FDCAN kernel clock
 | |
|   *            @arg @ref RCC_FDCANCLKSOURCE_PLL1Q  PLL1Q Clock selected as FDCAN kernel clock
 | |
|   *            @arg @ref RCC_FDCANCLKSOURCE_PLL2Q  PLL2Q Clock selected as FDCAN kernel clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_FDCAN_CONFIG(__FDCAN_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR5, RCC_CCIPR5_FDCANSEL, (uint32_t)(__FDCAN_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the FDCAN clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_FDCANCLKSOURCE_HSE  HSE oscillator selected as FDCAN kernel clock
 | |
|   *            @arg @ref RCC_FDCANCLKSOURCE_PLL1Q  PLL1Q Clock selected as FDCAN kernel clock
 | |
|   *            @arg @ref RCC_FDCANCLKSOURCE_PLL2Q  PLL2Q Clock selected as FDCAN kernel clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_FDCAN_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR5, RCC_CCIPR5_FDCANSEL)))
 | |
| 
 | |
| /** @brief  Macro to configure the LPTIM1 clock (LPTIM1CLK).
 | |
|   *
 | |
|   * @param  __LPTIM1_CLKSOURCE__ specifies the LPTIM1 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_LPTIM1CLKSOURCE_PCLK3  PCLK3 selected as LPTIM1 clock
 | |
|   *            @arg @ref RCC_LPTIM1CLKSOURCE_PLL2P  PLL2P selected as LPTIM1 clock
 | |
|   *            @arg @ref RCC_LPTIM1CLKSOURCE_PLL3R  PLL3R selected as LPTIM1 clock (*)
 | |
|   *            @arg @ref RCC_LPTIM1CLKSOURCE_LSE    LSE selected as LPTIM1 clock
 | |
|   *            @arg @ref RCC_LPTIM1CLKSOURCE_LSI    LSI selected as LPTIM1 clock
 | |
|   *            @arg @ref RCC_LPTIM1CLKSOURCE_CLKP   CLKP selected as LPTIM1 clock
 | |
|   * @retval None
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_LPTIM1_CONFIG(__LPTIM1_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_LPTIM1SEL, (uint32_t)(__LPTIM1_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the LPTIM1 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_LPTIM1CLKSOURCE_PCLK3  PCLK3 selected as LPTIM1 clock
 | |
|   *            @arg @ref RCC_LPTIM1CLKSOURCE_PLL2P  PLL2P selected as LPTIM1 clock
 | |
|   *            @arg @ref RCC_LPTIM1CLKSOURCE_PLL3R  PLL3R selected as LPTIM1 clock (*)
 | |
|   *            @arg @ref RCC_LPTIM1CLKSOURCE_LSE    LSE selected as LPTIM1 clock
 | |
|   *            @arg @ref RCC_LPTIM1CLKSOURCE_LSI    LSI selected as LPTIM1 clock
 | |
|   *            @arg @ref RCC_LPTIM1CLKSOURCE_CLKP   CLKP selected as LPTIM1 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_GET_LPTIM1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR2, RCC_CCIPR2_LPTIM1SEL)))
 | |
| 
 | |
| /** @brief  Macro to configure the LPTIM2 clock (LPTIM2CLK).
 | |
|   *
 | |
|   * @param  __LPTIM2_CLKSOURCE__ specifies the LPTIM2 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_LPTIM2CLKSOURCE_PCLK1  PCLK1 selected as LPTIM2 clock
 | |
|   *            @arg @ref RCC_LPTIM2CLKSOURCE_PLL2P  PLL2P selected as LPTIM2 clock
 | |
|   *            @arg @ref RCC_LPTIM2CLKSOURCE_PLL3R  PLL3R selected as LPTIM2 clock (*)
 | |
|   *            @arg @ref RCC_LPTIM2CLKSOURCE_LSE    LSE selected as LPTIM2 clock
 | |
|   *            @arg @ref RCC_LPTIM2CLKSOURCE_LSI    LSI selected as LPTIM2 clock
 | |
|   *            @arg @ref RCC_LPTIM2CLKSOURCE_CLKP   CLKP selected as LPTIM2 clock
 | |
|   * @retval None
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_LPTIM2_CONFIG(__LPTIM2_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_LPTIM2SEL, (uint32_t)(__LPTIM2_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the LPTIM2 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_LPTIM2CLKSOURCE_PCLK1  PCLK1 selected as LPTIM2 clock
 | |
|   *            @arg @ref RCC_LPTIM2CLKSOURCE_PLL2P  PLL2P selected as LPTIM2 clock
 | |
|   *            @arg @ref RCC_LPTIM2CLKSOURCE_PLL3R  PLL3R selected as LPTIM2 clock (*)
 | |
|   *            @arg @ref RCC_LPTIM2CLKSOURCE_LSE    LSE selected as LPTIM2 clock
 | |
|   *            @arg @ref RCC_LPTIM2CLKSOURCE_LSI    LSI selected as LPTIM2 clock
 | |
|   *            @arg @ref RCC_LPTIM2CLKSOURCE_CLKP   CLKP selected as LPTIM2 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_GET_LPTIM2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR2, RCC_CCIPR2_LPTIM2SEL)))
 | |
| 
 | |
| #if defined(LPTIM3)
 | |
| /** @brief  Macro to configure the LPTIM3 clock (LPTIM3CLK).
 | |
|   *
 | |
|   * @param  __LPTIM3_CLKSOURCE__ specifies the LPTIM3 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_LPTIM3CLKSOURCE_PCLK3  PCLK3 selected as LPTIM3 clock
 | |
|   *            @arg @ref RCC_LPTIM3CLKSOURCE_PLL2P  PLL2P selected as LPTIM3 clock
 | |
|   *            @arg @ref RCC_LPTIM3CLKSOURCE_PLL3R  PLL3R selected as LPTIM3 clock
 | |
|   *            @arg @ref RCC_LPTIM3CLKSOURCE_LSE    LSE selected as LPTIM3 clock
 | |
|   *            @arg @ref RCC_LPTIM3CLKSOURCE_LSI    LSI selected as LPTIM3 clock
 | |
|   *            @arg @ref RCC_LPTIM3CLKSOURCE_CLKP   CLKP selected as LPTIM3 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_LPTIM3_CONFIG(__LPTIM3_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_LPTIM3SEL, (uint32_t)(__LPTIM3_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the LPTIM3 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_LPTIM3CLKSOURCE_PCLK3  PCLK3 selected as LPTIM3 clock
 | |
|   *            @arg @ref RCC_LPTIM3CLKSOURCE_PLL2P  PLL2P selected as LPTIM3 clock
 | |
|   *            @arg @ref RCC_LPTIM3CLKSOURCE_PLL3R  PLL3R selected as LPTIM3 clock
 | |
|   *            @arg @ref RCC_LPTIM3CLKSOURCE_LSE    LSE selected as LPTIM3 clock
 | |
|   *            @arg @ref RCC_LPTIM3CLKSOURCE_LSI    LSI selected as LPTIM3 clock
 | |
|   *            @arg @ref RCC_LPTIM3CLKSOURCE_CLKP   CLKP selected as LPTIM3 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_LPTIM3_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR2, RCC_CCIPR2_LPTIM3SEL)))
 | |
| #endif /* LPTIM3 */
 | |
| 
 | |
| #if defined(LPTIM4)
 | |
| /** @brief  Macro to configure the LPTIM4 clock (LPTIM4CLK).
 | |
|   *
 | |
|   * @param  __LPTIM4_CLKSOURCE__ specifies the LPTIM4 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_LPTIM4CLKSOURCE_PCLK3  PCLK3 selected as LPTIM4 clock
 | |
|   *            @arg @ref RCC_LPTIM4CLKSOURCE_PLL2P  PLL2P selected as LPTIM4 clock
 | |
|   *            @arg @ref RCC_LPTIM4CLKSOURCE_PLL3R  PLL3R selected as LPTIM4 clock
 | |
|   *            @arg @ref RCC_LPTIM4CLKSOURCE_LSE    LSE selected as LPTIM4 clock
 | |
|   *            @arg @ref RCC_LPTIM4CLKSOURCE_LSI    LSI selected as LPTIM4 clock
 | |
|   *            @arg @ref RCC_LPTIM4CLKSOURCE_CLKP   CLKP selected as LPTIM4 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_LPTIM4_CONFIG(__LPTIM4_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_LPTIM4SEL, (uint32_t)(__LPTIM4_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the LPTIM4 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_LPTIM4CLKSOURCE_PCLK3  PCLK3 selected as LPTIM4 clock
 | |
|   *            @arg @ref RCC_LPTIM4CLKSOURCE_PLL2P  PLL2P selected as LPTIM4 clock
 | |
|   *            @arg @ref RCC_LPTIM4CLKSOURCE_PLL3R  PLL3R selected as LPTIM4 clock
 | |
|   *            @arg @ref RCC_LPTIM4CLKSOURCE_LSE    LSE selected as LPTIM4 clock
 | |
|   *            @arg @ref RCC_LPTIM4CLKSOURCE_LSI    LSI selected as LPTIM4 clock
 | |
|   *            @arg @ref RCC_LPTIM4CLKSOURCE_CLKP   CLKP selected as LPTIM4 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_LPTIM4_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR2, RCC_CCIPR2_LPTIM4SEL)))
 | |
| #endif /* LPTIM4 */
 | |
| 
 | |
| #if defined(LPTIM5)
 | |
| /** @brief  Macro to configure the LPTIM5 clock (LPTIM5CLK).
 | |
|   *
 | |
|   * @param  __LPTIM5_CLKSOURCE__ specifies the LPTIM5 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_LPTIM5CLKSOURCE_PCLK3  PCLK3 selected as LPTIM5 clock
 | |
|   *            @arg @ref RCC_LPTIM5CLKSOURCE_PLL2P  PLL2P selected as LPTIM5 clock
 | |
|   *            @arg @ref RCC_LPTIM5CLKSOURCE_PLL3R  PLL3R selected as LPTIM5 clock
 | |
|   *            @arg @ref RCC_LPTIM5CLKSOURCE_LSE    LSE selected as LPTIM5 clock
 | |
|   *            @arg @ref RCC_LPTIM5CLKSOURCE_LSI    LSI selected as LPTIM5 clock
 | |
|   *            @arg @ref RCC_LPTIM5CLKSOURCE_CLKP   CLKP selected as LPTIM5 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_LPTIM5_CONFIG(__LPTIM5_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_LPTIM5SEL, (uint32_t)(__LPTIM5_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the LPTIM5 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_LPTIM5CLKSOURCE_PCLK3  PCLK3 selected as LPTIM5 clock
 | |
|   *            @arg @ref RCC_LPTIM5CLKSOURCE_PLL2P  PLL2P selected as LPTIM5 clock
 | |
|   *            @arg @ref RCC_LPTIM5CLKSOURCE_PLL3R  PLL3R selected as LPTIM5 clock
 | |
|   *            @arg @ref RCC_LPTIM5CLKSOURCE_LSE    LSE selected as LPTIM5 clock
 | |
|   *            @arg @ref RCC_LPTIM5CLKSOURCE_LSI    LSI selected as LPTIM5 clock
 | |
|   *            @arg @ref RCC_LPTIM5CLKSOURCE_CLKP   CLKP selected as LPTIM5 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_LPTIM5_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR2, RCC_CCIPR2_LPTIM5SEL)))
 | |
| #endif /* LPTIM5 */
 | |
| 
 | |
| #if defined(LPTIM6)
 | |
| /** @brief  Macro to configure the LPTIM6 clock (LPTIM6CLK).
 | |
|   *
 | |
|   * @param  __LPTIM6_CLKSOURCE__ specifies the LPTIM6 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_LPTIM6CLKSOURCE_PCLK3  PCLK3 selected as LPTIM6 clock
 | |
|   *            @arg @ref RCC_LPTIM6CLKSOURCE_PLL2P  PLL2P selected as LPTIM6 clock
 | |
|   *            @arg @ref RCC_LPTIM6CLKSOURCE_PLL3R  PLL3R selected as LPTIM6 clock
 | |
|   *            @arg @ref RCC_LPTIM6CLKSOURCE_LSE    LSE selected as LPTIM6 clock
 | |
|   *            @arg @ref RCC_LPTIM6CLKSOURCE_LSI    LSI selected as LPTIM6 clock
 | |
|   *            @arg @ref RCC_LPTIM6CLKSOURCE_CLKP   CLKP selected as LPTIM6 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_LPTIM6_CONFIG(__LPTIM6_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_LPTIM6SEL, (uint32_t)(__LPTIM6_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the LPTIM6 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_LPTIM6CLKSOURCE_PCLK3  PCLK3 selected as LPTIM6 clock
 | |
|   *            @arg @ref RCC_LPTIM6CLKSOURCE_PLL2P  PLL2P selected as LPTIM6 clock
 | |
|   *            @arg @ref RCC_LPTIM6CLKSOURCE_PLL3R  PLL3R selected as LPTIM6 clock
 | |
|   *            @arg @ref RCC_LPTIM6CLKSOURCE_LSE    LSE selected as LPTIM6 clock
 | |
|   *            @arg @ref RCC_LPTIM6CLKSOURCE_LSI    LSI selected as LPTIM6 clock
 | |
|   *            @arg @ref RCC_LPTIM6CLKSOURCE_CLKP   CLKP selected as LPTIM6 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_LPTIM6_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR2, RCC_CCIPR2_LPTIM6SEL)))
 | |
| #endif /* LPTIM6 */
 | |
| 
 | |
| /** @brief  macro to configure the SPI1 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SPI1CLKSOURCE_PLL1Q  PLL1Q  selected as SPI1 clock
 | |
|   *            @arg RCC_SPI1CLKSOURCE_PLL2P  PLL2P  selected as SPI1 clock
 | |
|   *            @arg RCC_SPI1CLKSOURCE_PLL3P  PLL3P  selected as SPI1 clock (*)
 | |
|   *            @arg RCC_SPI1CLKSOURCE_PIN    External Clock selected as SPI1 clock
 | |
|   *            @arg RCC_SPI1CLKSOURCE_CLKP   CLKP  selected as SPI1 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_SPI1_CONFIG(__SPI1CLKSource__) \
 | |
|   MODIFY_REG(RCC->CCIPR3, RCC_CCIPR3_SPI1SEL, (uint32_t)(__SPI1CLKSource__))
 | |
| 
 | |
| /** @brief  macro to get the SPI1 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SPI1CLKSOURCE_PLL1Q  PLL1Q  selected as SPI1 clock
 | |
|   *            @arg RCC_SPI1CLKSOURCE_PLL2P  PLL2P  selected as SPI1 clock
 | |
|   *            @arg RCC_SPI1CLKSOURCE_PLL3P  PLL3P  selected as SPI1 clock (*)
 | |
|   *            @arg RCC_SPI1CLKSOURCE_PIN    External Clock selected as SPI1 clock
 | |
|   *            @arg RCC_SPI1CLKSOURCE_CLKP   CLKP  selected as SPI1 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_GET_SPI1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR3, RCC_CCIPR3_SPI1SEL)))
 | |
| 
 | |
| /** @brief  macro to configure the SPI2 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SPI2CLKSOURCE_PLL1Q  PLL1Q  selected as SPI2 clock
 | |
|   *            @arg RCC_SPI2CLKSOURCE_PLL2P  PLL2P  selected as SPI2 clock
 | |
|   *            @arg RCC_SPI2CLKSOURCE_PLL3P  PLL3P  selected as SPI2 clock (*)
 | |
|   *            @arg RCC_SPI2CLKSOURCE_PIN    External Clock selected as SPI2 clock
 | |
|   *            @arg RCC_SPI2CLKSOURCE_CLKP   CLKP  selected as SPI2 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_SPI2_CONFIG(__SPI2CLKSource__) \
 | |
|   MODIFY_REG(RCC->CCIPR3, RCC_CCIPR3_SPI2SEL, (uint32_t)(__SPI2CLKSource__))
 | |
| 
 | |
| /** @brief  macro to get the SPI2 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SPI2CLKSOURCE_PLL1Q  PLL1Q  selected as SPI2 clock
 | |
|   *            @arg RCC_SPI2CLKSOURCE_PLL2P  PLL2P  selected as SPI2 clock
 | |
|   *            @arg RCC_SPI2CLKSOURCE_PLL3P  PLL3P  selected as SPI2 clock (*)
 | |
|   *            @arg RCC_SPI2CLKSOURCE_PIN    External Clock selected as SPI2 clock
 | |
|   *            @arg RCC_SPI2CLKSOURCE_CLKP   CLKP  selected as SPI2 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_GET_SPI2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR3, RCC_CCIPR3_SPI2SEL)))
 | |
| 
 | |
| /** @brief  macro to configure the SPI3 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SPI3CLKSOURCE_PLL1Q  PLL1Q used as SPI3 clock
 | |
|   *            @arg RCC_SPI3CLKSOURCE_PLL2P  PLL2P used as SPI3 clock
 | |
|   *            @arg RCC_SPI3CLKSOURCE_PLL3P  PLL3P used as SPI3 clock (*)
 | |
|   *            @arg RCC_SPI3CLKSOURCE_PIN    External Clock used as SPI3 clock
 | |
|   *            @arg RCC_SPI3CLKSOURCE_CLKP  CLKP used as SPI3 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_SPI3_CONFIG(__SPI3CLKSource__) \
 | |
|   MODIFY_REG(RCC->CCIPR3, RCC_CCIPR3_SPI3SEL, (uint32_t)(__SPI3CLKSource__))
 | |
| 
 | |
| /** @brief  macro to get the SPI3 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SPI3CLKSOURCE_PLL1Q  PLL1Q used as SPI3 clock
 | |
|   *            @arg RCC_SPI3CLKSOURCE_PLL2P  PLL2P used as SPI3 clock
 | |
|   *            @arg RCC_SPI3CLKSOURCE_PLL3P  PLL3P used as SPI3 clock (*)
 | |
|   *            @arg RCC_SPI3CLKSOURCE_PIN    External Clock used as SPI3 clock
 | |
|   *            @arg RCC_SPI3CLKSOURCE_CLKP  CLKP used as SPI3 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_GET_SPI3_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR3, RCC_CCIPR3_SPI3SEL)))
 | |
| 
 | |
| #if defined(SPI4)
 | |
| /** @brief  macro to configure the SPI4 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SPI4CLKSOURCE_PCLK2  PCLK2 used as SPI4 clock
 | |
|   *            @arg RCC_SPI4CLKSOURCE_PLL2Q  PLL2Q used as SPI4 clock
 | |
|   *            @arg RCC_SPI4CLKSOURCE_PLL3Q  PLL3Q used as SPI4 clock
 | |
|   *            @arg RCC_SPI4CLKSOURCE_HSI  HSI used as SPI4 clock
 | |
|   *            @arg RCC_SPI4CLKSOURCE_CSI  CSI Clock used as SPI4 clock
 | |
|   *            @arg RCC_SPI4CLKSOURCE_HSE  HSE Clock used as SPI4 clock
 | |
|   */
 | |
| #define __HAL_RCC_SPI4_CONFIG(__SPI4CLKSource__) \
 | |
|   MODIFY_REG(RCC->CCIPR3, RCC_CCIPR3_SPI4SEL, (uint32_t)(__SPI4CLKSource__))
 | |
| 
 | |
| /** @brief  macro to get the SPI4 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SPI4CLKSOURCE_PCLK2  PCLK2 used as SPI4 clock
 | |
|   *            @arg RCC_SPI4CLKSOURCE_PLL2Q  PLL2Q used as SPI4 clock
 | |
|   *            @arg RCC_SPI4CLKSOURCE_PLL3Q  PLL3Q used as SPI4 clock
 | |
|   *            @arg RCC_SPI4CLKSOURCE_HSI  HSI used as SPI4 clock
 | |
|   *            @arg RCC_SPI4CLKSOURCE_CSI  CSI used as SPI4 clock
 | |
|   *            @arg RCC_SPI4CLKSOURCE_HSE  HSE used as SPI4 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_SPI4_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR3, RCC_CCIPR3_SPI4SEL)))
 | |
| #endif /* SPI4 */
 | |
| 
 | |
| #if defined(SPI5)
 | |
| /** @brief  macro to configure the SPI5 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SPI5CLKSOURCE_PCLK3  PCLK3 used as SPI5 clock
 | |
|   *            @arg RCC_SPI5CLKSOURCE_PLL2Q  PLL2Q used as SPI5 clock
 | |
|   *            @arg RCC_SPI5CLKSOURCE_PLL3Q  PLL3Q used as SPI5 clock
 | |
|   *            @arg RCC_SPI5CLKSOURCE_HSI  HSI used as SPI5 clock
 | |
|   *            @arg RCC_SPI5CLKSOURCE_CSI  CSI Clock used as SPI5 clock
 | |
|   *            @arg RCC_SPI5CLKSOURCE_HSE  HSE Clock used as SPI5 clock
 | |
|   */
 | |
| #define __HAL_RCC_SPI5_CONFIG(__SPI5CLKSource__) \
 | |
|   MODIFY_REG(RCC->CCIPR3, RCC_CCIPR3_SPI5SEL, (uint32_t)(__SPI5CLKSource__))
 | |
| 
 | |
| /** @brief  macro to get the SPI5 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SPI5CLKSOURCE_PCLK3  PCLK3 used as SPI5 clock
 | |
|   *            @arg RCC_SPI5CLKSOURCE_PLL2Q  PLL2Q used as SPI5 clock
 | |
|   *            @arg RCC_SPI5CLKSOURCE_PLL3Q  PLL3Q used as SPI5 clock
 | |
|   *            @arg RCC_SPI5CLKSOURCE_HSI  HSI used as SPI5 clock
 | |
|   *            @arg RCC_SPI5CLKSOURCE_CSI  CSI used as SPI5 clock
 | |
|   *            @arg RCC_SPI5CLKSOURCE_HSE  HSE used as SPI5 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_SPI5_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR3, RCC_CCIPR3_SPI5SEL)))
 | |
| #endif /* SPI5 */
 | |
| 
 | |
| #if defined(SPI6)
 | |
| /** @brief  macro to configure the SPI6 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SPI6CLKSOURCE_PCLK2  PCLK2 used as SPI6 clock
 | |
|   *            @arg RCC_SPI6CLKSOURCE_PLL2Q  PLL2Q used as SPI6 clock
 | |
|   *            @arg RCC_SPI6CLKSOURCE_PLL3Q  PLL3Q used as SPI6 clock
 | |
|   *            @arg RCC_SPI6CLKSOURCE_HSI  HSI used as SPI6 clock
 | |
|   *            @arg RCC_SPI6CLKSOURCE_CSI  CSI used as SPI6 clock
 | |
|   *            @arg RCC_SPI6CLKSOURCE_HSE  HSE used as SPI6 clock
 | |
|   */
 | |
| #define __HAL_RCC_SPI6_CONFIG(__SPI6CLKSource__) \
 | |
|   MODIFY_REG(RCC->CCIPR3, RCC_CCIPR3_SPI6SEL, (uint32_t)(__SPI6CLKSource__))
 | |
| 
 | |
| /** @brief  macro to get the SPI6 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SPI6CLKSOURCE_PCLK2  PCLK2 used as SPI6 clock
 | |
|   *            @arg RCC_SPI6CLKSOURCE_PLL2Q  PLL2Q used as SPI6 clock
 | |
|   *            @arg RCC_SPI6CLKSOURCE_PLL3Q  PLL3Q used as SPI6 clock
 | |
|   *            @arg RCC_SPI6CLKSOURCE_HSI  HSI used as SPI6 clock
 | |
|   *            @arg RCC_SPI6CLKSOURCE_CSI  CSI used as SPI6 clock
 | |
|   *            @arg RCC_SPI6CLKSOURCE_HSE  HSE used as SPI6 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_SPI6_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR3, RCC_CCIPR3_SPI6SEL)))
 | |
| #endif /* SPI6 */
 | |
| 
 | |
| /** @brief  Macro to configure the I2C1 clock (I2C1CLK).
 | |
|   *
 | |
|   * @param  __I2C1_CLKSOURCE__ specifies the I2C1 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_I2C1CLKSOURCE_PCLK1  PCLK1 selected as I2C1 clock
 | |
|   *            @arg @ref RCC_I2C1CLKSOURCE_PLL3R  PLL3R selected as I2C1 clock (*)
 | |
|   *            @arg @ref RCC_I2C1CLKSOURCE_PLL2R  PLL2R selected as I2C1 clock (**)
 | |
|   *            @arg @ref RCC_I2C1CLKSOURCE_HSI  HSI selected as I2C1 clock
 | |
|   *            @arg @ref RCC_I2C1CLKSOURCE_CSI  CSI selected as I2C1 clock
 | |
|   * @retval None
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   *  (**) : For stm32h503xx family line.
 | |
|   */
 | |
| #define __HAL_RCC_I2C1_CONFIG(__I2C1_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR4, RCC_CCIPR4_I2C1SEL, (uint32_t)(__I2C1_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the I2C1 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_I2C1CLKSOURCE_PCLK1  PCLK1 selected as I2C1 clock
 | |
|   *            @arg @ref RCC_I2C1CLKSOURCE_PLL3R  PLL3R selected as I2C1 clock (*)
 | |
|   *            @arg @ref RCC_I2C1CLKSOURCE_PLL2R  PLL2R selected as I2C1 clock (**)
 | |
|   *            @arg @ref RCC_I2C1CLKSOURCE_HSI  HSI selected as I2C1 clock
 | |
|   *            @arg @ref RCC_I2C1CLKSOURCE_CSI  CSI selected as I2C1 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   *  (**) : For stm32h503xx family line.
 | |
|   */
 | |
| #define __HAL_RCC_GET_I2C1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR4, RCC_CCIPR4_I2C1SEL)))
 | |
| 
 | |
| /** @brief  Macro to configure the I2C2 clock (I2C2CLK).
 | |
|   *
 | |
|   * @param  __I2C2_CLKSOURCE__ specifies the I2C2 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_I2C2CLKSOURCE_PCLK1  PCLK1 selected as I2C2 clock
 | |
|   *            @arg @ref RCC_I2C2CLKSOURCE_PLL3R  PLL3R selected as I2C2 clock (*)
 | |
|   *            @arg @ref RCC_I2C2CLKSOURCE_PLL2R  PLL2R selected as I2C2 clock (**)
 | |
|   *            @arg @ref RCC_I2C2CLKSOURCE_HSI  HSI selected as I2C2 clock
 | |
|   *            @arg @ref RCC_I2C2CLKSOURCE_CSI  CSI selected as I2C2 clock
 | |
|   * @retval None
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   *  (**) : For stm32h503xx family line.
 | |
|   */
 | |
| #define __HAL_RCC_I2C2_CONFIG(__I2C2_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR4, RCC_CCIPR4_I2C2SEL, (uint32_t)(__I2C2_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the I2C2 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_I2C2CLKSOURCE_PCLK1  PCLK1 selected as I2C2 clock
 | |
|   *            @arg @ref RCC_I2C2CLKSOURCE_PLL3R  PLL3R selected as I2C2 clock (*)
 | |
|   *            @arg @ref RCC_I2C2CLKSOURCE_PLL2R  PLL2R selected as I2C2 clock (**)
 | |
|   *            @arg @ref RCC_I2C2CLKSOURCE_HSI  HSI selected as I2C2 clock
 | |
|   *            @arg @ref RCC_I2C2CLKSOURCE_CSI  CSI selected as I2C2 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   *  (**) : For stm32h503xx family line.
 | |
|   */
 | |
| #define __HAL_RCC_GET_I2C2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR4, RCC_CCIPR4_I2C2SEL)))
 | |
| 
 | |
| #if defined(I2C3)
 | |
| /** @brief  Macro to configure the I2C3 clock (I2C3CLK).
 | |
|   *
 | |
|   * @param  __I2C3_CLKSOURCE__ specifies the I2C3 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_I2C3CLKSOURCE_PCLK3  PCLK3 selected as I2C3 clock
 | |
|   *            @arg @ref RCC_I2C3CLKSOURCE_PLL3R  PLL3R selected as I2C3 clock
 | |
|   *            @arg @ref RCC_I2C3CLKSOURCE_HSI  HSI selected as I2C3 clock
 | |
|   *            @arg @ref RCC_I2C3CLKSOURCE_CSI  CSI selected as I2C3 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_I2C3_CONFIG(__I2C3_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR4, RCC_CCIPR4_I2C3SEL, (uint32_t)(__I2C3_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the I2C3 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_I2C3CLKSOURCE_PCLK3  PCLK3 selected as I2C3 clock
 | |
|   *            @arg @ref RCC_I2C3CLKSOURCE_PLL3R  PLL3R selected as I2C3 clock
 | |
|   *            @arg @ref RCC_I2C3CLKSOURCE_HSI  HSI selected as I2C3 clock
 | |
|   *            @arg @ref RCC_I2C3CLKSOURCE_CSI  CSI selected as I2C3 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_I2C3_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR4, RCC_CCIPR4_I2C3SEL)))
 | |
| #endif /* I2C3 */
 | |
| 
 | |
| #if defined(I2C4)
 | |
| /** @brief  Macro to configure the I2C4 clock (I2C4CLK).
 | |
|   *
 | |
|   * @param  __I2C4_CLKSOURCE__ specifies the I2C4 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_I2C4CLKSOURCE_PCLK3  PCLK3 selected as I2C4 clock
 | |
|   *            @arg @ref RCC_I2C4CLKSOURCE_PLL3R  PLL3R selected as I2C4 clock
 | |
|   *            @arg @ref RCC_I2C4CLKSOURCE_HSI    HSI selected as I2C4 clock
 | |
|   *            @arg @ref RCC_I2C4CLKSOURCE_CSI    CSI selected as I2C4 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_I2C4_CONFIG(__I2C4_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR4, RCC_CCIPR4_I2C4SEL, (uint32_t)(__I2C4_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the I2C4 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_I2C4CLKSOURCE_PCLK3  PCLK3 selected as I2C4 clock
 | |
|   *            @arg @ref RCC_I2C4CLKSOURCE_PLL3R  PLL3R selected as I2C4 clock
 | |
|   *            @arg @ref RCC_I2C4CLKSOURCE_HSI    HSI selected as I2C4 clock
 | |
|   *            @arg @ref RCC_I2C4CLKSOURCE_CSI    CSI selected as I2C4 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_I2C4_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR4, RCC_CCIPR4_I2C4SEL)))
 | |
| #endif /* I2C4 */
 | |
| 
 | |
| /** @brief  Macro to configure the I3C1 clock (I3C1CLK).
 | |
|   *
 | |
|   * @param  __I3C1_CLKSOURCE__ specifies the I3C1 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_I3C1CLKSOURCE_PCLK1  PCLK1 selected as I3C1 clock
 | |
|   *            @arg @ref RCC_I3C1CLKSOURCE_PLL3R  PLL3R selected as I3C1 clock (*)
 | |
|   *            @arg @ref RCC_I3C1CLKSOURCE_PLL2R  PLL2R selected as I3C1 clock (**)
 | |
|   *            @arg @ref RCC_I3C1CLKSOURCE_HSI    HSI selected as I3C1 clock
 | |
|   * @retval None
 | |
|   *
 | |
|   *  (*)  : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   *  (**) : For stm32h503xx family line.
 | |
|   */
 | |
| #define __HAL_RCC_I3C1_CONFIG(__I3C1_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR4, RCC_CCIPR4_I3C1SEL, (uint32_t)(__I3C1_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the I3C1 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_I3C1CLKSOURCE_PCLK1  PCLK1 selected as I3C1 clock
 | |
|   *            @arg @ref RCC_I3C1CLKSOURCE_PLL3R  PLL3R selected as I3C1 clock (*)
 | |
|   *            @arg @ref RCC_I3C1CLKSOURCE_PLL2R  PLL2R selected as I3C1 clock (**)
 | |
|   *            @arg @ref RCC_I3C1CLKSOURCE_HSI    HSI selected as I3C1 clock
 | |
|   *
 | |
|   *  (*)  : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   *  (**) : For stm32h503xx family line.
 | |
|   */
 | |
| #define __HAL_RCC_GET_I3C1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR4, RCC_CCIPR4_I3C1SEL)))
 | |
| 
 | |
| #if defined(I3C2)
 | |
| /** @brief  Macro to configure the I3C2 clock (I3C2CLK).
 | |
|   *
 | |
|   * @param  __I3C2_CLKSOURCE__ specifies the I3C2 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_I3C2CLKSOURCE_PCLK3  PCLK3 selected as I3C2 clock
 | |
|   *            @arg @ref RCC_I3C2CLKSOURCE_PLL3R  PLL3R selected as I3C2 clock (*)
 | |
|   *            @arg @ref RCC_I3C2CLKSOURCE_PLL2R  PLL2R selected as I3C2 clock
 | |
|   *            @arg @ref RCC_I3C2CLKSOURCE_HSI    HSI selected as I3C2 clock
 | |
|   *
 | |
|   * @retval None
 | |
|   *
 | |
|   *  (*)  : Not available for all stm32h5xxxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_I3C2_CONFIG(__I3C2_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR4, RCC_CCIPR4_I3C2SEL, (uint32_t)(__I3C2_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the I3C2 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_I3C2CLKSOURCE_PCLK3  PCLK3 selected as I3C2 clock
 | |
|   *            @arg @ref RCC_I3C2CLKSOURCE_PLL3R  PLL3R selected as I3C2 clock (*)
 | |
|   *            @arg @ref RCC_I3C2CLKSOURCE_PLL2R  PLL2R selected as I3C2 clock
 | |
|   *            @arg @ref RCC_I3C2CLKSOURCE_HSI    HSI selected as I3C2 clock
 | |
|   *
 | |
|   *  (*)  : Not available for all stm32h5xxxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_GET_I3C2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR4, RCC_CCIPR4_I3C2SEL)))
 | |
| #endif /* I3C2 */
 | |
| 
 | |
| /** @brief  Macro to configure the USART1 clock (USART1CLK).
 | |
|   *
 | |
|   * @param  __USART1_CLKSOURCE__ specifies the USART1 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_USART1CLKSOURCE_PCLK2  PCLK2 selected as USART1 clock
 | |
|   *            @arg @ref RCC_USART1CLKSOURCE_PLL2Q  PLL2Q selected as USART1 clock
 | |
|   *            @arg @ref RCC_USART1CLKSOURCE_PLL3Q  PLL3Q selected as USART1 clock (*)
 | |
|   *            @arg @ref RCC_USART1CLKSOURCE_HSI  HSI selected as USART1 clock
 | |
|   *            @arg @ref RCC_USART1CLKSOURCE_CSI  CSI selected as USART1 clock
 | |
|   *            @arg @ref RCC_USART1CLKSOURCE_LSE  LSE selected as USART1 clock
 | |
|   * @retval None
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_USART1_CONFIG(__USART1_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR1, RCC_CCIPR1_USART1SEL, (uint32_t)(__USART1_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the USART1 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_USART1CLKSOURCE_PCLK2  PCLK2 selected as USART1 clock
 | |
|   *            @arg @ref RCC_USART1CLKSOURCE_PLL2Q  PLL2Q selected as USART1 clock
 | |
|   *            @arg @ref RCC_USART1CLKSOURCE_PLL3Q  PLL3Q selected as USART1 clock (*)
 | |
|   *            @arg @ref RCC_USART1CLKSOURCE_HSI  HSI selected as USART1 clock
 | |
|   *            @arg @ref RCC_USART1CLKSOURCE_CSI  CSI selected as USART1 clock
 | |
|   *            @arg @ref RCC_USART1CLKSOURCE_LSE  LSE selected as USART1 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_GET_USART1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR1, RCC_CCIPR1_USART1SEL)))
 | |
| 
 | |
| /** @brief  Macro to configure the USART2 clock (USART2CLK).
 | |
|   *
 | |
|   * @param  __USART2_CLKSOURCE__ specifies the USART2 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_USART2CLKSOURCE_PCLK1  PCLK2 selected as USART2 clock
 | |
|   *            @arg @ref RCC_USART2CLKSOURCE_PLL2Q  PLL2Q selected as USART2 clock
 | |
|   *            @arg @ref RCC_USART2CLKSOURCE_PLL3Q  PLL3Q selected as USART2 clock (*)
 | |
|   *            @arg @ref RCC_USART2CLKSOURCE_HSI  HSI selected as USART2 clock
 | |
|   *            @arg @ref RCC_USART2CLKSOURCE_CSI  CSI selected as USART2 clock
 | |
|   *            @arg @ref RCC_USART2CLKSOURCE_LSE  LSE selected as USART2 clock
 | |
|   * @retval None
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_USART2_CONFIG(__USART2_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR1, RCC_CCIPR1_USART2SEL, (uint32_t)(__USART2_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the USART2 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_USART2CLKSOURCE_PCLK1  PCLK2 selected as USART2 clock
 | |
|   *            @arg @ref RCC_USART2CLKSOURCE_PLL2Q  PLL2Q selected as USART2 clock
 | |
|   *            @arg @ref RCC_USART2CLKSOURCE_PLL3Q  PLL3Q selected as USART2 clock (*)
 | |
|   *            @arg @ref RCC_USART2CLKSOURCE_HSI  HSI selected as USART2 clock
 | |
|   *            @arg @ref RCC_USART2CLKSOURCE_CSI  CSI selected as USART2 clock
 | |
|   *            @arg @ref RCC_USART2CLKSOURCE_LSE  LSE selected as USART2 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_GET_USART2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR1, RCC_CCIPR1_USART2SEL)))
 | |
| 
 | |
| /** @brief  Macro to configure the USART3 clock (USART3CLK).
 | |
|   *
 | |
|   * @param  __USART3_CLKSOURCE__ specifies the USART3 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_USART3CLKSOURCE_PCLK1  PCLK2 selected as USART3 clock
 | |
|   *            @arg @ref RCC_USART3CLKSOURCE_PLL2Q  PLL2Q selected as USART3 clock
 | |
|   *            @arg @ref RCC_USART3CLKSOURCE_PLL3Q  PLL3Q selected as USART3 clock (*)
 | |
|   *            @arg @ref RCC_USART3CLKSOURCE_HSI  HSI selected as USART3 clock
 | |
|   *            @arg @ref RCC_USART3CLKSOURCE_CSI  CSI selected as USART3 clock
 | |
|   *            @arg @ref RCC_USART3CLKSOURCE_LSE  LSE selected as USART3 clock
 | |
|   * @retval None
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_USART3_CONFIG(__USART3_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR1, RCC_CCIPR1_USART3SEL, (uint32_t)(__USART3_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the USART3 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_USART3CLKSOURCE_PCLK1  PCLK2 selected as USART3 clock
 | |
|   *            @arg @ref RCC_USART3CLKSOURCE_PLL2Q  PLL2Q selected as USART3 clock
 | |
|   *            @arg @ref RCC_USART3CLKSOURCE_PLL3Q  PLL3Q selected as USART3 clock (*)
 | |
|   *            @arg @ref RCC_USART3CLKSOURCE_HSI  HSI selected as USART3 clock
 | |
|   *            @arg @ref RCC_USART3CLKSOURCE_CSI  CSI selected as USART3 clock
 | |
|   *            @arg @ref RCC_USART3CLKSOURCE_LSE  LSE selected as USART3 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_GET_USART3_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR1, RCC_CCIPR1_USART3SEL)))
 | |
| 
 | |
| #if defined(UART4)
 | |
| /** @brief  Macro to configure the UART4 clock (UART4CLK).
 | |
|   *
 | |
|   * @param  __UART4_CLKSOURCE__ specifies the UART4 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_UART4CLKSOURCE_PCLK1  PCLK1 selected as UART4 clock
 | |
|   *            @arg @ref RCC_UART4CLKSOURCE_PLL2Q  PLL2Q Clock selected as UART4 clock
 | |
|   *            @arg @ref RCC_UART4CLKSOURCE_PLL3Q  PLL3Q Clock selected as UART4 clock
 | |
|   *            @arg @ref RCC_UART4CLKSOURCE_HSI   HSI selected as UART4 clock
 | |
|   *            @arg @ref RCC_UART4CLKSOURCE_CSI   CSI selected as UART4 clock
 | |
|   *            @arg @ref RCC_UART4CLKSOURCE_LSE   LSE selected as UART4 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_UART4_CONFIG(__UART4_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR1, RCC_CCIPR1_UART4SEL, (uint32_t)(__UART4_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the UART4 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_UART4CLKSOURCE_PCLK1  PCLK1 selected as UART4 clock
 | |
|   *            @arg @ref RCC_UART4CLKSOURCE_PLL2Q  PLL2Q Clock selected as UART4 clock
 | |
|   *            @arg @ref RCC_UART4CLKSOURCE_PLL3Q  PLL3Q Clock selected as UART4 clock
 | |
|   *            @arg @ref RCC_UART4CLKSOURCE_HSI   HSI selected as UART4 clock
 | |
|   *            @arg @ref RCC_UART4CLKSOURCE_CSI   CSI selected as UART4 clock
 | |
|   *            @arg @ref RCC_UART4CLKSOURCE_LSE   LSE selected as UART4 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_UART4_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR1, RCC_CCIPR1_UART4SEL)))
 | |
| #endif /* UART4 */
 | |
| 
 | |
| #if defined(UART5)
 | |
| /** @brief  Macro to configure the UART5 clock (UART5CLK).
 | |
|   *
 | |
|   * @param  __UART5_CLKSOURCE__ specifies the UART5 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_UART5CLKSOURCE_PCLK1  PCLK1 selected as UART5 clock
 | |
|   *            @arg @ref RCC_UART5CLKSOURCE_PLL2Q  PLL2Q Clock selected as UART5 clock
 | |
|   *            @arg @ref RCC_UART5CLKSOURCE_PLL3Q  PLL3Q Clock selected as UART5 clock
 | |
|   *            @arg @ref RCC_UART5CLKSOURCE_HSI   HSI selected as UART5 clock
 | |
|   *            @arg @ref RCC_UART5CLKSOURCE_CSI   CSI selected as UART5 clock
 | |
|   *            @arg @ref RCC_UART5CLKSOURCE_LSE   LSE selected as UART5 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_UART5_CONFIG(__UART5_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR1, RCC_CCIPR1_UART5SEL, (uint32_t)(__UART5_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the UART5 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_UART5CLKSOURCE_PCLK1  PCLK1 selected as UART5 clock
 | |
|   *            @arg @ref RCC_UART5CLKSOURCE_PLL2Q  PLL2Q Clock selected as UART5 clock
 | |
|   *            @arg @ref RCC_UART5CLKSOURCE_PLL3Q  PLL3Q Clock selected as UART5 clock
 | |
|   *            @arg @ref RCC_UART5CLKSOURCE_HSI   HSI selected as UART5 clock
 | |
|   *            @arg @ref RCC_UART5CLKSOURCE_CSI   CSI selected as UART5 clock
 | |
|   *            @arg @ref RCC_UART5CLKSOURCE_LSE   LSE selected as UART5 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_UART5_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR1, RCC_CCIPR1_UART5SEL)))
 | |
| #endif /* UART5 */
 | |
| 
 | |
| #if defined(USART6)
 | |
| /** @brief  Macro to configure the USART6 clock (USART6CLK).
 | |
|   *
 | |
|   * @param  __USART6_CLKSOURCE__ specifies the USART6 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_USART6CLKSOURCE_PCLK1  PCLK2 selected as USART6 clock
 | |
|   *            @arg @ref RCC_USART6CLKSOURCE_PLL2Q  PLL2Q selected as USART6 clock
 | |
|   *            @arg @ref RCC_USART6CLKSOURCE_PLL3Q  PLL3Q selected as USART6 clock
 | |
|   *            @arg @ref RCC_USART6CLKSOURCE_HSI  HSI selected as USART6 clock
 | |
|   *            @arg @ref RCC_USART6CLKSOURCE_CSI  CSI selected as USART6 clock
 | |
|   *            @arg @ref RCC_USART6CLKSOURCE_LSE  LSE selected as USART6 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_USART6_CONFIG(__USART6_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR1, RCC_CCIPR1_USART6SEL, (uint32_t)(__USART6_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the USART6 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_USART6CLKSOURCE_PCLK1  PCLK1 selected as USART6 clock
 | |
|   *            @arg @ref RCC_USART6CLKSOURCE_PLL2Q  PLL2Q selected as USART6 clock
 | |
|   *            @arg @ref RCC_USART6CLKSOURCE_PLL3Q  PLL3Q selected as USART6 clock
 | |
|   *            @arg @ref RCC_USART6CLKSOURCE_HSI  HSI selected as USART6 clock
 | |
|   *            @arg @ref RCC_USART6CLKSOURCE_CSI  CSI selected as USART6 clock
 | |
|   *            @arg @ref RCC_USART6CLKSOURCE_LSE  LSE selected as USART6 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_USART6_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR1, RCC_CCIPR1_USART6SEL)))
 | |
| #endif /* USART6 */
 | |
| 
 | |
| #if defined(UART7)
 | |
| /** @brief  Macro to configure the UART7 clock (UART7CLK).
 | |
|   *
 | |
|   * @param  __UART7_CLKSOURCE__ specifies the UART7 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_UART7CLKSOURCE_PCLK1  PCLK1 selected as UART7 clock
 | |
|   *            @arg @ref RCC_UART7CLKSOURCE_PLL2Q  PLL2Q selected as UART7 clock
 | |
|   *            @arg @ref RCC_UART7CLKSOURCE_PLL3Q  PLL3Q selected as UART7 clock
 | |
|   *            @arg @ref RCC_UART7CLKSOURCE_HSI  HSI selected as UART7 clock
 | |
|   *            @arg @ref RCC_UART7CLKSOURCE_CSI  CSI selected as UART7 clock
 | |
|   *            @arg @ref RCC_UART7CLKSOURCE_LSE  LSE selected as UART7 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_UART7_CONFIG(__UART7_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR1, RCC_CCIPR1_UART7SEL, (uint32_t)(__UART7_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the UART7 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_UART7CLKSOURCE_PCLK1  PCLK1 selected as UART7 clock
 | |
|   *            @arg @ref RCC_UART7CLKSOURCE_PLL2Q  PLL2Q selected as UART7 clock
 | |
|   *            @arg @ref RCC_UART7CLKSOURCE_PLL3Q  PLL3Q selected as UART7 clock
 | |
|   *            @arg @ref RCC_UART7CLKSOURCE_HSI  HSI selected as UART7 clock
 | |
|   *            @arg @ref RCC_UART7CLKSOURCE_CSI  CSI selected as UART7 clock
 | |
|   *            @arg @ref RCC_UART7CLKSOURCE_LSE  LSE selected as UART7 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_UART7_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR1, RCC_CCIPR1_UART7SEL)))
 | |
| #endif /* UART5 */
 | |
| 
 | |
| #if defined(UART8)
 | |
| /** @brief  Macro to configure the UART8 clock (UART8CLK).
 | |
|   *
 | |
|   * @param  __UART8_CLKSOURCE__ specifies the UART8 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_UART8CLKSOURCE_PCLK1  PCLK1 selected as UART8 clock
 | |
|   *            @arg @ref RCC_UART8CLKSOURCE_PLL2Q  PLL2Q selected as UART8 clock
 | |
|   *            @arg @ref RCC_UART8CLKSOURCE_PLL3Q  PLL3Q selected as UART8 clock
 | |
|   *            @arg @ref RCC_UART8CLKSOURCE_HSI  HSI selected as UART8 clock
 | |
|   *            @arg @ref RCC_UART8CLKSOURCE_CSI  CSI selected as UART8 clock
 | |
|   *            @arg @ref RCC_UART8CLKSOURCE_LSE  LSE selected as UART8 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_UART8_CONFIG(__UART8_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR1, RCC_CCIPR1_UART8SEL, (uint32_t)(__UART8_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the UART8 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_UART8CLKSOURCE_PCLK1  PCLK1 selected as UART8 clock
 | |
|   *            @arg @ref RCC_UART8CLKSOURCE_PLL2Q  PLL2Q selected as UART8 clock
 | |
|   *            @arg @ref RCC_UART8CLKSOURCE_PLL3Q  PLL3Q selected as UART8 clock
 | |
|   *            @arg @ref RCC_UART8CLKSOURCE_HSI  HSI selected as UART8 clock
 | |
|   *            @arg @ref RCC_UART8CLKSOURCE_CSI  CSI selected as UART8 clock
 | |
|   *            @arg @ref RCC_UART8CLKSOURCE_LSE  LSE selected as UART8 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_UART8_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR1, RCC_CCIPR1_UART8SEL)))
 | |
| #endif /* UART8 */
 | |
| 
 | |
| #if defined(UART9)
 | |
| /** @brief  Macro to configure the UART9 clock (UART9CLK).
 | |
|   *
 | |
|   * @param  __UART9_CLKSOURCE__ specifies the UART9 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_UART9CLKSOURCE_PCLK1  PCLK1 selected as UART9 clock
 | |
|   *            @arg @ref RCC_UART9CLKSOURCE_PLL2Q  PLL2Q selected as UART9 clock
 | |
|   *            @arg @ref RCC_UART9CLKSOURCE_PLL3Q  PLL3Q selected as UART9 clock
 | |
|   *            @arg @ref RCC_UART9CLKSOURCE_HSI  HSI selected as UART9 clock
 | |
|   *            @arg @ref RCC_UART9CLKSOURCE_CSI  CSI selected as UART9 clock
 | |
|   *            @arg @ref RCC_UART9CLKSOURCE_LSE  LSE selected as UART9 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_UART9_CONFIG(__UART9_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR1, RCC_CCIPR1_UART9SEL, (uint32_t)(__UART9_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the UART9 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_UART9CLKSOURCE_PCLK1  PCLK1 selected as UART9 clock
 | |
|   *            @arg @ref RCC_UART9CLKSOURCE_PLL2Q  PLL2Q selected as UART9 clock
 | |
|   *            @arg @ref RCC_UART9CLKSOURCE_PLL3Q  PLL3Q selected as UART9 clock
 | |
|   *            @arg @ref RCC_UART9CLKSOURCE_HSI  HSI selected as UART9 clock
 | |
|   *            @arg @ref RCC_UART9CLKSOURCE_CSI  CSI selected as UART9 clock
 | |
|   *            @arg @ref RCC_UART9CLKSOURCE_LSE  LSE selected as UART9 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_UART9_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR1, RCC_CCIPR1_UART9SEL)))
 | |
| #endif /* UART9 */
 | |
| 
 | |
| #if defined(USART10)
 | |
| /** @brief  Macro to configure the USART10 clock (USART10CLK).
 | |
|   *
 | |
|   * @param  __USART10_CLKSOURCE__ specifies the USART10 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_USART10CLKSOURCE_PCLK1  PCLK1 selected as USART10 clock
 | |
|   *            @arg @ref RCC_USART10CLKSOURCE_PLL2Q  PLL2Q selected as USART10 clock
 | |
|   *            @arg @ref RCC_USART10CLKSOURCE_PLL3Q  PLL3Q selected as USART10 clock
 | |
|   *            @arg @ref RCC_USART10CLKSOURCE_HSI  HSI selected as USART10 clock
 | |
|   *            @arg @ref RCC_USART10CLKSOURCE_CSI  CSI selected as USART10 clock
 | |
|   *            @arg @ref RCC_USART10CLKSOURCE_LSE  LSE selected as USART10 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_USART10_CONFIG(__USART10_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR1, RCC_CCIPR1_USART10SEL, (uint32_t)(__USART10_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the USART10 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_USART10CLKSOURCE_PCLK1  PCLK1 selected as USART10 clock
 | |
|   *            @arg @ref RCC_USART10CLKSOURCE_PLL2Q  PLL2Q selected as USART10 clock
 | |
|   *            @arg @ref RCC_USART10CLKSOURCE_PLL3Q  PLL3Q selected as USART10 clock
 | |
|   *            @arg @ref RCC_USART10CLKSOURCE_HSI  HSI selected as USART10 clock
 | |
|   *            @arg @ref RCC_USART10CLKSOURCE_CSI  CSI selected as USART10 clock
 | |
|   *            @arg @ref RCC_USART10CLKSOURCE_LSE  LSE selected as USART10 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_USART10_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR1, RCC_CCIPR1_USART10SEL)))
 | |
| #endif /* USART10 */
 | |
| 
 | |
| #if defined(USART11)
 | |
| /** @brief  Macro to configure the USART11 clock (USART11CLK).
 | |
|   *
 | |
|   * @param  __USART11_CLKSOURCE__ specifies the USART11 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_USART11CLKSOURCE_PCLK1  PCLK1 selected as USART11 clock
 | |
|   *            @arg @ref RCC_USART11CLKSOURCE_PLL2Q  PLL2Q selected as USART11 clock
 | |
|   *            @arg @ref RCC_USART11CLKSOURCE_PLL3Q  PLL3Q selected as USART11 clock
 | |
|   *            @arg @ref RCC_USART11CLKSOURCE_HSI  HSI selected as USART11 clock
 | |
|   *            @arg @ref RCC_USART11CLKSOURCE_CSI  CSI selected as USART11 clock
 | |
|   *            @arg @ref RCC_USART11CLKSOURCE_LSE  LSE selected as USART11 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_USART11_CONFIG(__USART11_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_USART11SEL, (uint32_t)(__USART11_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the USART11 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_USART11CLKSOURCE_PCLK1  PCLK1 selected as USART11 clock
 | |
|   *            @arg @ref RCC_USART11CLKSOURCE_PLL2Q  PLL2Q selected as USART11 clock
 | |
|   *            @arg @ref RCC_USART11CLKSOURCE_PLL3Q  PLL3Q selected as USART11 clock
 | |
|   *            @arg @ref RCC_USART11CLKSOURCE_HSI  HSI selected as USART11 clock
 | |
|   *            @arg @ref RCC_USART11CLKSOURCE_CSI  CSI selected as USART11 clock
 | |
|   *            @arg @ref RCC_USART11CLKSOURCE_LSE  LSE selected as USART11 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_USART11_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR2, RCC_CCIPR2_USART11SEL)))
 | |
| #endif /* USART11 */
 | |
| 
 | |
| #if defined(UART12)
 | |
| /** @brief  Macro to configure the UART12 clock (UART12CLK).
 | |
|   *
 | |
|   * @param  __UART12_CLKSOURCE__ specifies the UART12 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_UART12CLKSOURCE_PCLK1  PCLK1 selected as UART12 clock
 | |
|   *            @arg @ref RCC_UART12CLKSOURCE_PLL2Q  PLL2Q selected as UART12 clock
 | |
|   *            @arg @ref RCC_UART12CLKSOURCE_PLL3Q  PLL3Q selected as UART12 clock
 | |
|   *            @arg @ref RCC_UART12CLKSOURCE_HSI  HSI selected as UART12 clock
 | |
|   *            @arg @ref RCC_UART12CLKSOURCE_CSI  CSI selected as UART12 clock
 | |
|   *            @arg @ref RCC_UART12CLKSOURCE_LSE  LSE selected as UART12 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_UART12_CONFIG(__UART12_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_UART12SEL, (uint32_t)(__UART12_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the UART12 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_UART12CLKSOURCE_PCLK1  PCLK1 selected as UART12 clock
 | |
|   *            @arg @ref RCC_UART12CLKSOURCE_PLL2Q  PLL2Q selected as UART12 clock
 | |
|   *            @arg @ref RCC_UART12CLKSOURCE_PLL3Q  PLL3Q selected as UART12 clock
 | |
|   *            @arg @ref RCC_UART12CLKSOURCE_HSI  HSI selected as UART12 clock
 | |
|   *            @arg @ref RCC_UART12CLKSOURCE_CSI  CSI selected as UART12 clock
 | |
|   *            @arg @ref RCC_UART12CLKSOURCE_LSE  LSE selected as UART12 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_UART12_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR2, RCC_CCIPR2_UART12SEL)))
 | |
| #endif /* UART12 */
 | |
| 
 | |
| /** @brief  Macro to configure the LPUART1 clock (LPUART1CLK).
 | |
|   *
 | |
|   * @param  __LPUART1_CLKSOURCE__ specifies the LPUART1 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_LPUART1CLKSOURCE_PCLK3  PCLK3 selected as LPUART1 clock
 | |
|   *            @arg @ref RCC_LPUART1CLKSOURCE_PLL2Q  PLL2Q selected as LPUART1 clock
 | |
|   *            @arg @ref RCC_LPUART1CLKSOURCE_PLL3Q  PLL3Q selected as LPUART1 clock (*)
 | |
|   *            @arg @ref RCC_LPUART1CLKSOURCE_HSI  HSI selected as LPUART1 clock
 | |
|   *            @arg @ref RCC_LPUART1CLKSOURCE_CSI  CSI selected as LPUART1 clock
 | |
|   *            @arg @ref RCC_LPUART1CLKSOURCE_LSE  LSE selected as LPUART1 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_LPUART1_CONFIG(__LPUART1_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR3, RCC_CCIPR3_LPUART1SEL, (uint32_t)(__LPUART1_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the LPUART1 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_LPUART1CLKSOURCE_PCLK3  PCLK3 selected as LPUART1 clock
 | |
|   *            @arg @ref RCC_LPUART1CLKSOURCE_PLL2Q  PLL2Q selected as LPUART1 clock
 | |
|   *            @arg @ref RCC_LPUART1CLKSOURCE_PLL3Q  PLL3Q selected as LPUART1 clock (*)
 | |
|   *            @arg @ref RCC_LPUART1CLKSOURCE_HSI  HSI selected as LPUART1 clock
 | |
|   *            @arg @ref RCC_LPUART1CLKSOURCE_CSI  CSI selected as LPUART1 clock
 | |
|   *            @arg @ref RCC_LPUART1CLKSOURCE_LSE  LSE selected as LPUART1 clock
 | |
|   *
 | |
|   *  (*) : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   */
 | |
| #define __HAL_RCC_GET_LPUART1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR3, RCC_CCIPR3_LPUART1SEL)))
 | |
| 
 | |
| #if defined(OCTOSPI1)
 | |
| /** @brief  Macro to configure the OctoSPI clock.
 | |
|   * @param  __OSPI_CLKSOURCE__ specifies the OctoSPI clock source.
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg @ref RCC_OSPICLKSOURCE_HCLK    HCLK selected as OctoSPI clock
 | |
|   *            @arg @ref RCC_OSPICLKSOURCE_PLL1Q   PLL1Q divider clock selected as OctoSPI clock
 | |
|   *            @arg @ref RCC_OSPICLKSOURCE_PLL2R   PLL2R divider clock selected as OctoSPI clock
 | |
|   *            @arg @ref RCC_OSPICLKSOURCE_CLKP    CLKP selected as OctoSPI clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_OSPI_CONFIG(__OSPI_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR4, RCC_CCIPR4_OCTOSPISEL, (uint32_t)(__OSPI_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the OctoSPI clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg @ref RCC_OSPICLKSOURCE_HCLK    HCLK selected as OctoSPI clock
 | |
|   *            @arg @ref RCC_OSPICLKSOURCE_PLL1Q   PLL1Q divider clock selected as OctoSPI clock
 | |
|   *            @arg @ref RCC_OSPICLKSOURCE_PLL2R   PLL2R divider clock selected as OctoSPI clock
 | |
|   *            @arg @ref RCC_OSPICLKSOURCE_CLKP    CLKP selected as OctoSPI clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_OSPI_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR4, RCC_CCIPR4_OCTOSPISEL)))
 | |
| #endif /* OCTOSPI1 */
 | |
| 
 | |
| #if defined(SDMMC1)
 | |
| /** @brief  Macro to configure the SDMMC1 clock (SDMMCCLK).
 | |
|   *
 | |
|   * @param  __SDMMC1_CLKSOURCE__: specifies the SDMMC1 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg RCC_SDMMC1CLKSOURCE_PLL1Q  PLL1Q selected as SDMMC1 clock
 | |
|   *            @arg RCC_SDMMC1CLKSOURCE_PLL2R  PLL2R selected as SDMMC1 clock
 | |
|   */
 | |
| #define __HAL_RCC_SDMMC1_CONFIG(__SDMMC1_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR4, RCC_CCIPR4_SDMMC1SEL, (uint32_t)(__SDMMC1_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  macro to get the SDMMC1 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SDMMC1CLKSOURCE_PLL1Q  PLL1Q selected as SDMMC1 clock
 | |
|   *            @arg RCC_SDMMC1CLKSOURCE_PLL2R  PLL2R selected as SDMMC1 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_SDMMC1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR4, RCC_CCIPR4_SDMMC1SEL)))
 | |
| #endif /* SDMMC1 */
 | |
| 
 | |
| #if defined(SDMMC2)
 | |
| /** @brief  Macro to configure the SDMMC2 clock (SDMMCCLK).
 | |
|   *
 | |
|   * @param  __SDMMC2_CLKSOURCE__: specifies the SDMMC2 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *            @arg RCC_SDMMC2CLKSOURCE_PLL1Q  PLL1Q selected as SDMMC2 clock
 | |
|   *            @arg RCC_SDMMC2CLKSOURCE_PLL2R  PLL2R selected as SDMMC2 clock
 | |
|   */
 | |
| #define __HAL_RCC_SDMMC2_CONFIG(__SDMMC2_CLKSOURCE__) \
 | |
|   MODIFY_REG(RCC->CCIPR4, RCC_CCIPR4_SDMMC2SEL, (uint32_t)(__SDMMC2_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  macro to get the SDMMC2 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_SDMMC2CLKSOURCE_PLL1Q  PLL1Q selected as SDMMC2 clock
 | |
|   *            @arg RCC_SDMMC2CLKSOURCE_PLL2R  PLL2R selected as SDMMC2 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_SDMMC2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR4, RCC_CCIPR4_SDMMC2SEL)))
 | |
| #endif /*SDMMC2*/
 | |
| 
 | |
| /** @brief macro to configure the RNG clock (RNGCLK).
 | |
|   *
 | |
|   * @param  __RNGCLKSource__: specifies the RNG clock source.
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg RCC_RNGCLKSOURCE_HSI48: HSI48 selected as RNG clock
 | |
|   *            @arg RCC_RNGCLKSOURCE_PLL1Q: PLL1Q selected as RNG clock
 | |
|   *            @arg RCC_RNGCLKSOURCE_LSE: LSE selected as RNG clock
 | |
|   *            @arg RCC_RNGCLKSOURCE_LSI: LSI selected as RNG clock
 | |
|   */
 | |
| #define __HAL_RCC_RNG_CONFIG(__RNGCLKSource__) \
 | |
|   MODIFY_REG(RCC->CCIPR5, RCC_CCIPR5_RNGSEL, (uint32_t)(__RNGCLKSource__))
 | |
| 
 | |
| /** @brief  macro to get the RNG clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_RNGCLKSOURCE_HSI48: HSI48 selected as RNG clock
 | |
|   *            @arg RCC_RNGCLKSOURCE_PLL1Q: PLL1Q selected as RNG clock
 | |
|   *            @arg RCC_RNGCLKSOURCE_LSE: LSE selected as RNG clock
 | |
|   *            @arg RCC_RNGCLKSOURCE_LSI: LSI selected as RNG clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_RNG_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR5, RCC_CCIPR5_RNGSEL)))
 | |
| 
 | |
| #if defined(SAI1)
 | |
| /**
 | |
|   * @brief  Macro to configure the SAI1 clock source.
 | |
|   * @param  __SAI1_CLKSOURCE__ defines the SAI1 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *             @arg @ref RCC_SAI1CLKSOURCE_PLL1Q  PLL1Q selected as SAI1 clock
 | |
|   *             @arg @ref RCC_SAI1CLKSOURCE_PLL2P  PLL2Pselected as SAI1 clock
 | |
|   *             @arg @ref RCC_SAI1CLKSOURCE_PLL3P  PLL3P selected as SAI1 clock
 | |
|   *             @arg @ref RCC_SAI1CLKSOURCE_PIN    External clock selected as SAI1 clock
 | |
|   *             @arg @ref RCC_SAI1CLKSOURCE_CLKP   CLKP selected as SAI1 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_SAI1_CONFIG(__SAI1_CLKSOURCE__)\
 | |
|   MODIFY_REG(RCC->CCIPR5, RCC_CCIPR5_SAI1SEL, (uint32_t)(__SAI1_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the SAI1 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *             @arg @ref RCC_SAI1CLKSOURCE_PLL1Q  PLL1Q selected as SAI1 clock
 | |
|   *             @arg @ref RCC_SAI1CLKSOURCE_PLL2P  PLL2P selected as SAI1 clock
 | |
|   *             @arg @ref RCC_SAI1CLKSOURCE_PLL3P  PLL3P selected as SAI1 clock
 | |
|   *             @arg @ref RCC_SAI1CLKSOURCE_PIN    External clock selected as SAI1 clock
 | |
|   *             @arg @ref RCC_SAI1CLKSOURCE_CLKP   CLKP selected as SAI1 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_SAI1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR5, RCC_CCIPR5_SAI1SEL)))
 | |
| #endif /* SAI1 */
 | |
| 
 | |
| #if defined(SAI2)
 | |
| /**
 | |
|   * @brief  Macro to configure the SAI2 clock source.
 | |
|   * @param  __SAI2_CLKSOURCE__ defines the SAI2 clock source.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *             @arg @ref RCC_SAI2CLKSOURCE_PLL1Q  PLL1Q selected as SAI2 clock
 | |
|   *             @arg @ref RCC_SAI2CLKSOURCE_PLL2P  PLL2P selected as SAI2 clock
 | |
|   *             @arg @ref RCC_SAI2CLKSOURCE_PLL3P  PLL3P selected as SAI2 clock
 | |
|   *             @arg @ref RCC_SAI2CLKSOURCE_PIN    External clock selected as SAI2 clock
 | |
|   *             @arg @ref RCC_SAI2CLKSOURCE_CLKP   CLKP selected as SAI2 clock
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_SAI2_CONFIG(__SAI2_CLKSOURCE__ )\
 | |
|   MODIFY_REG(RCC->CCIPR5, RCC_CCIPR5_SAI2SEL, (uint32_t)(__SAI2_CLKSOURCE__))
 | |
| 
 | |
| /** @brief  Macro to get the SAI2 clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *             @arg @ref RCC_SAI2CLKSOURCE_PLL1Q  PLL1Q selected as SAI2 clock
 | |
|   *             @arg @ref RCC_SAI2CLKSOURCE_PLL2P  PLL2P selected as SAI2 clock
 | |
|   *             @arg @ref RCC_SAI2CLKSOURCE_PLL3P  PLL3P selected as SAI2 clock
 | |
|   *             @arg @ref RCC_SAI2CLKSOURCE_PIN    External clock selected as SAI2 clock
 | |
|   *             @arg @ref RCC_SAI2CLKSOURCE_CLKP   CLKP selected as SAI2 clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_SAI2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR5, RCC_CCIPR5_SAI2SEL)))
 | |
| #endif /* SAI2 */
 | |
| 
 | |
| /** @brief  Macro to configure the CLKP : Oscillator clock for peripheral
 | |
|   * @param  __CLKPSource__ specifies Oscillator clock for peripheral
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg RCC_CLKPSOURCE_HSI  HSI oscillator selected as clock for peripheral
 | |
|   *            @arg RCC_CLKPSOURCE_CSI  CSI oscillator selected as clock for peripheral
 | |
|   *            @arg RCC_CLKPSOURCE_HSE  HSE oscillator selected as clock for peripheral
 | |
|   */
 | |
| #define __HAL_RCC_CLKP_CONFIG(__CLKPSource__) \
 | |
|   MODIFY_REG(RCC->CCIPR5, RCC_CCIPR5_CKERPSEL, (uint32_t)(__CLKPSource__))
 | |
| 
 | |
| /** @brief  Macro to get the oscillator clock for peripheral clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_CLKPSOURCE_HSI  HSI selected Oscillator clock for peripheral
 | |
|   *            @arg RCC_CLKPSOURCE_CSI  CSI selected Oscillator clock for peripheral
 | |
|   *            @arg RCC_CLKPSOURCE_HSE  HSE selected Oscillator clock for peripheral
 | |
|   */
 | |
| #define __HAL_RCC_GET_CLKP_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR5, RCC_CCIPR5_CKERPSEL)))
 | |
| 
 | |
| #if defined(CEC)
 | |
| /** @brief  Macro to configure the CEC clock (CECCLK)
 | |
|   * @param  __CECCLKSource__ specifies the CEC clock source.
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg RCC_CECCLKSOURCE_LSE  LSE selected as CEC clock
 | |
|   *            @arg RCC_CECCLKSOURCE_LSI  LSI selected as CEC clock
 | |
|   *            @arg RCC_CECCLKSOURCE_CSI_DIV122  CSI Divided by 122 selected as CEC clock
 | |
|   */
 | |
| #define __HAL_RCC_CEC_CONFIG(__CECCLKSource__) \
 | |
|   MODIFY_REG(RCC->CCIPR5, RCC_CCIPR5_CECSEL, (uint32_t)(__CECCLKSource__))
 | |
| 
 | |
| /** @brief  Macro to get the CEC clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_CECCLKSOURCE_LSE: LSE selected as CEC clock
 | |
|   *            @arg RCC_CECCLKSOURCE_LSI: LSI selected as CEC clock
 | |
|   *            @arg RCC_CECCLKSOURCE_CSI_DIV122: CSI Divided by 122 selected as CEC clock
 | |
|   */
 | |
| #define __HAL_RCC_GET_CEC_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR5, RCC_CCIPR5_CECSEL)))
 | |
| #endif /* CEC */
 | |
| 
 | |
| #if defined(USB_DRD_FS)
 | |
| /** @brief  Macro to configure the USB clock (USBCLK).
 | |
|   * @param  __USBCLKSource__ specifies the USB clock source.
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg RCC_USBCLKSOURCE_PLL1Q  PLL1Q selected as USB clock
 | |
|   *            @arg RCC_USBCLKSOURCE_PLL3Q  PLL3Q selected as USB clock (*)
 | |
|   *            @arg RCC_USBCLKSOURCE_PLL2Q  PLL2Q selected as USB clock (**)
 | |
|   *            @arg RCC_USBCLKSOURCE_HSI48  HSI48 selected as USB clock
 | |
|   *
 | |
|   *  (*)  : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   *  (**) : For stm32h503xx family line.
 | |
|   */
 | |
| #define __HAL_RCC_USB_CONFIG(__USBCLKSource__) \
 | |
|   MODIFY_REG(RCC->CCIPR4, RCC_CCIPR4_USBSEL, (uint32_t)(__USBCLKSource__))
 | |
| 
 | |
| /** @brief  Macro to get the USB clock source.
 | |
|   * @retval The clock source can be one of the following values:
 | |
|   *            @arg RCC_USBCLKSOURCE_PLL1Q   PLL1Q selected as USB clock
 | |
|   *            @arg RCC_USBCLKSOURCE_PLL3Q   PLL3Q selected as USB clock (*)
 | |
|   *            @arg RCC_USBCLKSOURCE_PLL2Q   PLL2Q selected as USB clock (**)
 | |
|   *            @arg RCC_USBCLKSOURCE_HSI48   HSI48 selected as USB clock
 | |
|   *
 | |
|   *  (*)  : For stm32h56xxx and stm32h57xxx family lines.
 | |
|   *  (**) : For stm32h503xx family line.
 | |
|   */
 | |
| #define __HAL_RCC_GET_USB_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR4, RCC_CCIPR4_USBSEL)))
 | |
| #endif /* USB_DRD_FS */
 | |
| 
 | |
| /** @brief  Macro to configure the Timers clocks prescalers
 | |
|   * @param  __PRESC__  specifies the Timers clocks prescalers selection
 | |
|   *         This parameter can be one of the following values:
 | |
|   *            @arg RCC_TIMPRES_DEACTIVATED: The Timers kernels clocks prescaler is
 | |
|   *                 equal to rcc_hclk1 if PPREx is corresponding to division by 1 or 2,
 | |
|   *                 else it is equal to 2 x Frcc_pclkx (default after reset)
 | |
|   *            @arg RCC_TIMPRES_ACTIVATED: The Timers kernels clocks prescaler is
 | |
|   *                 equal to rcc_hclk1 if PPREx is corresponding to division by 1, 2 or 4,
 | |
|   *                 else it is equal to 4 x Frcc_pclkx
 | |
|   */
 | |
| #define __HAL_RCC_TIMCLKPRESCALER(__PRESC__) do {RCC->CFGR1 &= ~(RCC_CFGR1_TIMPRE);\
 | |
|                                                   RCC->CFGR1 |= (__PRESC__);       \
 | |
|                                                 }while(0)
 | |
| 
 | |
| #if defined(CRS)
 | |
| 
 | |
| /**
 | |
|   * @brief  Enable the specified CRS interrupts.
 | |
|   * @param  __INTERRUPT__ specifies the CRS interrupt sources to be enabled.
 | |
|   *          This parameter can be any combination of the following values:
 | |
|   *              @arg @ref RCC_CRS_IT_SYNCOK  SYNC event OK interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_SYNCWARN  SYNC warning interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_ERR  Synchronization or trimming error interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_ESYNC  Expected SYNC interrupt
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_CRS_ENABLE_IT(__INTERRUPT__)   SET_BIT(CRS->CR, (__INTERRUPT__))
 | |
| 
 | |
| /**
 | |
|   * @brief  Disable the specified CRS interrupts.
 | |
|   * @param  __INTERRUPT__ specifies the CRS interrupt sources to be disabled.
 | |
|   *          This parameter can be any combination of the following values:
 | |
|   *              @arg @ref RCC_CRS_IT_SYNCOK  SYNC event OK interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_SYNCWARN  SYNC warning interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_ERR  Synchronization or trimming error interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_ESYNC  Expected SYNC interrupt
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_CRS_DISABLE_IT(__INTERRUPT__)  CLEAR_BIT(CRS->CR, (__INTERRUPT__))
 | |
| 
 | |
| /** @brief  Check whether the CRS interrupt has occurred or not.
 | |
|   * @param  __INTERRUPT__ specifies the CRS interrupt source to check.
 | |
|   *         This parameter can be one of the following values:
 | |
|   *              @arg @ref RCC_CRS_IT_SYNCOK  SYNC event OK interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_SYNCWARN  SYNC warning interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_ERR  Synchronization or trimming error interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_ESYNC  Expected SYNC interrupt
 | |
|   * @retval The new state of __INTERRUPT__ (0 or 1).
 | |
|   */
 | |
| #define __HAL_RCC_CRS_GET_IT_SOURCE(__INTERRUPT__)  ((READ_BIT(CRS->CR, (__INTERRUPT__)) != 0U) ? 1U : 0U)
 | |
| 
 | |
| /** @brief  Clear the CRS interrupt pending bits
 | |
|   * @param  __INTERRUPT__ specifies the interrupt pending bit to clear.
 | |
|   *         This parameter can be any combination of the following values:
 | |
|   *              @arg @ref RCC_CRS_IT_SYNCOK  SYNC event OK interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_SYNCWARN  SYNC warning interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_ERR  Synchronization or trimming error interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_ESYNC  Expected SYNC interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_TRIMOVF  Trimming overflow or underflow interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_SYNCERR  SYNC error interrupt
 | |
|   *              @arg @ref RCC_CRS_IT_SYNCMISS  SYNC missed interrupt
 | |
|   */
 | |
| /* CRS IT Error Mask */
 | |
| #define  RCC_CRS_IT_ERROR_MASK                 ((uint32_t)(RCC_CRS_IT_TRIMOVF |\
 | |
|                                                            RCC_CRS_IT_SYNCERR | RCC_CRS_IT_SYNCMISS))
 | |
| 
 | |
| #define __HAL_RCC_CRS_CLEAR_IT(__INTERRUPT__)  do { \
 | |
|                                                     if(((__INTERRUPT__) & RCC_CRS_IT_ERROR_MASK) != 0U) \
 | |
|                                                     { \
 | |
|                                                       WRITE_REG(CRS->ICR, CRS_ICR_ERRC | \
 | |
|                                                                 ((__INTERRUPT__) & ~RCC_CRS_IT_ERROR_MASK)); \
 | |
|                                                     } \
 | |
|                                                     else \
 | |
|                                                     { \
 | |
|                                                       WRITE_REG(CRS->ICR, (__INTERRUPT__)); \
 | |
|                                                     } \
 | |
|                                                   } while(0)
 | |
| 
 | |
| /**
 | |
|   * @brief  Check whether the specified CRS flag is set or not.
 | |
|   * @param  __FLAG__ specifies the flag to check.
 | |
|   *          This parameter can be one of the following values:
 | |
|   *              @arg @ref RCC_CRS_FLAG_SYNCOK  SYNC event OK
 | |
|   *              @arg @ref RCC_CRS_FLAG_SYNCWARN  SYNC warning
 | |
|   *              @arg @ref RCC_CRS_FLAG_ERR  Error
 | |
|   *              @arg @ref RCC_CRS_FLAG_ESYNC  Expected SYNC
 | |
|   *              @arg @ref RCC_CRS_FLAG_TRIMOVF  Trimming overflow or underflow
 | |
|   *              @arg @ref RCC_CRS_FLAG_SYNCERR  SYNC error
 | |
|   *              @arg @ref RCC_CRS_FLAG_SYNCMISS  SYNC missed
 | |
|   * @retval The new state of _FLAG_ (TRUE or FALSE).
 | |
|   */
 | |
| #define __HAL_RCC_CRS_GET_FLAG(__FLAG__)  (READ_BIT(CRS->ISR, (__FLAG__)) == (__FLAG__))
 | |
| 
 | |
| /**
 | |
|   * @brief  Clear the CRS specified FLAG.
 | |
|   * @param __FLAG__ specifies the flag to clear.
 | |
|   *          This parameter can be any combination of the following values:
 | |
|   *              @arg @ref RCC_CRS_FLAG_SYNCOK  SYNC event OK
 | |
|   *              @arg @ref RCC_CRS_FLAG_SYNCWARN  SYNC warning
 | |
|   *              @arg @ref RCC_CRS_FLAG_ERR  Error
 | |
|   *              @arg @ref RCC_CRS_FLAG_ESYNC  Expected SYNC
 | |
|   *              @arg @ref RCC_CRS_FLAG_TRIMOVF  Trimming overflow or underflow
 | |
|   *              @arg @ref RCC_CRS_FLAG_SYNCERR  SYNC error
 | |
|   *              @arg @ref RCC_CRS_FLAG_SYNCMISS  SYNC missed
 | |
|   * @note RCC_CRS_FLAG_ERR clears RCC_CRS_FLAG_TRIMOVF, RCC_CRS_FLAG_SYNCERR, RCC_CRS_FLAG_SYNCMISS
 | |
|           and consequently RCC_CRS_FLAG_ERR
 | |
|   * @retval None
 | |
|   */
 | |
| 
 | |
| /* CRS Flag Error Mask */
 | |
| #define RCC_CRS_FLAG_ERROR_MASK                ((uint32_t)(RCC_CRS_FLAG_TRIMOVF |\
 | |
|                                                            RCC_CRS_FLAG_SYNCERR | RCC_CRS_FLAG_SYNCMISS))
 | |
| 
 | |
| #define __HAL_RCC_CRS_CLEAR_FLAG(__FLAG__)     do { \
 | |
|                                                     if(((__FLAG__) & RCC_CRS_FLAG_ERROR_MASK) != 0U) \
 | |
|                                                     { \
 | |
|                                                       WRITE_REG(CRS->ICR, CRS_ICR_ERRC | \
 | |
|                                                                 ((__FLAG__) & ~RCC_CRS_FLAG_ERROR_MASK)); \
 | |
|                                                     } \
 | |
|                                                     else \
 | |
|                                                     { \
 | |
|                                                       WRITE_REG(CRS->ICR, (__FLAG__)); \
 | |
|                                                     } \
 | |
|                                                   } while(0)
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup RCCEx_CRS_Extended_Features RCCEx CRS Extended Features
 | |
|   * @{
 | |
|   */
 | |
| /**
 | |
|   * @brief  Enable the oscillator clock for frequency error counter.
 | |
|   * @note   when the CEN bit is set the CRS_CFGR register becomes write-protected.
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_CRS_FREQ_ERROR_COUNTER_ENABLE()  SET_BIT(CRS->CR, CRS_CR_CEN)
 | |
| 
 | |
| /**
 | |
|   * @brief  Disable the oscillator clock for frequency error counter.
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_CRS_FREQ_ERROR_COUNTER_DISABLE() CLEAR_BIT(CRS->CR, CRS_CR_CEN)
 | |
| 
 | |
| /**
 | |
|   * @brief  Enable the automatic hardware adjustment of TRIM bits.
 | |
|   * @note   When the AUTOTRIMEN bit is set the CRS_CFGR register becomes write-protected.
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_CRS_AUTOMATIC_CALIB_ENABLE()     SET_BIT(CRS->CR, CRS_CR_AUTOTRIMEN)
 | |
| 
 | |
| /**
 | |
|   * @brief  Enable or disable the automatic hardware adjustment of TRIM bits.
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_CRS_AUTOMATIC_CALIB_DISABLE()    CLEAR_BIT(CRS->CR, CRS_CR_AUTOTRIMEN)
 | |
| 
 | |
| /**
 | |
|   * @brief  Macro to calculate reload value to be set in CRS register according to target and sync frequencies
 | |
|   * @note   The RELOAD value should be selected according to the ratio between the target frequency and the frequency
 | |
|   *             of the synchronization source after prescaling. It is then decreased by one in order to
 | |
|   *             reach the expected synchronization on the zero value. The formula is the following:
 | |
|   *             RELOAD = (fTARGET / fSYNC) -1
 | |
|   * @param  __FTARGET__ Target frequency (value in Hz)
 | |
|   * @param  __FSYNC__ Synchronization signal frequency (value in Hz)
 | |
|   * @retval None
 | |
|   */
 | |
| #define __HAL_RCC_CRS_RELOADVALUE_CALCULATE(__FTARGET__, __FSYNC__)  (((__FTARGET__) / (__FSYNC__)) - 1U)
 | |
| 
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #endif /* CRS */
 | |
| 
 | |
| /* Private constants ---------------------------------------------------------*/
 | |
| /** @addtogroup RCCEx_Private_Constants
 | |
|   * @{
 | |
|   */
 | |
| /* Define used for IS_RCC_* macros below */
 | |
| #if defined(SDMMC2)
 | |
| #define RCC_PERIPHCLOCK_ALL             (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | \
 | |
|                                          RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 | RCC_PERIPHCLK_USART6 | \
 | |
|                                          RCC_PERIPHCLK_UART7 | RCC_PERIPHCLK_UART8 | RCC_PERIPHCLK_UART9 | \
 | |
|                                          RCC_PERIPHCLK_USART10 | RCC_PERIPHCLK_USART11 | RCC_PERIPHCLK_UART12 | \
 | |
|                                          RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | \
 | |
|                                          RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_I2C4 | RCC_PERIPHCLK_I3C1 | \
 | |
|                                          RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | \
 | |
|                                          RCC_PERIPHCLK_LPTIM3 | RCC_PERIPHCLK_LPTIM4 | RCC_PERIPHCLK_LPTIM5 | \
 | |
|                                          RCC_PERIPHCLK_LPTIM6 | RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 | \
 | |
|                                          RCC_PERIPHCLK_ADCDAC | RCC_PERIPHCLK_DAC_LP | RCC_PERIPHCLK_RNG | \
 | |
|                                          RCC_PERIPHCLK_RTC | RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_SDMMC2 | \
 | |
|                                          RCC_PERIPHCLK_SPI1 |  RCC_PERIPHCLK_SPI2 | \
 | |
|                                          RCC_PERIPHCLK_SPI3 | RCC_PERIPHCLK_SPI4 | RCC_PERIPHCLK_SPI5 | \
 | |
|                                          RCC_PERIPHCLK_SPI6 | RCC_PERIPHCLK_OSPI | RCC_PERIPHCLK_FDCAN | \
 | |
|                                          RCC_PERIPHCLK_CEC | RCC_PERIPHCLK_USB | RCC_PERIPHCLK_CKPER)
 | |
| #elif defined(UART7)
 | |
| #define RCC_PERIPHCLOCK_ALL             (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | \
 | |
|                                          RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 |  RCC_PERIPHCLK_USART6 | \
 | |
|                                          RCC_PERIPHCLK_UART7 | RCC_PERIPHCLK_UART8 |  RCC_PERIPHCLK_UART9 | \
 | |
|                                          RCC_PERIPHCLK_USART10 | RCC_PERIPHCLK_USART11 | RCC_PERIPHCLK_UART12 | \
 | |
|                                          RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 |  RCC_PERIPHCLK_I2C2 | \
 | |
|                                          RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_I2C4 | RCC_PERIPHCLK_I3C1 | \
 | |
|                                          RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | \
 | |
|                                          RCC_PERIPHCLK_LPTIM3 | RCC_PERIPHCLK_LPTIM4 | RCC_PERIPHCLK_LPTIM5 | \
 | |
|                                          RCC_PERIPHCLK_LPTIM6 | RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 | \
 | |
|                                          RCC_PERIPHCLK_ADCDAC | RCC_PERIPHCLK_DAC_LP | RCC_PERIPHCLK_RNG | \
 | |
|                                          RCC_PERIPHCLK_RTC |  RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_SPI1 | \
 | |
|                                          RCC_PERIPHCLK_SPI2 | RCC_PERIPHCLK_SPI3 | RCC_PERIPHCLK_SPI4 | \
 | |
|                                          RCC_PERIPHCLK_SPI5 | RCC_PERIPHCLK_SPI6 | RCC_PERIPHCLK_OSPI | \
 | |
|                                          RCC_PERIPHCLK_FDCAN | RCC_PERIPHCLK_CEC | RCC_PERIPHCLK_USB | \
 | |
|                                          RCC_PERIPHCLK_CKPER)
 | |
| #elif defined(USART6)
 | |
| #define RCC_PERIPHCLOCK_ALL             (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | \
 | |
|                                          RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 |  RCC_PERIPHCLK_USART6 | \
 | |
|                                          RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 |  RCC_PERIPHCLK_I2C2 | \
 | |
|                                          RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_I3C1 | RCC_PERIPHCLK_I3C2 | \
 | |
|                                          RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | \
 | |
|                                          RCC_PERIPHCLK_ADCDAC | RCC_PERIPHCLK_DAC_LP | RCC_PERIPHCLK_RNG | \
 | |
|                                          RCC_PERIPHCLK_RTC |  RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_SPI1 | \
 | |
|                                          RCC_PERIPHCLK_SPI2 | RCC_PERIPHCLK_SPI3 | RCC_PERIPHCLK_SPI4 | \
 | |
|                                          RCC_PERIPHCLK_OSPI | RCC_PERIPHCLK_FDCAN | RCC_PERIPHCLK_CEC | \
 | |
|                                          RCC_PERIPHCLK_USB | RCC_PERIPHCLK_CKPER)
 | |
| #else
 | |
| #define RCC_PERIPHCLOCK_ALL             (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | \
 | |
|                                          RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | \
 | |
|                                          RCC_PERIPHCLK_I3C1 | RCC_PERIPHCLK_I3C2 | RCC_PERIPHCLK_TIM | \
 | |
|                                          RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_ADCDAC | \
 | |
|                                          RCC_PERIPHCLK_DAC_LP | RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_RTC | \
 | |
|                                          RCC_PERIPHCLK_SPI1 | RCC_PERIPHCLK_SPI2 | RCC_PERIPHCLK_SPI3 | \
 | |
|                                          RCC_PERIPHCLK_FDCAN |  RCC_PERIPHCLK_USB | RCC_PERIPHCLK_CKPER)
 | |
| #endif /*FDCAN2 && SDMMC2 */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Private macros ------------------------------------------------------------*/
 | |
| /** @addtogroup RCCEx_Private_Macros
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| #define IS_RCC_PLL2_SOURCE(SOURCE) (((SOURCE) == RCC_PLL2_SOURCE_CSI)  || \
 | |
|                                     ((SOURCE) == RCC_PLL2_SOURCE_HSI)  || \
 | |
|                                     ((SOURCE) == RCC_PLL2_SOURCE_HSE))
 | |
| 
 | |
| #define IS_RCC_PLL2_DIVM_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 63U))
 | |
| #define IS_RCC_PLL2_MULN_VALUE(VALUE) ((4U <= (VALUE)) && ((VALUE) <= 512U))
 | |
| #define IS_RCC_PLL2_DIVP_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
 | |
| #define IS_RCC_PLL2_DIVQ_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
 | |
| #define IS_RCC_PLL2_DIVR_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
 | |
| 
 | |
| #define IS_RCC_PLL2_FRACN_VALUE(VALUE) ((VALUE) <= 8191U)
 | |
| 
 | |
| #define IS_RCC_PLL2_VCIRGE_VALUE(VALUE) (((VALUE) == RCC_PLL2_VCIRANGE_0) || \
 | |
|                                          ((VALUE) == RCC_PLL2_VCIRANGE_1) || \
 | |
|                                          ((VALUE) == RCC_PLL2_VCIRANGE_2) || \
 | |
|                                          ((VALUE) == RCC_PLL2_VCIRANGE_3))
 | |
| 
 | |
| #define IS_RCC_PLL2_VCORGE_VALUE(VALUE) (((VALUE) == RCC_PLL2_VCORANGE_WIDE) || ((VALUE) == RCC_PLL2_VCORANGE_MEDIUM))
 | |
| 
 | |
| #define IS_RCC_PLL2_CLOCKOUT_VALUE(VALUE) ((0x00010000U <= (VALUE)) && ((VALUE) <= 0x00070000U))
 | |
| 
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define IS_RCC_PLL3_SOURCE(SOURCE) (((SOURCE) == RCC_PLL3_SOURCE_CSI)  || \
 | |
|                                     ((SOURCE) == RCC_PLL3_SOURCE_HSI)  || \
 | |
|                                     ((SOURCE) == RCC_PLL3_SOURCE_HSE))
 | |
| 
 | |
| #define IS_RCC_PLL3_VCIRGE_VALUE(VALUE) (((VALUE) == RCC_PLL3_VCIRANGE_0) || \
 | |
|                                          ((VALUE) == RCC_PLL3_VCIRANGE_1) || \
 | |
|                                          ((VALUE) == RCC_PLL3_VCIRANGE_2) || \
 | |
|                                          ((VALUE) == RCC_PLL3_VCIRANGE_3))
 | |
| 
 | |
| #define IS_RCC_PLL3_DIVM_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 63U))
 | |
| #define IS_RCC_PLL3_MULN_VALUE(VALUE) ((4U <= (VALUE)) && ((VALUE) <= 512U))
 | |
| #define IS_RCC_PLL3_DIVP_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
 | |
| #define IS_RCC_PLL3_DIVQ_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
 | |
| #define IS_RCC_PLL3_DIVR_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
 | |
| 
 | |
| #define IS_RCC_PLL3_FRACN_VALUE(VALUE) ((VALUE) <= 8191U)
 | |
| 
 | |
| #define IS_RCC_PLL3_VCORGE_VALUE(VALUE) (((VALUE) == RCC_PLL3_VCORANGE_WIDE) || ((VALUE) == RCC_PLL3_VCORANGE_MEDIUM))
 | |
| 
 | |
| #define IS_RCC_PLL3_CLOCKOUT_VALUE(VALUE) ((0x00010000U <= (VALUE)) && ((VALUE) <= 0x00070000U))
 | |
| 
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
| #define IS_RCC_LSCOSOURCE(__SOURCE__) (((__SOURCE__) == RCC_LSCOSOURCE_LSI) || \
 | |
|                                        ((__SOURCE__) == RCC_LSCOSOURCE_LSE))
 | |
| 
 | |
| #define IS_RCC_CLKPSOURCE(SOURCE)   (((SOURCE) == RCC_CLKPSOURCE_HSI)  || \
 | |
|                                      ((SOURCE) == RCC_CLKPSOURCE_CSI) || \
 | |
|                                      ((SOURCE) == RCC_CLKPSOURCE_HSE))
 | |
| 
 | |
| #define IS_RCC_PERIPHCLOCK(__SELECTION__)  ((((__SELECTION__) & RCC_PERIPHCLOCK_ALL) != ((uint64_t)0x00)) && \
 | |
|                                             (((__SELECTION__) & ~RCC_PERIPHCLOCK_ALL) == ((uint64_t)0x00)))
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define IS_RCC_USART1CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_USART1CLKSOURCE_PCLK2) || \
 | |
|    ((__SOURCE__) == RCC_USART1CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_USART1CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_USART1CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART1CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART1CLKSOURCE_LSE))
 | |
| 
 | |
| #define IS_RCC_USART2CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_USART2CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_USART2CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_USART2CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_USART2CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART2CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART2CLKSOURCE_LSE))
 | |
| 
 | |
| #define IS_RCC_USART3CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_USART3CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_USART3CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_USART3CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_USART3CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART3CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART3CLKSOURCE_LSE))
 | |
| 
 | |
| #else
 | |
| #define IS_RCC_USART1CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_USART1CLKSOURCE_PCLK2) || \
 | |
|    ((__SOURCE__) == RCC_USART1CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_USART1CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART1CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART1CLKSOURCE_LSE))
 | |
| 
 | |
| #define IS_RCC_USART2CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_USART2CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_USART2CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_USART2CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART2CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART2CLKSOURCE_LSE))
 | |
| 
 | |
| #define IS_RCC_USART3CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_USART3CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_USART3CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_USART3CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART3CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART3CLKSOURCE_LSE))
 | |
| 
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
| #if defined(UART4)
 | |
| #define IS_RCC_UART4CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_UART4CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_UART4CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_UART4CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_UART4CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_UART4CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_UART4CLKSOURCE_LSE))
 | |
| #endif /* UART4 */
 | |
| 
 | |
| #if defined(UART5)
 | |
| #define IS_RCC_UART5CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_UART5CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_UART5CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_UART5CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_UART5CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_UART5CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_UART5CLKSOURCE_LSE))
 | |
| #endif /* UART5 */
 | |
| 
 | |
| #if defined(USART6)
 | |
| #define IS_RCC_USART6CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_USART6CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_USART6CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_USART6CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_USART6CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART6CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART6CLKSOURCE_LSE))
 | |
| #endif /* USART6 */
 | |
| 
 | |
| #if defined(UART7)
 | |
| #define IS_RCC_UART7CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_UART7CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_UART7CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_UART7CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_UART7CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_UART7CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_UART7CLKSOURCE_LSE))
 | |
| #endif /* UART7 */
 | |
| 
 | |
| #if defined(UART8)
 | |
| #define IS_RCC_UART8CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_UART8CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_UART8CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_UART8CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_UART8CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_UART8CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_UART8CLKSOURCE_LSE))
 | |
| #endif /* UART8 */
 | |
| 
 | |
| #if defined(UART9)
 | |
| #define IS_RCC_UART9CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_UART9CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_UART9CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_UART9CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_UART9CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_UART9CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_UART9CLKSOURCE_LSE))
 | |
| #endif /* UART9 */
 | |
| 
 | |
| #if defined(USART10)
 | |
| #define IS_RCC_USART10CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_USART10CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_USART10CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_USART10CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_USART10CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART10CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART10CLKSOURCE_LSE))
 | |
| #endif /* USART10 */
 | |
| 
 | |
| #if defined(USART11)
 | |
| #define IS_RCC_USART11CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_USART11CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_USART11CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_USART11CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_USART11CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART11CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_USART11CLKSOURCE_LSE))
 | |
| #endif /* USART11 */
 | |
| 
 | |
| #if defined(UART12)
 | |
| #define IS_RCC_UART12CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_UART12CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_UART12CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_UART12CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_UART12CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_UART12CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_UART12CLKSOURCE_LSE))
 | |
| #endif /* UART12 */
 | |
| 
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define IS_RCC_LPUART1CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_LPUART1CLKSOURCE_PCLK3) || \
 | |
|    ((__SOURCE__) == RCC_LPUART1CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_LPUART1CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_LPUART1CLKSOURCE_HSI) || \
 | |
|    ((__SOURCE__) == RCC_LPUART1CLKSOURCE_LSE) || \
 | |
|    ((__SOURCE__) == RCC_LPUART1CLKSOURCE_CSI))
 | |
| 
 | |
| #else
 | |
| #define IS_RCC_LPUART1CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_LPUART1CLKSOURCE_PCLK3) || \
 | |
|    ((__SOURCE__) == RCC_LPUART1CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_LPUART1CLKSOURCE_HSI) || \
 | |
|    ((__SOURCE__) == RCC_LPUART1CLKSOURCE_LSE) || \
 | |
|    ((__SOURCE__) == RCC_LPUART1CLKSOURCE_CSI))
 | |
| 
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define IS_RCC_I2C1CLKSOURCE(__SOURCE__)   \
 | |
|   (((__SOURCE__) == RCC_I2C1CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_I2C1CLKSOURCE_PLL3R) || \
 | |
|    ((__SOURCE__) == RCC_I2C1CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_I2C1CLKSOURCE_CSI))
 | |
| 
 | |
| #define IS_RCC_I2C2CLKSOURCE(__SOURCE__)   \
 | |
|   (((__SOURCE__) == RCC_I2C2CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_I2C2CLKSOURCE_PLL3R) || \
 | |
|    ((__SOURCE__) == RCC_I2C2CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_I2C2CLKSOURCE_CSI))
 | |
| 
 | |
| #else
 | |
| #define IS_RCC_I2C1CLKSOURCE(__SOURCE__)   \
 | |
|   (((__SOURCE__) == RCC_I2C1CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_I2C1CLKSOURCE_PLL2R) || \
 | |
|    ((__SOURCE__) == RCC_I2C1CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_I2C1CLKSOURCE_CSI))
 | |
| 
 | |
| #define IS_RCC_I2C2CLKSOURCE(__SOURCE__)   \
 | |
|   (((__SOURCE__) == RCC_I2C2CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_I2C2CLKSOURCE_PLL2R) || \
 | |
|    ((__SOURCE__) == RCC_I2C2CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_I2C2CLKSOURCE_CSI))
 | |
| 
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
| 
 | |
| #if defined(I2C3)
 | |
| #define IS_RCC_I2C3CLKSOURCE(__SOURCE__)   \
 | |
|   (((__SOURCE__) == RCC_I2C3CLKSOURCE_PCLK3) || \
 | |
|    ((__SOURCE__) == RCC_I2C3CLKSOURCE_PLL3R) || \
 | |
|    ((__SOURCE__) == RCC_I2C3CLKSOURCE_HSI  ) || \
 | |
|    ((__SOURCE__) == RCC_I2C3CLKSOURCE_CSI))
 | |
| #endif /* I2C3 */
 | |
| 
 | |
| #if defined(I2C4)
 | |
| #define IS_RCC_I2C4CLKSOURCE(__SOURCE__)   \
 | |
|   (((__SOURCE__) == RCC_I2C4CLKSOURCE_PCLK3) || \
 | |
|    ((__SOURCE__) == RCC_I2C4CLKSOURCE_PLL3R) || \
 | |
|    ((__SOURCE__) == RCC_I2C4CLKSOURCE_HSI  ) || \
 | |
|    ((__SOURCE__) == RCC_I2C4CLKSOURCE_CSI))
 | |
| #endif /* I2C4 */
 | |
| 
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define IS_RCC_I3C1CLKSOURCE(__SOURCE__)   \
 | |
|   (((__SOURCE__) == RCC_I3C1CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_I3C1CLKSOURCE_PLL3R) || \
 | |
|    ((__SOURCE__) == RCC_I3C1CLKSOURCE_HSI))
 | |
| 
 | |
| #else
 | |
| #define IS_RCC_I3C1CLKSOURCE(__SOURCE__)   \
 | |
|   (((__SOURCE__) == RCC_I3C1CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_I3C1CLKSOURCE_PLL2R) || \
 | |
|    ((__SOURCE__) == RCC_I3C1CLKSOURCE_HSI))
 | |
| 
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
| #if defined(I3C2)
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define IS_RCC_I3C2CLKSOURCE(__SOURCE__)   \
 | |
|   (((__SOURCE__) == RCC_I3C2CLKSOURCE_PCLK3) || \
 | |
|    ((__SOURCE__) == RCC_I3C2CLKSOURCE_PLL3R) || \
 | |
|    ((__SOURCE__) == RCC_I3C2CLKSOURCE_HSI))
 | |
| #else
 | |
| #define IS_RCC_I3C2CLKSOURCE(__SOURCE__)   \
 | |
|   (((__SOURCE__) == RCC_I3C2CLKSOURCE_PCLK3) || \
 | |
|    ((__SOURCE__) == RCC_I3C2CLKSOURCE_PLL2R) || \
 | |
|    ((__SOURCE__) == RCC_I3C2CLKSOURCE_HSI))
 | |
| #endif /* PLL3 */
 | |
| #endif /* I3C2 */
 | |
| 
 | |
| #if defined(SAI1)
 | |
| #define IS_RCC_SAI1CLK(__SOURCE__)   \
 | |
|   (((__SOURCE__) == RCC_SAI1CLKSOURCE_PLL1Q)|| \
 | |
|    ((__SOURCE__) == RCC_SAI1CLKSOURCE_PLL2P)|| \
 | |
|    ((__SOURCE__) == RCC_SAI1CLKSOURCE_PLL3P)|| \
 | |
|    ((__SOURCE__) == RCC_SAI1CLKSOURCE_PIN)  || \
 | |
|    ((__SOURCE__) == RCC_SAI1CLKSOURCE_CLKP))
 | |
| 
 | |
| #endif /* SAI1 */
 | |
| 
 | |
| #if defined(SAI2)
 | |
| #define IS_RCC_SAI2CLK(__SOURCE__)   \
 | |
|   (((__SOURCE__) == RCC_SAI2CLKSOURCE_PLL1Q)|| \
 | |
|    ((__SOURCE__) == RCC_SAI2CLKSOURCE_PLL2P)|| \
 | |
|    ((__SOURCE__) == RCC_SAI2CLKSOURCE_PLL3P)|| \
 | |
|    ((__SOURCE__) == RCC_SAI2CLKSOURCE_PIN)  || \
 | |
|    ((__SOURCE__) == RCC_SAI2CLKSOURCE_CLKP))
 | |
| #endif /* SAI2 */
 | |
| 
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define IS_RCC_LPTIM1CLK(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_LPTIM1CLKSOURCE_PCLK3) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM1CLKSOURCE_PLL2P) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM1CLKSOURCE_PLL3R) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM1CLKSOURCE_LSE)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM1CLKSOURCE_LSI)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM1CLKSOURCE_CLKP))
 | |
| 
 | |
| #define IS_RCC_LPTIM2CLK(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_LPTIM2CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM2CLKSOURCE_PLL2P) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM2CLKSOURCE_PLL3R) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM2CLKSOURCE_LSE)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM2CLKSOURCE_LSI)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM2CLKSOURCE_CLKP))
 | |
| 
 | |
| #else
 | |
| #define IS_RCC_LPTIM1CLK(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_LPTIM1CLKSOURCE_PCLK3) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM1CLKSOURCE_PLL2P)  || \
 | |
|    ((__SOURCE__) == RCC_LPTIM1CLKSOURCE_LSE)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM1CLKSOURCE_LSI)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM1CLKSOURCE_CLKP))
 | |
| 
 | |
| #define IS_RCC_LPTIM2CLK(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_LPTIM2CLKSOURCE_PCLK1) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM2CLKSOURCE_PLL2P)  || \
 | |
|    ((__SOURCE__) == RCC_LPTIM2CLKSOURCE_LSE)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM2CLKSOURCE_LSI)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM2CLKSOURCE_CLKP))
 | |
| 
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
| #if defined(LPTIM3)
 | |
| #define IS_RCC_LPTIM3CLK(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_LPTIM3CLKSOURCE_PCLK3) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM3CLKSOURCE_PLL2P)  || \
 | |
|    ((__SOURCE__) == RCC_LPTIM3CLKSOURCE_PLL3R)  || \
 | |
|    ((__SOURCE__) == RCC_LPTIM3CLKSOURCE_LSE)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM3CLKSOURCE_LSI)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM3CLKSOURCE_CLKP))
 | |
| 
 | |
| #endif /* LPTIM3 */
 | |
| 
 | |
| #if defined(LPTIM4)
 | |
| #define IS_RCC_LPTIM4CLK(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_LPTIM4CLKSOURCE_PCLK3) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM4CLKSOURCE_PLL2P) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM4CLKSOURCE_PLL3R) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM4CLKSOURCE_LSE)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM4CLKSOURCE_LSI)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM4CLKSOURCE_CLKP))
 | |
| 
 | |
| #endif /* LPTIM4 */
 | |
| 
 | |
| #if defined(LPTIM5)
 | |
| #define IS_RCC_LPTIM5CLK(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_LPTIM5CLKSOURCE_PCLK3) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM5CLKSOURCE_PLL2P) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM5CLKSOURCE_PLL3R) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM5CLKSOURCE_LSE)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM5CLKSOURCE_LSI)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM5CLKSOURCE_CLKP))
 | |
| #endif /* LPTIM5 */
 | |
| 
 | |
| #if defined(LPTIM6)
 | |
| #define IS_RCC_LPTIM6CLK(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_LPTIM6CLKSOURCE_PCLK3) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM6CLKSOURCE_PLL2P) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM6CLKSOURCE_PLL3R) || \
 | |
|    ((__SOURCE__) == RCC_LPTIM6CLKSOURCE_LSE)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM6CLKSOURCE_LSI)   || \
 | |
|    ((__SOURCE__) == RCC_LPTIM6CLKSOURCE_CLKP))
 | |
| #endif /* LPTIM6 */
 | |
| 
 | |
| #define IS_RCC_FDCANCLK(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_FDCANCLKSOURCE_HSE)   || \
 | |
|    ((__SOURCE__) == RCC_FDCANCLKSOURCE_PLL1Q) || \
 | |
|    ((__SOURCE__) == RCC_FDCANCLKSOURCE_PLL2Q))
 | |
| 
 | |
| #if defined(SDMMC1)
 | |
| #define IS_RCC_SDMMC1CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_SDMMC1CLKSOURCE_PLL1Q) || \
 | |
|    ((__SOURCE__) == RCC_SDMMC1CLKSOURCE_PLL2R))
 | |
| #endif /* SDMMC1 */
 | |
| 
 | |
| #if defined(SDMMC2)
 | |
| #define IS_RCC_SDMMC2CLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_SDMMC2CLKSOURCE_PLL1Q) || \
 | |
|    ((__SOURCE__) == RCC_SDMMC2CLKSOURCE_PLL2R))
 | |
| #endif /*SDMMC2*/
 | |
| 
 | |
| #define IS_RCC_RNGCLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_RNGCLKSOURCE_HSI48)  || \
 | |
|    ((__SOURCE__) == RCC_RNGCLKSOURCE_PLL1Q)  || \
 | |
|    ((__SOURCE__) == RCC_RNGCLKSOURCE_LSE)    || \
 | |
|    ((__SOURCE__) == RCC_RNGCLKSOURCE_LSI))
 | |
| 
 | |
| #define IS_RCC_ADCDACCLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_ADCDACCLKSOURCE_HCLK)   || \
 | |
|    ((__SOURCE__) == RCC_ADCDACCLKSOURCE_SYSCLK) || \
 | |
|    ((__SOURCE__) == RCC_ADCDACCLKSOURCE_PLL2R)  || \
 | |
|    ((__SOURCE__) == RCC_ADCDACCLKSOURCE_HSE)    || \
 | |
|    ((__SOURCE__) == RCC_ADCDACCLKSOURCE_HSI)    || \
 | |
|    ((__SOURCE__) == RCC_ADCDACCLKSOURCE_CSI))
 | |
| 
 | |
| #define IS_RCC_DACLPCLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_DACLPCLKSOURCE_LSI)  || \
 | |
|    ((__SOURCE__) == RCC_DACLPCLKSOURCE_LSE))
 | |
| 
 | |
| #if defined(OCTOSPI1)
 | |
| #define IS_RCC_OSPICLKSOURCE(__SOURCE__)  \
 | |
|   (((__SOURCE__) == RCC_OSPICLKSOURCE_HCLK)  || \
 | |
|    ((__SOURCE__) == RCC_OSPICLKSOURCE_PLL1Q) || \
 | |
|    ((__SOURCE__) == RCC_OSPICLKSOURCE_PLL2R) || \
 | |
|    ((__SOURCE__) == RCC_OSPICLKSOURCE_CLKP))
 | |
| #endif /* OCTOSPI1 */
 | |
| 
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define IS_RCC_SPI1CLKSOURCE(__SOURCE__) \
 | |
|   (((__SOURCE__) == RCC_SPI1CLKSOURCE_PLL1Q) || \
 | |
|    ((__SOURCE__) == RCC_SPI1CLKSOURCE_PLL2P) || \
 | |
|    ((__SOURCE__) == RCC_SPI1CLKSOURCE_PLL3P) || \
 | |
|    ((__SOURCE__) == RCC_SPI1CLKSOURCE_PIN)   || \
 | |
|    ((__SOURCE__) == RCC_SPI1CLKSOURCE_CLKP))
 | |
| 
 | |
| #define IS_RCC_SPI2CLKSOURCE(__SOURCE__) \
 | |
|   (((__SOURCE__) == RCC_SPI2CLKSOURCE_PLL1Q) || \
 | |
|    ((__SOURCE__) == RCC_SPI2CLKSOURCE_PLL2P) || \
 | |
|    ((__SOURCE__) == RCC_SPI2CLKSOURCE_PLL3P) || \
 | |
|    ((__SOURCE__) == RCC_SPI2CLKSOURCE_PIN)   || \
 | |
|    ((__SOURCE__) == RCC_SPI2CLKSOURCE_CLKP))
 | |
| 
 | |
| #define IS_RCC_SPI3CLKSOURCE(__SOURCE__) \
 | |
|   (((__SOURCE__) == RCC_SPI3CLKSOURCE_PLL1Q) || \
 | |
|    ((__SOURCE__) == RCC_SPI3CLKSOURCE_PLL2P) || \
 | |
|    ((__SOURCE__) == RCC_SPI3CLKSOURCE_PLL3P) || \
 | |
|    ((__SOURCE__) == RCC_SPI3CLKSOURCE_PIN)  || \
 | |
|    ((__SOURCE__) == RCC_SPI3CLKSOURCE_CLKP))
 | |
| #else
 | |
| #define IS_RCC_SPI1CLKSOURCE(__SOURCE__) \
 | |
|   (((__SOURCE__) == RCC_SPI1CLKSOURCE_PLL1Q) || \
 | |
|    ((__SOURCE__) == RCC_SPI1CLKSOURCE_PLL2P) || \
 | |
|    ((__SOURCE__) == RCC_SPI1CLKSOURCE_PIN)   || \
 | |
|    ((__SOURCE__) == RCC_SPI1CLKSOURCE_CLKP))
 | |
| 
 | |
| #define IS_RCC_SPI2CLKSOURCE(__SOURCE__) \
 | |
|   (((__SOURCE__) == RCC_SPI2CLKSOURCE_PLL1Q) || \
 | |
|    ((__SOURCE__) == RCC_SPI2CLKSOURCE_PLL2P) || \
 | |
|    ((__SOURCE__) == RCC_SPI2CLKSOURCE_PIN)   || \
 | |
|    ((__SOURCE__) == RCC_SPI2CLKSOURCE_CLKP))
 | |
| 
 | |
| #define IS_RCC_SPI3CLKSOURCE(__SOURCE__) \
 | |
|   (((__SOURCE__) == RCC_SPI3CLKSOURCE_PLL1Q) || \
 | |
|    ((__SOURCE__) == RCC_SPI3CLKSOURCE_PLL2P) || \
 | |
|    ((__SOURCE__) == RCC_SPI3CLKSOURCE_PIN)  || \
 | |
|    ((__SOURCE__) == RCC_SPI3CLKSOURCE_CLKP))
 | |
| 
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
| #if defined(SPI4)
 | |
| #define IS_RCC_SPI4CLKSOURCE(__SOURCE__) \
 | |
|   (((__SOURCE__) == RCC_SPI4CLKSOURCE_PCLK2) || \
 | |
|    ((__SOURCE__) == RCC_SPI4CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_SPI4CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_SPI4CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_SPI4CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_SPI4CLKSOURCE_HSE))
 | |
| #endif /* SPI4 */
 | |
| 
 | |
| #if defined(SPI5)
 | |
| #define IS_RCC_SPI5CLKSOURCE(__SOURCE__) \
 | |
|   (((__SOURCE__) == RCC_SPI5CLKSOURCE_PCLK3) || \
 | |
|    ((__SOURCE__) == RCC_SPI5CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_SPI5CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_SPI5CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_SPI5CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_SPI5CLKSOURCE_HSE))
 | |
| #endif /* SPI5 */
 | |
| 
 | |
| #if defined(SPI6)
 | |
| #define IS_RCC_SPI6CLKSOURCE(__SOURCE__) \
 | |
|   (((__SOURCE__) == RCC_SPI6CLKSOURCE_PCLK2) || \
 | |
|    ((__SOURCE__) == RCC_SPI6CLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_SPI6CLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_SPI6CLKSOURCE_HSI)   || \
 | |
|    ((__SOURCE__) == RCC_SPI6CLKSOURCE_CSI)   || \
 | |
|    ((__SOURCE__) == RCC_SPI6CLKSOURCE_HSE))
 | |
| #endif /* SPI6 */
 | |
| 
 | |
| #if defined(USB_DRD_FS)
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| #define IS_RCC_USBCLKSOURCE(__SOURCE__) \
 | |
|   (((__SOURCE__) == RCC_USBCLKSOURCE_PLL1Q) || \
 | |
|    ((__SOURCE__) == RCC_USBCLKSOURCE_PLL3Q) || \
 | |
|    ((__SOURCE__) == RCC_USBCLKSOURCE_HSI48))
 | |
| #else
 | |
| #define IS_RCC_USBCLKSOURCE(__SOURCE__) \
 | |
|   (((__SOURCE__) == RCC_USBCLKSOURCE_PLL1Q) || \
 | |
|    ((__SOURCE__) == RCC_USBCLKSOURCE_PLL2Q) || \
 | |
|    ((__SOURCE__) == RCC_USBCLKSOURCE_HSI48))
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| #endif /* USB_DRD_FS */
 | |
| 
 | |
| #if defined(CEC)
 | |
| #define IS_RCC_CECCLKSOURCE(__SOURCE__) \
 | |
|   (((__SOURCE__) == RCC_CECCLKSOURCE_LSE) || \
 | |
|    ((__SOURCE__) == RCC_CECCLKSOURCE_LSI) || \
 | |
|    ((__SOURCE__) == RCC_CECCLKSOURCE_CSI_DIV122))
 | |
| #endif /*CEC*/
 | |
| 
 | |
| #define IS_RCC_TIMPRES(VALUE)  \
 | |
|   (((VALUE) == RCC_TIMPRES_DEACTIVATED) || \
 | |
|    ((VALUE) == RCC_TIMPRES_ACTIVATED))
 | |
| 
 | |
| #if defined(CRS)
 | |
| #if defined(USB_DRD_FS)
 | |
| #define IS_RCC_CRS_SYNC_SOURCE(__SOURCE__) (((__SOURCE__) == RCC_CRS_SYNC_SOURCE_GPIO) || \
 | |
|                                             ((__SOURCE__) == RCC_CRS_SYNC_SOURCE_LSE) || \
 | |
|                                             ((__SOURCE__) == RCC_CRS_SYNC_SOURCE_USB))
 | |
| #endif /* USB_DRD_FS */
 | |
| 
 | |
| #define IS_RCC_CRS_SYNC_DIV(__DIV__)       (((__DIV__) == RCC_CRS_SYNC_DIV1) || ((__DIV__) == RCC_CRS_SYNC_DIV2) || \
 | |
|                                             ((__DIV__) == RCC_CRS_SYNC_DIV4) || ((__DIV__) == RCC_CRS_SYNC_DIV8) || \
 | |
|                                             ((__DIV__) == RCC_CRS_SYNC_DIV16) || ((__DIV__) == RCC_CRS_SYNC_DIV32) || \
 | |
|                                             ((__DIV__) == RCC_CRS_SYNC_DIV64) || ((__DIV__) == RCC_CRS_SYNC_DIV128))
 | |
| 
 | |
| #define IS_RCC_CRS_SYNC_POLARITY(__POLARITY__) (((__POLARITY__) == RCC_CRS_SYNC_POLARITY_RISING) || \
 | |
|                                                 ((__POLARITY__) == RCC_CRS_SYNC_POLARITY_FALLING))
 | |
| 
 | |
| #define IS_RCC_CRS_RELOADVALUE(__VALUE__)  (((__VALUE__) <= 0xFFFFU))
 | |
| 
 | |
| #define IS_RCC_CRS_ERRORLIMIT(__VALUE__)   (((__VALUE__) <= 0xFFU))
 | |
| 
 | |
| #define IS_RCC_CRS_HSI48CALIBRATION(__VALUE__) (((__VALUE__) <= 0x7FU))
 | |
| 
 | |
| #define IS_RCC_CRS_FREQERRORDIR(__DIR__)   (((__DIR__) == RCC_CRS_FREQERRORDIR_UP) || \
 | |
|                                             ((__DIR__) == RCC_CRS_FREQERRORDIR_DOWN))
 | |
| 
 | |
| #endif /* CRS */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Exported functions --------------------------------------------------------*/
 | |
| /** @addtogroup RCCEx_Exported_Functions
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /** @addtogroup RCCEx_Exported_Functions_Group1
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(const RCC_PeriphCLKInitTypeDef  *pPeriphClkInit);
 | |
| void              HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef  *pPeriphClkInit);
 | |
| uint32_t          HAL_RCCEx_GetPeriphCLKFreq(uint64_t PeriphClk);
 | |
| void     HAL_RCCEx_GetPLL1ClockFreq(PLL1_ClocksTypeDef *pPLL1_Clocks);
 | |
| void     HAL_RCCEx_GetPLL2ClockFreq(PLL2_ClocksTypeDef *pPLL2_Clocks);
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| void     HAL_RCCEx_GetPLL3ClockFreq(PLL3_ClocksTypeDef *pPLL3_Clocks);
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @addtogroup RCCEx_Exported_Functions_Group2
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| HAL_StatusTypeDef HAL_RCCEx_EnablePLL2(RCC_PLL2InitTypeDef  *pPLL2Init);
 | |
| HAL_StatusTypeDef HAL_RCCEx_DisablePLL2(void);
 | |
| #if defined(RCC_CR_PLL3ON)
 | |
| HAL_StatusTypeDef HAL_RCCEx_EnablePLL3(RCC_PLL3InitTypeDef  *pPLL3Init);
 | |
| HAL_StatusTypeDef HAL_RCCEx_DisablePLL3(void);
 | |
| #endif /* RCC_CR_PLL3ON */
 | |
| 
 | |
| void              HAL_RCCEx_WakeUpStopCLKConfig(uint32_t WakeUpClk);
 | |
| void              HAL_RCCEx_KerWakeUpStopCLKConfig(uint32_t WakeUpClk);
 | |
| void              HAL_RCCEx_EnableLSECSS(void);
 | |
| void              HAL_RCCEx_DisableLSECSS(void);
 | |
| void              HAL_RCCEx_LSECSS_IRQHandler(void);
 | |
| void              HAL_RCCEx_LSECSS_Callback(void);
 | |
| void              HAL_RCCEx_EnableLSCO(uint32_t LSCOSource);
 | |
| void              HAL_RCCEx_DisableLSCO(void);
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #if defined(CRS)
 | |
| 
 | |
| /** @addtogroup RCCEx_Exported_Functions_Group3
 | |
|   * @{
 | |
|   */
 | |
| void              HAL_RCCEx_CRSConfig(const RCC_CRSInitTypeDef *pInit);
 | |
| void              HAL_RCCEx_CRSSoftwareSynchronizationGenerate(void);
 | |
| void              HAL_RCCEx_CRSGetSynchronizationInfo(RCC_CRSSynchroInfoTypeDef *pSynchroInfo);
 | |
| uint32_t          HAL_RCCEx_CRSWaitSynchronization(uint32_t Timeout);
 | |
| void              HAL_RCCEx_CRS_IRQHandler(void);
 | |
| void              HAL_RCCEx_CRS_SyncOkCallback(void);
 | |
| void              HAL_RCCEx_CRS_SyncWarnCallback(void);
 | |
| void              HAL_RCCEx_CRS_ExpectedSyncCallback(void);
 | |
| void              HAL_RCCEx_CRS_ErrorCallback(uint32_t Error);
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #endif /* CRS */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* __STM32H5xx_HAL_RCC_EX_H */
 | |
| 
 | 
