@@ -71,20 +71,34 @@ WEAK void SystemClock_Config(void)
7171 RCC_OscInitTypeDef RCC_OscInitStruct = {};
7272 RCC_PeriphCLKInitTypeDef PeriphClkInit = {};
7373
74- /* MSI is enabled after System reset, activate PLL with MSI as source */
75- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_MSI;
74+ /* * Configure the main internal regulator output voltage
75+ */
76+ if (HAL_PWREx_ControlVoltageScaling (PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK) {
77+ Error_Handler ();
78+ }
79+
80+ /* Configure LSE Drive Capability */
81+ HAL_PWR_EnableBkUpAccess ();
82+ __HAL_RCC_LSEDRIVE_CONFIG (RCC_LSEDRIVE_LOW);
83+
84+ /* * Initializes the RCC Oscillators according to the specified parameters
85+ * in the RCC_OscInitTypeDef structure.
86+ */
87+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE
88+ | RCC_OSCILLATORTYPE_MSI;
7689 RCC_OscInitStruct.LSEState = RCC_LSE_ON;
90+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
91+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
7792 RCC_OscInitStruct.MSIState = RCC_MSI_ON;
93+ RCC_OscInitStruct.MSICalibrationValue = 0 ;
7894 RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_6;
79- RCC_OscInitStruct.MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT;
8095 RCC_OscInitStruct.PLL .PLLState = RCC_PLL_ON;
8196 RCC_OscInitStruct.PLL .PLLSource = RCC_PLLSOURCE_MSI;
8297 RCC_OscInitStruct.PLL .PLLM = 1 ;
8398 RCC_OscInitStruct.PLL .PLLN = 40 ;
8499 RCC_OscInitStruct.PLL .PLLP = RCC_PLLP_DIV7;
85100 RCC_OscInitStruct.PLL .PLLQ = RCC_PLLQ_DIV2;
86101 RCC_OscInitStruct.PLL .PLLR = RCC_PLLR_DIV2;
87-
88102 if (HAL_RCC_OscConfig (&RCC_OscInitStruct) != HAL_OK) {
89103 Error_Handler ();
90104 }
@@ -96,11 +110,14 @@ WEAK void SystemClock_Config(void)
96110 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
97111 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
98112 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
113+
99114 if (HAL_RCC_ClockConfig (&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) {
100115 Error_Handler ();
101116 }
102117
103- PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB;
118+ /* Initializes the peripherals clock */
119+ PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_USB;
120+ PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_HSI;
104121 PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLLSAI1;
105122 PeriphClkInit.PLLSAI1 .PLLSAI1Source = RCC_PLLSOURCE_MSI;
106123 PeriphClkInit.PLLSAI1 .PLLSAI1M = 1 ;
@@ -112,10 +129,6 @@ WEAK void SystemClock_Config(void)
112129 if (HAL_RCCEx_PeriphCLKConfig (&PeriphClkInit) != HAL_OK) {
113130 Error_Handler ();
114131 }
115- /* Configure the main internal regulator output voltage */
116- if (HAL_PWREx_ControlVoltageScaling (PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK) {
117- Error_Handler ();
118- }
119132 /* Enable MSI Auto calibration */
120133 HAL_RCCEx_EnableMSIPLLMode ();
121134}
0 commit comments