@@ -98,6 +98,7 @@ WEAK void SystemClock_Config(void)
9898 RCC_OscInitTypeDef RCC_OscInitStruct = {};
9999 RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
100100#ifdef USBCON
101+ RCC_CRSInitTypeDef RCC_CRSInitStruct = {};
101102 RCC_PeriphCLKInitTypeDef PeriphClkInit = {};
102103#endif
103104
@@ -113,7 +114,7 @@ WEAK void SystemClock_Config(void)
113114 RCC_OscInitStruct.PLL .PLLState = RCC_PLL_ON;
114115 RCC_OscInitStruct.PLL .PLLM = RCC_PLLM_DIV2;
115116 RCC_OscInitStruct.PLL .PLLSource = RCC_PLLSOURCE_HSE;
116- RCC_OscInitStruct.PLL .PLLN = 72 ;
117+ RCC_OscInitStruct.PLL .PLLN = 85 ;
117118 RCC_OscInitStruct.PLL .PLLP = RCC_PLLP_DIV2;
118119 RCC_OscInitStruct.PLL .PLLQ = RCC_PLLQ_DIV6;
119120 RCC_OscInitStruct.PLL .PLLR = RCC_PLLR_DIV2;
@@ -133,9 +134,22 @@ WEAK void SystemClock_Config(void)
133134 }
134135
135136#ifdef USBCON
137+ /* Enable the SYSCFG APB clock */
138+ __HAL_RCC_CRS_CLK_ENABLE ();
139+
140+ /* Configures CRS */
141+ RCC_CRSInitStruct.Prescaler = RCC_CRS_SYNC_DIV1;
142+ RCC_CRSInitStruct.Source = RCC_CRS_SYNC_SOURCE_USB;
143+ RCC_CRSInitStruct.Polarity = RCC_CRS_SYNC_POLARITY_RISING;
144+ RCC_CRSInitStruct.ReloadValue = __HAL_RCC_CRS_RELOADVALUE_CALCULATE (48000000 , 1000 );
145+ RCC_CRSInitStruct.ErrorLimitValue = RCC_CRS_ERRORLIMIT_DEFAULT;
146+ RCC_CRSInitStruct.HSI48CalibrationValue = RCC_CRS_HSI48CALIBRATION_DEFAULT;
147+
148+ HAL_RCCEx_CRSConfig (&RCC_CRSInitStruct);
149+
136150 /* Initializes the peripherals clocks */
137151 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB;
138- PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL ;
152+ PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_HSI48 ;
139153 if (HAL_RCCEx_PeriphCLKConfig (&PeriphClkInit) != HAL_OK) {
140154 Error_Handler ();
141155 }
0 commit comments