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
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.