@@ -135,37 +135,37 @@ static uint8_t SetSysClock_PLL_HSE(uint8_t bypass)
135
135
// Enable HSE oscillator and activate PLL with HSE as source
136
136
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
137
137
if (bypass == 0 ) {
138
- RCC_OscInitStruct.HSEState = RCC_HSE_ON; // External 8 MHz xtal on OSC_IN/OSC_OUT
138
+ RCC_OscInitStruct.HSEState = RCC_HSE_ON; // External crystal on OSC_IN/OSC_OUT
139
139
} else {
140
- RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS; // External 8 MHz clock on OSC_IN
140
+ RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS; // External clock on OSC_IN
141
141
}
142
142
143
143
RCC_OscInitStruct.PLL .PLLState = RCC_PLL_ON;
144
144
RCC_OscInitStruct.PLL .PLLSource = RCC_PLLSOURCE_HSE;
145
- RCC_OscInitStruct.PLL .PLLM = 8 ; // VCO input clock = 1 MHz (8 MHz / 8)
146
- RCC_OscInitStruct.PLL .PLLN = 336 ; // VCO output clock = 336 MHz (1 MHz * 336 )
147
- RCC_OscInitStruct.PLL .PLLP = RCC_PLLP_DIV4; // PLLCLK = 84 MHz (336 MHz / 4 )
148
- RCC_OscInitStruct.PLL .PLLQ = 7 ; // USB clock = 48 MHz (336 MHz / 7) --> OK for USB
145
+ RCC_OscInitStruct.PLL .PLLM = HSE_VALUE / 1000000L ; // Expects an 8 MHz external clock by default. Redefine HSE_VALUE if not
146
+ RCC_OscInitStruct.PLL .PLLN = 200 ; // VCO output clock = 200 MHz (1 MHz * 200 )
147
+ RCC_OscInitStruct.PLL .PLLP = RCC_PLLP_DIV2; // PLLCLK = 100 MHz (200 MHz / 2 )
148
+ RCC_OscInitStruct.PLL .PLLQ = 4 ;
149
149
if (HAL_RCC_OscConfig (&RCC_OscInitStruct) != HAL_OK) {
150
150
return 0 ; // FAIL
151
151
}
152
152
153
153
// Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers
154
154
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
155
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 84 MHz
156
- RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 84 MHz
157
- RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; // 42 MHz
158
- RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 84 MHz
155
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 100 MHz
156
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 100 MHz
157
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; // 50 MHz
158
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 100 MHz
159
159
if (HAL_RCC_ClockConfig (&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) {
160
160
return 0 ; // FAIL
161
161
}
162
162
163
163
/* Output clock on MCO1 pin(PA8) for debugging purpose */
164
164
/*
165
165
if (bypass == 0)
166
- HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_2); // 4 MHz
166
+ HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_2); // HSE_VALUE/1
167
167
else
168
- HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1); // 8 MHz
168
+ HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1); // HSE_VALUE/2
169
169
*/
170
170
171
171
return 1 ; // OK
@@ -193,19 +193,19 @@ uint8_t SetSysClock_PLL_HSI(void)
193
193
RCC_OscInitStruct.PLL .PLLState = RCC_PLL_ON;
194
194
RCC_OscInitStruct.PLL .PLLSource = RCC_PLLSOURCE_HSI;
195
195
RCC_OscInitStruct.PLL .PLLM = 16 ; // VCO input clock = 1 MHz (16 MHz / 16)
196
- RCC_OscInitStruct.PLL .PLLN = 336 ; // VCO output clock = 336 MHz (1 MHz * 336 )
197
- RCC_OscInitStruct.PLL .PLLP = RCC_PLLP_DIV4 ; // PLLCLK = 84 MHz (336 MHz / 4 )
198
- RCC_OscInitStruct.PLL .PLLQ = 7 ; // USB clock = 48 MHz (336 MHz / 7) --> freq is ok but not precise enough
196
+ RCC_OscInitStruct.PLL .PLLN = 200 ; // VCO output clock = 200 MHz (1 MHz * 200 )
197
+ RCC_OscInitStruct.PLL .PLLP = RCC_PLLP_DIV2 ; // PLLCLK = 100 MHz (200 MHz / 2 )
198
+ RCC_OscInitStruct.PLL .PLLQ = 4 ;
199
199
if (HAL_RCC_OscConfig (&RCC_OscInitStruct) != HAL_OK) {
200
200
return 0 ; // FAIL
201
201
}
202
202
203
203
/* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */
204
204
RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
205
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 84 MHz
206
- RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 84 MHz
207
- RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; // 42 MHz
208
- RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 84 MHz
205
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 100 MHz
206
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 100 MHz
207
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; // 50 MHz
208
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 100 MHz
209
209
if (HAL_RCC_ClockConfig (&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) {
210
210
return 0 ; // FAIL
211
211
}
0 commit comments