78#ifdef HAL_RCC_MODULE_ENABLED
87#define __MCO1_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
88#define MCO1_GPIO_PORT GPIOA
89#define MCO1_PIN GPIO_PIN_8
91#define __MCO2_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
92#define MCO2_GPIO_PORT GPIOC
93#define MCO2_PIN GPIO_PIN_9
224 if (RCC_OscInitStruct == NULL)
391 FlagStatus pwrclkchanged = RESET;
407 SET_BIT(PWR->CR, PWR_CR_DBP);
454 if (pwrclkchanged == SET)
492 WRITE_REG(RCC->PLLCFGR, (RCC_OscInitStruct->
PLL.
PLLSource | \
493 RCC_OscInitStruct->
PLL.
PLLM | \
494 (RCC_OscInitStruct->
PLL.
PLLN << RCC_PLLCFGR_PLLN_Pos) | \
495 (((RCC_OscInitStruct->
PLL.
PLLP >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos) | \
496 (RCC_OscInitStruct->
PLL.
PLLQ << RCC_PLLCFGR_PLLQ_Pos)));
540 pll_config = RCC->PLLCFGR;
541#if defined (RCC_PLLCFGR_PLLR)
543 (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->
PLL.
PLLSource) ||
544 (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->
PLL.
PLLM) << RCC_PLLCFGR_PLLM_Pos) ||
545 (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->
PLL.
PLLN) << RCC_PLLCFGR_PLLN_Pos) ||
546 (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->
PLL.
PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) ||
547 (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->
PLL.
PLLQ << RCC_PLLCFGR_PLLQ_Pos)) ||
548 (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->
PLL.
PLLR << RCC_PLLCFGR_PLLR_Pos)))
551 (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->
PLL.
PLLSource) ||
552 (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->
PLL.
PLLM) << RCC_PLLCFGR_PLLM_Pos) ||
553 (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->
PLL.
PLLN) << RCC_PLLCFGR_PLLN_Pos) ||
554 (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->
PLL.
PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) ||
555 (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->
PLL.
PLLQ << RCC_PLLCFGR_PLLQ_Pos)))
596 if (RCC_ClkInitStruct == NULL)
639 MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->
AHBCLKDivider);
708 MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->
APB1CLKDivider);
715 MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->
APB2CLKDivider) << 3U));
719 SystemCoreClock =
HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos];
798 MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO1 | RCC_CFGR_MCO1PRE), (RCC_MCOSource | RCC_MCODiv));
801#if defined(RCC_CFGR_MCO1EN)
802 __HAL_RCC_MCO1_ENABLE();
805#if defined(RCC_CFGR_MCO2)
822 MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO2 | RCC_CFGR_MCO2PRE), (RCC_MCOSource | (RCC_MCODiv << 3U)));
825#if defined(RCC_CFGR_MCO2EN)
826 __HAL_RCC_MCO2_ENABLE();
888 uint32_t pllvco = 0U;
890 uint32_t sysclockfreq = 0U;
893 switch (RCC->CFGR & RCC_CFGR_SWS)
895 case RCC_CFGR_SWS_HSI:
900 case RCC_CFGR_SWS_HSE:
905 case RCC_CFGR_SWS_PLL:
909 pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
913 pllvco = (uint32_t)((((uint64_t)
HSE_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
918 pllvco = (uint32_t)((((uint64_t)
HSI_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
920 pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1U) * 2U);
922 sysclockfreq = pllvco / pllp;
945 return SystemCoreClock;
957 return (
HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]);
969 return (
HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos]);
985 if ((RCC->CR & RCC_CR_HSEBYP) == RCC_CR_HSEBYP)
989 else if ((RCC->CR & RCC_CR_HSEON) == RCC_CR_HSEON)
999 if ((RCC->CR & RCC_CR_HSION) == RCC_CR_HSION)
1008 RCC_OscInitStruct->
HSICalibrationValue = (uint32_t)((RCC->CR & RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos);
1011 if ((RCC->BDCR & RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP)
1015 else if ((RCC->BDCR & RCC_BDCR_LSEON) == RCC_BDCR_LSEON)
1025 if ((RCC->CSR & RCC_CSR_LSION) == RCC_CSR_LSION)
1035 if ((RCC->CR & RCC_CR_PLLON) == RCC_CR_PLLON)
1043 RCC_OscInitStruct->
PLL.
PLLSource = (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC);
1044 RCC_OscInitStruct->
PLL.
PLLM = (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM);
1045 RCC_OscInitStruct->
PLL.
PLLN = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
1046 RCC_OscInitStruct->
PLL.
PLLP = (uint32_t)((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) + RCC_PLLCFGR_PLLP_0) << 1U) >> RCC_PLLCFGR_PLLP_Pos);
1047 RCC_OscInitStruct->
PLL.
PLLQ = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Pos);
1064 RCC_ClkInitStruct->
SYSCLKSource = (uint32_t)(RCC->CFGR & RCC_CFGR_SW);
1067 RCC_ClkInitStruct->
AHBCLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_HPRE);
1070 RCC_ClkInitStruct->
APB1CLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_PPRE1);
1073 RCC_ClkInitStruct->
APB2CLKDivider = (uint32_t)((RCC->CFGR & RCC_CFGR_PPRE2) >> 3U);
1076 *pFLatency = (uint32_t)(FLASH->ACR & FLASH_ACR_LATENCY);
#define IS_FLASH_LATENCY(LATENCY)
#define __HAL_FLASH_GET_LATENCY()
Get the FLASH Latency.
#define __HAL_FLASH_SET_LATENCY(__LATENCY__)
Set the FLASH Latency.
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
Initializes the GPIOx peripheral according to the specified parameters in the GPIO_Init.
#define GPIO_SPEED_FREQ_VERY_HIGH
HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
This function configures the source of the time base. The time source is configured to have 1ms time ...
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define PLL_TIMEOUT_VALUE
#define IS_RCC_PLLN_VALUE(VALUE)
#define IS_RCC_MCO2SOURCE(SOURCE)
#define __HAL_RCC_PWR_CLK_ENABLE()
#define __HAL_RCC_PWR_CLK_DISABLE()
#define __HAL_RCC_PWR_IS_CLK_DISABLED()
#define CLOCKSWITCH_TIMEOUT_VALUE
#define HSE_TIMEOUT_VALUE
#define LSI_TIMEOUT_VALUE
#define HSI_TIMEOUT_VALUE
#define RCC_DBP_TIMEOUT_VALUE
#define RCC_LSE_TIMEOUT_VALUE
HAL_StatusTypeDef HAL_RCC_DeInit(void)
Resets the RCC clock configuration to the default reset state.
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
Initializes the RCC Oscillators according to the specified parameters in the RCC_OscInitTypeDef.
HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
Initializes the CPU, AHB and APB busses clocks according to the specified parameters in the RCC_ClkIn...
void HAL_RCC_NMI_IRQHandler(void)
This function handles the RCC CSS interrupt request.
uint32_t HAL_RCC_GetHCLKFreq(void)
Returns the HCLK frequency.
void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
Configures the RCC_OscInitStruct according to the internal RCC configuration registers.
void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv)
Selects the clock source to output on MCO1 pin(PA8) or on MCO2 pin(PC9).
void HAL_RCC_EnableCSS(void)
Enables the Clock Security System.
uint32_t HAL_RCC_GetSysClockFreq(void)
Returns the SYSCLK frequency.
uint32_t HAL_RCC_GetPCLK1Freq(void)
Returns the PCLK1 frequency.
uint32_t HAL_RCC_GetPCLK2Freq(void)
Returns the PCLK2 frequency.
void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency)
Configures the RCC_ClkInitStruct according to the internal RCC configuration registers.
void HAL_RCC_DisableCSS(void)
Disables the Clock Security System.
void HAL_RCC_CSSCallback(void)
RCC Clock Security System interrupt callback.
#define __HAL_RCC_GET_IT(__INTERRUPT__)
Check the RCC's interrupt has occurred or not.
#define __HAL_RCC_CLEAR_IT(__INTERRUPT__)
Clear the RCC's interrupt pending bits (Perform Byte access to RCC_CIR[23:16] bits to clear the selec...
#define __HAL_RCC_GET_FLAG(__FLAG__)
#define __HAL_RCC_SYSCLK_CONFIG(__RCC_SYSCLKSOURCE__)
Macro to configure the system clock source.
#define __HAL_RCC_GET_PLL_OSCSOURCE()
Macro to get the oscillator used as PLL clock source.
#define __HAL_RCC_GET_SYSCLK_SOURCE()
Macro to get the clock source used as system clock.
#define __HAL_RCC_HSE_CONFIG(__STATE__)
Macro to configure the External High Speed oscillator (HSE).
#define __HAL_RCC_HSI_DISABLE()
#define __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(__HSICalibrationValue__)
Macro to adjust the Internal High Speed oscillator (HSI) calibration value.
#define __HAL_RCC_HSI_ENABLE()
Macros to enable or disable the Internal High Speed oscillator (HSI).
#define IS_RCC_MCO1SOURCE(SOURCE)
#define IS_RCC_SYSCLKSOURCE(SOURCE)
#define IS_RCC_MCODIV(DIV)
#define IS_RCC_OSCILLATORTYPE(OSCILLATOR)
#define IS_RCC_HCLK(HCLK)
#define IS_RCC_PLLM_VALUE(VALUE)
#define IS_RCC_PCLK(PCLK)
#define IS_RCC_PLLQ_VALUE(VALUE)
#define IS_RCC_PLLP_VALUE(VALUE)
#define IS_RCC_PLLSOURCE(SOURCE)
#define IS_RCC_CLOCKTYPE(CLK)
#define IS_RCC_CALIBRATION_VALUE(VALUE)
#define __HAL_RCC_LSE_CONFIG(__STATE__)
Macro to configure the External Low Speed oscillator (LSE).
#define __HAL_RCC_LSI_DISABLE()
#define __HAL_RCC_LSI_ENABLE()
Macros to enable or disable the Internal Low Speed oscillator (LSI).
#define RCC_OSCILLATORTYPE_HSE
#define RCC_OSCILLATORTYPE_LSI
#define RCC_OSCILLATORTYPE_LSE
#define RCC_OSCILLATORTYPE_HSI
#define RCC_PLLSOURCE_HSI
#define __HAL_RCC_PLL_DISABLE()
#define __HAL_RCC_PLL_ENABLE()
Macros to enable or disable the main PLL.
#define __MCO1_CLK_ENABLE()
#define __MCO2_CLK_ENABLE()
#define RCC_SYSCLKSOURCE_PLLRCLK
#define RCC_SYSCLKSOURCE_PLLCLK
#define RCC_SYSCLKSOURCE_HSE
#define RCC_CLOCKTYPE_SYSCLK
#define RCC_CLOCKTYPE_HCLK
#define RCC_CLOCKTYPE_PCLK1
#define RCC_CLOCKTYPE_PCLK2
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
#define HSI_VALUE
Internal High Speed oscillator (HSI) value. This value is used by the RCC HAL module to compute the s...
#define HSE_VALUE
Adjust the value of External High Speed oscillator (HSE) used in your application....
HAL_StatusTypeDef
HAL Status structures definition
#define HAL_IS_BIT_CLR(REG, BIT)
GPIO Init structure definition
RCC System, AHB and APB busses clock configuration structure definition.
RCC Internal/External Oscillator (HSE, HSI, LSE and LSI) configuration structure definition.
uint32_t HSICalibrationValue