Guten Nachmittag,
hab einen 8MHz HSE in CubeMX konfiguriert und Code generieren lassen.
Funktioniert alles einwandfrei - nur ist der Clock ungefähr halb so 
schnell, als er sein sollte (auf meinem STM32L1)
Code ist dieser hier:
1  | void SystemClock_Config(void) {
 | 
2  |   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
 | 
3  |   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
 | 
4  |   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
 | 
5  | 
  | 
6  |   /** Configure the main internal regulator output voltage
  | 
7  |    */
  | 
8  |   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
  | 
9  |   /** Initializes the RCC Oscillators according to the specified parameters
  | 
10  |    * in the RCC_OscInitTypeDef structure.
  | 
11  |    */
  | 
12  |   RCC_OscInitStruct.OscillatorType =
  | 
13  |       RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_HSE;
  | 
14  |   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  | 
15  |   RCC_OscInitStruct.LSIState = RCC_LSI_ON;
  | 
16  |   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  | 
17  |   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  | 
18  |   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12;
  | 
19  |   RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV3;
  | 
20  |   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
 | 
21  |     Error_Handler();
  | 
22  |   }
  | 
23  |   /** Initializes the CPU, AHB and APB buses clocks
  | 
24  |    */
  | 
25  |   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |
  | 
26  |                                 RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
  | 
27  |   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  | 
28  |   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  | 
29  |   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  | 
30  |   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  | 
31  | 
  | 
32  |   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) {
 | 
33  |     Error_Handler();
  | 
34  |   }
  | 
35  |   PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LCD;
  | 
36  |   PeriphClkInit.LCDClockSelection = RCC_RTCCLKSOURCE_LSI;
  | 
37  | 
  | 
38  |   if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) {
 | 
39  |     Error_Handler();
  | 
40  |   }
  | 
41  | }
  | 
Sieht alles suppi aus (HSE_VALUE ist auch auf 8MHz gesetzt).
Kurioserweise, wenn ich statt dem HSE den HSI16 als PLL-Input-Clock 
benutze und dafür dann den Multiplikator auf *6 anpasse, weil der ja 
16MHz statt 8MHz hat, kommt der richtige Takt raus.
Hab den Oszillator mit meinem Oszi gemessen, wunderbare 8MHz und die 
liegen an dem richtigen OSC_IN Pin an. Es gibt auch keine Timeouts bei 
der Initialisierung usw ... Sollte alles stimmen, aber das tut es nicht. 
🙈
Die Berechnung des SystemClocks ergibt 32MHz.
Ganz seltsam, kann keinen Fehler finden und trotzdem passt der Takt 
nicht ...
Hat jemand soetwas schonmal gesehen?