mikrocontroller.net

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


Autor: Tom P. (tom_p89)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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_CooC...

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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel V. (voda) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
SystemInit();
SystemCoreUpdate();
SysTick_Config(SystemCoreClock/10000);

Toggle nun mit dem SysTick_Handler.

Gruß
Daniel

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

Bewertung
0 lesenswert
nicht lesenswert
Du weisst aber schon, das der STM32F401VC nur bis 84Mhz kann?

http://www.st.com/content/st_com/en/products/micro...

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

: Bearbeitet durch User
Autor: Tom P. (tom_p89)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.