@@ -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