@@ -143,21 +143,21 @@ static uint8_t SetSysClock_PLL_HSE(uint8_t bypass)
143
143
144
144
RCC_OscInitStruct.PLL .PLLState = RCC_PLL_ON;
145
145
RCC_OscInitStruct.PLL .PLLSource = RCC_PLLSOURCE_HSE;
146
- RCC_OscInitStruct.PLL .PLLM = 8 ; // VCO input clock = 1 MHz (8 MHz / 8)
147
- RCC_OscInitStruct.PLL .PLLN = 336 ; // VCO output clock = 336 MHz (1 MHz * 336 )
148
- RCC_OscInitStruct.PLL .PLLP = RCC_PLLP_DIV4; // PLLCLK = 84 MHz (336 MHz / 4 )
149
- RCC_OscInitStruct.PLL .PLLQ = 7 ; // USB clock = 48 MHz (336 MHz / 7) --> OK for USB
146
+ RCC_OscInitStruct.PLL .PLLM = HSE_VALUE / 1000000L ; // Expects an 8 MHz external clock by default. Redefine HSE_VALUE if not
147
+ RCC_OscInitStruct.PLL .PLLN = 192 ; // VCO output clock = 192 MHz (1 MHz * 192 )
148
+ RCC_OscInitStruct.PLL .PLLP = RCC_PLLP_DIV2; // PLLCLK = 96 MHz (192 MHz / 2 )
149
+ RCC_OscInitStruct.PLL .PLLQ = 4 ; // USB clock = 48 MHz (192 MHz / 4)
150
150
if (HAL_RCC_OscConfig (&RCC_OscInitStruct) != HAL_OK) {
151
151
return 0 ; // FAIL
152
152
}
153
153
154
154
// Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers
155
155
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
156
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 84 MHz
157
- RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 84 MHz
158
- RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; // 42 MHz
159
- RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 84 MHz
160
- if (HAL_RCC_ClockConfig (&RCC_ClkInitStruct, FLASH_LATENCY_2 ) != HAL_OK) {
156
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 96 MHz
157
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 96 MHz
158
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; // 48 MHz
159
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 96 MHz
160
+ if (HAL_RCC_ClockConfig (&RCC_ClkInitStruct, FLASH_LATENCY_3 ) != HAL_OK) {
161
161
return 0 ; // FAIL
162
162
}
163
163
@@ -194,20 +194,20 @@ uint8_t SetSysClock_PLL_HSI(void)
194
194
RCC_OscInitStruct.PLL .PLLState = RCC_PLL_ON;
195
195
RCC_OscInitStruct.PLL .PLLSource = RCC_PLLSOURCE_HSI;
196
196
RCC_OscInitStruct.PLL .PLLM = 16 ; // VCO input clock = 1 MHz (16 MHz / 16)
197
- RCC_OscInitStruct.PLL .PLLN = 336 ; // VCO output clock = 336 MHz (1 MHz * 336 )
198
- RCC_OscInitStruct.PLL .PLLP = RCC_PLLP_DIV4 ; // PLLCLK = 84 MHz (336 MHz / 4 )
199
- RCC_OscInitStruct.PLL .PLLQ = 7 ; // USB clock = 48 MHz (336 MHz / 7) --> freq is ok but not precise enough
197
+ RCC_OscInitStruct.PLL .PLLN = 192 ; // VCO output clock = 192 MHz (1 MHz * 192 )
198
+ RCC_OscInitStruct.PLL .PLLP = RCC_PLLP_DIV2 ; // PLLCLK = 96 MHz (192 MHz / 2 )
199
+ RCC_OscInitStruct.PLL .PLLQ = 4 ; // USB clock = 48 MHz (192 MHz / 4)
200
200
if (HAL_RCC_OscConfig (&RCC_OscInitStruct) != HAL_OK) {
201
201
return 0 ; // FAIL
202
202
}
203
203
204
204
/* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */
205
205
RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
206
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 84 MHz
207
- RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 84 MHz
208
- RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; // 42 MHz
209
- RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 84 MHz
210
- if (HAL_RCC_ClockConfig (&RCC_ClkInitStruct, FLASH_LATENCY_2 ) != HAL_OK) {
206
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 96 MHz
207
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 96 MHz
208
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; // 48 MHz
209
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 96 MHz
210
+ if (HAL_RCC_ClockConfig (&RCC_ClkInitStruct, FLASH_LATENCY_3 ) != HAL_OK) {
211
211
return 0 ; // FAIL
212
212
}
213
213
0 commit comments