Hallo,
ich habe ein kleines Verständnisproblem, aber ich habe im Internet keine
wirkliche Antwort auf meine Frage gefunden, bzw. vielleicht den Wald vor
lauter Bäumen nicht gesehen.
Ich habe ein STM32F407-Discovery Board und ein Board mit einem
STM32F415RGT6.
Als Minimalbeispiel möchte ich mit Hilfe des SysTick-Timers eine LED
alle 100ms blinken lassen. Ich verwende die StdPeripheral-Library und
rufe zu Beginn des Codes
1 | SystemInit();
|
2 | SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
|
3 | RCC_ClocksTypeDef test;
|
4 | RCC_GetClocksFreq(&test);
|
5 | SysTick_Config(test.HCLK_Frequency / 1000);
|
bzw:
1 | SystemInit();
|
2 | SysTick_Config(SystemCoreClock / 1000);
|
auf um eine Frequenz von 1khz zu bekommen. (Beide Methoden erzielen das
selbe Ergebnis). Dazu habe ich den SysTickHandler standardmäßig
definiert:
1 | extern "C" void SysTick_Handler(void) {
|
2 | sysTicks++;
|
3 | }
|
.
Auf dem STM32F415 produziert eine anschließende Warteschleife die
richtige Frequenz, auf dem STM32F407-DISCO Board beträgt die Wartezeit
über 300ms. Was ist da anders? Muss ich den Clocktree noch irgendwie
anpassen? Auf dem STM32F0 musste ich noch den PLL-Multiplier anpassen,
das ging beim F4 nicht so wie ich das gewohnt war. Und warum
funktioniert das auf einem Board und auf dem anderen nicht?
Danke im Vorraus!
Gruß