@@ -135,37 +135,37 @@ static uint8_t SetSysClock_PLL_HSE(uint8_t bypass)
135135 // Enable HSE oscillator and activate PLL with HSE as source
136136 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
137137 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
139139 } 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
141141 }
142142
143143 RCC_OscInitStruct.PLL .PLLState = RCC_PLL_ON;
144144 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 ;
149149 if (HAL_RCC_OscConfig (&RCC_OscInitStruct) != HAL_OK) {
150150 return 0 ; // FAIL
151151 }
152152
153153 // Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers
154154 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
159159 if (HAL_RCC_ClockConfig (&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) {
160160 return 0 ; // FAIL
161161 }
162162
163163 /* Output clock on MCO1 pin(PA8) for debugging purpose */
164164 /*
165165 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
167167 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
169169 */
170170
171171 return 1 ; // OK
@@ -193,19 +193,19 @@ uint8_t SetSysClock_PLL_HSI(void)
193193 RCC_OscInitStruct.PLL .PLLState = RCC_PLL_ON;
194194 RCC_OscInitStruct.PLL .PLLSource = RCC_PLLSOURCE_HSI;
195195 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 ;
199199 if (HAL_RCC_OscConfig (&RCC_OscInitStruct) != HAL_OK) {
200200 return 0 ; // FAIL
201201 }
202202
203203 /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */
204204 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
209209 if (HAL_RCC_ClockConfig (&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) {
210210 return 0 ; // FAIL
211211 }
0 commit comments