Hallo zusammen,
muss man beim Wechsel von HSI auf HSE-->PLL noch irgendetwas spezielles
ändern ausser die Prescaler PLLM,*N,PLLP,AHB, APB1 sofern man TIM2 nutzt
?
Ich habe das Problem, dass meine Timer-Zeit/en nicht mehr stimmen.
Mit den internen 16 MHz RC Oszi hatte ich alle 10 Milisekunden einen
Interrupt. Jetzt plötzlich nur noch alle 120 Milisekunden.
HCLK ist 84 MHz und APB1 = 2 , also läuft der Timer mit 42 MHz (macht er
aber wohl nicht)
Seltsam auch, dass das ARR Register angeblich nur 16 Bit groß ist. Laut
Debugger ist es aber 32 Bit lang. Ist aber egal, ich habe es auch mit
Prescaler ausprobiert. Timer Zeiten stimmen nicht.
Ich komme mitlerweile zu den Schluss, dass meine SystemClock nicht mit
der Frequenz von 168 MHz läuft.
Ich bin mir sicher, das ich früher schonmal versucht habe die Clock
umzustellen und dabei falsche Prescaler Werte benutzt habe. Besitzt der
µC intern ein Schutz, wenn man den falsch einstellt ? Sonst könnte da ja
auch etwas kaputt gegangen sein.
Ich weis nicht, was ich da noch ein/umstellen könnte.
•
1 | void Timer2Init_()
|
2 | {
|
3 | APB1_TIM2 |= 0x00000001U;
|
4 | RCC_APB1ENR |= 1;
|
5 | NVIC_ISER |= 0x10000000;
|
6 | TIM2_CR1 |=0x0010;
|
7 | TIM2_PSC = 0;
|
8 | TIM2_ARR = 42000000;
|
9 | TIM2_DIER |= 1;
|
10 | HAL_NVIC_SetPriority(TIM2_IRQn, 3, 0);
|
11 | TIM2_CR1 |= 1;
|
12 | }
|