Die Installation der Toolchain für den STM32F4 gliedert sich in 6 Teile :
1. Download und Installation der CooCox-IDE
2. Download und Installation vom GCC-Compiler
3. Einstellungen in der CooCox-IDE vornehmen
4. Download und Installation vom USB-Treiber für den STM32F4 Programmierer
5. STM32F4-Discovery per USB anschließen
6. Test ob alles funktioniert mit einem Demo-Programm
Hier die Schritte im einzelnen :
1. Download und Installation der CooCox-IDE :
CooCox findet sich kostenlos im Web unter “www.coocox.org” bzw. hier.
Hinweis : meine Librarys vom STM32F4 bauen auf den “standard peripherals” von ST auf. Dazu ist CoIDE Version V:1.x.x notwenig (nicht die Beta V:2.x.x).
Installiert bitte die Version 1.7.8 der CoIDE, welche ihr hier runterladen und auf dem PC in einem Ordner (z.B. “C:\CooCox”) installieren könnt.
2. Download und Installation vom GCC-Compiler :
Der ARM-C-Compiler findet sich auch kostenlos im WEB unter “https://launchpad.net/gcc-arm-embedded/”
Die aktuellste Version ist Version 7-2017-q4-major (war bei mir damals die Version 4.7-2012-q4-major release).
Nach dem Download kann das ganze z.B. in den Standard Pfad installiert werden. Vorsicht : der Name des Installations-Pfades wird später noch gebraucht.
3. Einstellungen in der CooCox-IDE vornehmen
Jetzt kann zum ersten mal die CooCox-IDE gestartet werden und im Menü unter “Projekt/Select toolchain Path” kann der Pfad der GCC-Installation angegeben werden.
Hier muss der Pfad zum “Bin-Verzeichnis” eingetragen werden also z.B. “C:\Program Files (x86)\GNU Tools ARM Embedded\4.7 2012q4\bin\”
4. Download und Installation vom USB-Treiber für den Programmierer
Auf dem STM32F4-Discovery ist ein USB-Programmierer “ST-Link/V2″ eingebaut und für den muss in WEB noch der kostenlose Treiber von ST runtergeladen werden. Zu finden ist dieser bei “www.st.com” und dem Suchbegriff “ST-Link/V2″.
Aktuell ist es die Version 2.0.0, welche bei ST unter Tools and Software heruntergeladen werden kann. (Ich hab die Version 1.0.4 runtergeladen und im Standardpfad installiert.)
5. STM32F4-Discovery per USB anschließen
Wenn das Board das erste mal angeschlossen wird, kann es sein das der Treiber nicht automatisch aktualisiert wird. Dann steht im Gerätemanager ein gelbes Ausrufezeichen hinter dem ST-Link/V2. Wenn das passiert, einfach mit rechter Maustaste und “Treibersoftware aktuallisieren” den PC per “Automatisch nach aktueller Treibersoftware” suchen lassen.
Hinweis : es kann sein das sich der Virenscanner meldet, das kann aber ignoriert werden.
Wenn der Treiber richtig installiert wurde, muss das im Gerätemanager so aussehen :
6. Test ob alles funktioniert mit einem Demo-Programm
Nachdem jetzt alles eingestellt wurde, ist es zeit für den ersten Test ob auch alles funktioniert.
1. Die CooCox-IDE starten und auf der Startseite den Punkt “Browse in Repository” auswählen.
2. Den CPU-Hersteller auswählen -> “ST”
3. Die benutzte CPU auswählen -> “STM32F407VG”
4. Für den ersten Test wollen wir eine LED auf dem STM32F4-Discovery blinken lassen, dazu brauchen wir die Komponente “GPIO” unter den “Peripheral”
5. Beim anklicken der Komponente werden wir gefragt, ob wir ein neues Projekt anlegen und speichern wollen. Wir bestätigen mit “Ja” und speichern das Projekt im Standardpfad.
6. Was wir jetzt noch brauchen ist der Inhalt vom “Main.c” also doppelklicken wir auf der linken Seite das “Main.c” File und gelangen so in den Editor-Modus.
7. Innerhalb vom Main.c kann der komplette Quellcode durch diese Vorlage ersetzt werden (auf die einzelnen Codezeilen will ich hier nicht eingehen) :
STM32F407 Toolchain und erstes Projekt, Main.c Datei (gezippt).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include "stm32f4xx_gpio.h" #include "stm32f4xx_rcc.h" void Delay(volatile uint32_t nCount) { while(nCount--) { } } void init(void) { GPIO_InitTypeDef GPIO_InitStructure; // Clock Enable RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); // Config PD12 als Digital-Ausgang GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); } int main(void) { init(); while(1) { Delay(500000); GPIOD->ODR ^= GPIO_Pin_12; // PD12 toggeln } } |
8. Nach dem drücken des Buttons “Build” bzw. Taste “F7″ sollte alles ohne Fehler compiliert werden.
9. Nach dem drücken des Buttons “Download Code to Flash” wird das Programm zum STM32F4-Discovery übertragen und gestartet. Jetzt sollte die grüne LED auf dem Discovery-Board blinken.
10. Falls alles funktioniert : Gratulation … die Toolchain steht !
Hinweis : Wenn alles Funktioniert, bitte auch diese Seite durchlesen :
(sonst läuft die CPU u.U. nicht mit der richtigen Frequenz)
Grundsätzliches zur CooCox-IDE
Hi Uwe,
von 0 auf 100 in 5 Minuten, dank deiner perfekten Beschreibung!
LG,
ManiB
Man sollte dir einen Orden verleihen!
Super Anleitung.. nach 10 Minuten blinkt die LED grün
Vielen Dank!
…einen Orden bekommt doch heute jeder…ein ZEPTER wäre nicht schlecht
Super.
Hat sofort geklappt!
Sehr vielen Dank!
Klasse,
super Einleitung.
Bedanke mich ganz herzlich dafür.
Hammer Blog.
vielen Daaank für den support!
Echt Super Anleitung. Hat mit Coocox V2Beta nicht fzt. Mit der 1.7.7 super geklapt! Danke!
CoIDE 1.7.8 erfolgreich getestet. Danke!
Hallo,
erst einmal vielen Dank für diese tolle Anleitung.
Ich habe allerdings bei mir ein Problem und zwar habe ich Coocox installiert und das richtige Modell ausgewählt. Das Kompilieren des Programmcodes funktioniert tadellos, allerdings sobald ich den Mikrocontroller flashen möchte zeigt mir das Programm folgenden Fehler an:
Error: Device XML file not find
Wie kann ich die Device XML in CooCox laden?
Vielen Dank schon mal
Gruß
Andreas
die XML-Files müssten alle bei der installation dabei sein. Sicher das du den richtigen CPU Typ ausgewählt hast ?
Hey,
Erstmal ein großes Dankeschön. Es klappt alles tadellos wie in dem Turorial beschrieben.
Jetzt möchte ich jedoch die von ST zur Verfügung gestellte HAL Library benutzen. Ich bin ein totaler Anfänger in dem Gebiet. Ich hatte unter anderem versucht mit anklicken der Cube library in dem Repository Fenster die benötigten header Dateien zu includen. Jedoch bekomme ich dann beim builden mit Funktionen der HAL_lib nur Fehler (Ganz einfacher LEDblink Code)
Hat jemand schon erfolgreich mit den HAL Drivern und der CoIDE programmiert ?
Beste Grüße und vielen Dank schonmal im Vorraus
benutzt du CoIDE ?
Dann wirst du das Repository nicht benutzen können,
sondern musst alle Files “manuell” in dein Projekt kopieren
und includieren.
Hi, ich habe elendig lange mit der V2Beta gekämpft, bis ich entsprechende Beschwerden gelesen habe. Du schreibst zwar, dass du die 1.7.0 verwendest, aber vielleicht könntest du noch einen Hinweis geben, dass es mit der aktuellen Version nicht so einfach funktioniert.