@@ -114,20 +114,25 @@ WEAK void SystemClock_Config(void)
114
114
115
115
while (!__HAL_PWR_GET_FLAG (PWR_FLAG_VOSRDY)) {}
116
116
117
+ /* * Configure LSE Drive Capability
118
+ * Warning : Only applied when the LSE is disabled.
119
+ */
120
+ HAL_PWR_EnableBkUpAccess ();
121
+ __HAL_RCC_LSEDRIVE_CONFIG (RCC_LSEDRIVE_LOW);
122
+
117
123
/* Initializes the RCC Oscillators according to the specified parameters in the RCC_OscInitTypeDef structure */
118
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_HSE
119
- | RCC_OSCILLATORTYPE_LSE;
120
- RCC_OscInitStruct.HSEState = RCC_HSE_ON;
124
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_CSI;
121
125
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
122
- RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
126
+ RCC_OscInitStruct.CSIState = RCC_CSI_ON;
127
+ RCC_OscInitStruct.CSICalibrationValue = RCC_CSICALIBRATION_DEFAULT;
123
128
RCC_OscInitStruct.PLL .PLLState = RCC_PLL_ON;
124
- RCC_OscInitStruct.PLL .PLLSource = RCC_PLL1_SOURCE_HSE ;
125
- RCC_OscInitStruct.PLL .PLLM = 12 ;
126
- RCC_OscInitStruct.PLL .PLLN = 250 ;
129
+ RCC_OscInitStruct.PLL .PLLSource = RCC_PLL1_SOURCE_CSI ;
130
+ RCC_OscInitStruct.PLL .PLLM = 1 ;
131
+ RCC_OscInitStruct.PLL .PLLN = 125 ;
127
132
RCC_OscInitStruct.PLL .PLLP = 2 ;
128
- RCC_OscInitStruct.PLL .PLLQ = 2 ;
133
+ RCC_OscInitStruct.PLL .PLLQ = 10 ;
129
134
RCC_OscInitStruct.PLL .PLLR = 2 ;
130
- RCC_OscInitStruct.PLL .PLLRGE = RCC_PLL1_VCIRANGE_1 ;
135
+ RCC_OscInitStruct.PLL .PLLRGE = RCC_PLL1_VCIRANGE_2 ;
131
136
RCC_OscInitStruct.PLL .PLLVCOSEL = RCC_PLL1_VCORANGE_WIDE;
132
137
RCC_OscInitStruct.PLL .PLLFRACN = 0 ;
133
138
if (HAL_RCC_OscConfig (&RCC_OscInitStruct) != HAL_OK) {
@@ -148,23 +153,27 @@ WEAK void SystemClock_Config(void)
148
153
Error_Handler ();
149
154
}
150
155
156
+ /* * Configure the programming delay
157
+ */
158
+ __HAL_FLASH_SET_PROGRAM_DELAY (FLASH_PROGRAMMING_DELAY_2);
159
+
151
160
/* Initializes the peripherals clock */
152
- PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADCDAC | RCC_PERIPHCLK_LPUART1
153
- | RCC_PERIPHCLK_USB ;
154
- PeriphClkInitStruct.PLL2 .PLL2Source = RCC_PLL2_SOURCE_HSE ;
155
- PeriphClkInitStruct.PLL2 .PLL2M = 2 ;
156
- PeriphClkInitStruct.PLL2 .PLL2N = 31 ;
157
- PeriphClkInitStruct.PLL2 .PLL2P = 2 ;
158
- PeriphClkInitStruct.PLL2 .PLL2Q = 12 ;
161
+ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB | RCC_PERIPHCLK_ADCDAC
162
+ | RCC_PERIPHCLK_LPUART1 ;
163
+ PeriphClkInitStruct.PLL2 .PLL2Source = RCC_PLL2_SOURCE_CSI ;
164
+ PeriphClkInitStruct.PLL2 .PLL2M = 1 ;
165
+ PeriphClkInitStruct.PLL2 .PLL2N = 36 ;
166
+ PeriphClkInitStruct.PLL2 .PLL2P = 3 ;
167
+ PeriphClkInitStruct.PLL2 .PLL2Q = 4 ;
159
168
PeriphClkInitStruct.PLL2 .PLL2R = 3 ;
160
- PeriphClkInitStruct.PLL2 .PLL2RGE = RCC_PLL2_VCIRANGE_3 ;
169
+ PeriphClkInitStruct.PLL2 .PLL2RGE = RCC_PLL2_VCIRANGE_2 ;
161
170
PeriphClkInitStruct.PLL2 .PLL2VCOSEL = RCC_PLL2_VCORANGE_WIDE;
162
- PeriphClkInitStruct.PLL2 .PLL2FRACN = 2048 ;
163
- PeriphClkInitStruct.PLL2 .PLL2ClockOut = RCC_PLL2_DIVQ | RCC_PLL2_DIVR;
171
+ PeriphClkInitStruct.PLL2 .PLL2FRACN = 0 ;
172
+ PeriphClkInitStruct.PLL2 .PLL2ClockOut = RCC_PLL2_DIVP | RCC_PLL2_DIVQ
173
+ | RCC_PLL2_DIVR;
164
174
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PLL2Q;
165
175
PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_PLL2R;
166
- PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
167
-
176
+ PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL2Q;
168
177
if (HAL_RCCEx_PeriphCLKConfig (&PeriphClkInitStruct) != HAL_OK) {
169
178
Error_Handler ();
170
179
}
0 commit comments