Forum: Mikrocontroller und Digitale Elektronik STM32f4 Blink-LED Clock auf 168MHz


von Tom P. (tom_p89)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe mir das STM32f401 Discovery Board zugelegt und versuche mich 
gerade an diesem einfachen Einstiegsbeispiel, welches bei der CooCox 
Installationsanleitung enthalten ist:

http://www.mikrocontroller.net/articles/STM32_CooCox_Installation

Leider lässt sich bei mir die Clock nicht auf 168 MHz einstellen.

Das Board besitzt einen 8 MHz Quarz, ich habe system_stm32f4xx.c und 
stm32f4xx.h so modifiziert wie in der Anleitung vorgegeben, die main.c 
mit #include "system_stm32f4xx.h" erweitert und am Anfang der main() 
SystemInit(); aufgerufen. Ohne SystemInit(); funktioniert das Beispiel 
mit dem Internen Quarz. Mit SystemInit(); tut sich nichts. Ich habe auch 
mal den Debugger laufen lassen. Dieser landet dann in einer 
Endlosschleife in einem File namens: startup_stm32f4xx.s

Alle Screenshots befinden sich im Anhang. Ich bin echt gespannt wo mein 
Fehler liegt...

Viele Grüße,

Tom

von STK500-Besitzer (Gast)


Lesenswert?

Tom P. schrieb:
> Leider lässt sich bei mir die Clock nicht auf 168 MHz einstellen.

Wo stellst du die denn bzw. versuchst es?
In CubeMX lässt sie sich entsprechend einstellen.

Bei dir fehlt noch die "SystemClockInit()" (oder so ähnlich).
Die kann man wunderbar mit CubeMX erzeugen und enthält die Einstellungen 
für die PLL und Vorteiler.

Und Programmcode kann man als .h, .c, .cpp oder wie auch immer als 
Textdatei hier anhängen.

von Daniel V. (voda) Benutzerseite


Lesenswert?

Hast Du denn die PLLs in der system_stm32f4xx.c eingestellt bzw 
kontrolliert ob das stimmt? HAst Du auch die PLL über die RCC 
eingestellt (RCC->PLLCFGR).
Konsultiere das Datenblatt und berechne dir die Werte mit dem CubeMX 
aus.

Danach:
1
SystemInit();
2
SystemCoreUpdate();
3
SysTick_Config(SystemCoreClock/10000);

Toggle nun mit dem SysTick_Handler.

Gruß
Daniel

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Du weisst aber schon, das der STM32F401VC nur bis 84Mhz kann?

http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f4-series/stm32f401/stm32f401vc.html

Aus gutem Grund wird der in system_stm32f4xx.c gesondert behandelt und 
eben nur auf 84MHz konfiguriert.

: Bearbeitet durch User
von Tom P. (tom_p89)


Lesenswert?

Hallo,
vielen Dank für eure Hilfe!

Ich habe mir CubeMX zugelegt und dort die die Werte für die PLLs 
berechnet. Die Werte konnte ich dann in "system_stm32f4xx.c" eintragen. 
Ansonsten musste ich nichts verändern.

Mit folgenden Werten läuft mein uC nun mit 84 MHz:

#define PLL_M      4
#define PLL_N      84
#define PLL_P      2

Viele Grüße,

Tom

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.