Ein Stm32F1 Tutorial Part 2

Um nun die Hardware in Betrieb zu nehmen:
Mit dem USART-Testprogramm besteht die Möglichkeit, die Funktionalität des Debuggers sowie mit einem UART zu USB Adapter die Funktionalität der seriellen Schnittstelle zu testen.
Um das USART (Universal synchronous/asynchronous receiver/transmitter ) des Testprogramms zu testen, wird zwar eine Verbindung des UART zum PC nicht dringend notwendig aber sinnvoll.
Zuerst verbindet man den TX-Pin (PA2) mit dem RX-Pin des UART zu USB Adapters und verbindet deren beiden Massen (GND). Danach verbindet man den Adapter sowie das Board mit dem PC. Nun muss Codeblocks gestartet werden. Um Probleme mit den Spracheinstellungen vorzubeugen startet man das Programm in der Kommandozeile mit:

LC_ALL=en_US codeblocks

Nun muss Codeblocks eingerichtet werden:
Zuerst die Compiler Flags:

Settings -> Compiler Settings -> Compiler Flags ->
||=> debugging symbols : "-g"
||=> all Compiler warnings : "-Wall"
||=> extra compiler warnings : "-Wextra"
||=> (optional) c++11 support : "-std=c++11"
||=> (optional) optimize for size : "-Os"

Und dann die Debugger Einstellungen.

Settings -> Debugger Settings -> GDB/CDB debugger
||=> Create Config -> "stm32f1"
||=> executable Path -> "/usr/bin/arm-none-eabi-gdb"
||=> Debugger initialization commands ->
"tar extended-remote :4242
load"

Zuletzt muss noch an das richtige Build-Target ausgewählt werden. Hier wählt man die *.elf – Datei. Diese enthält die notwendigen Debugging-Symbole.

Build -> Select target -> 'TESTPROJECT.elf

Nun ist Codeblocks für unsere Wünsche eingerichtet. Beim Öffnen der im ersten Teil genannten .cbp-Datei muss man nun noch folgendes auswählen:

Debug -> Active Debuggers -> choose "stm32f1"

Jetzt kann das Programmieren und Debuggen losgehen.

Dazu startet man den Software-Teil des Debuggers (evtl. per sudo) mit:

st-util -1

Die Ausgabe sollte so aussehen:

sudo st-util -1
[sudo] password for USER:
2014-01-14T00:19:00 INFO src/stlink-common.c: Loading device parameters....
2014-01-14T00:19:00 INFO src/stlink-common.c: Device connected is: F1 Medium-density Value Line device, id 0x10016420
2014-01-14T00:19:00 INFO src/stlink-common.c: SRAM size: 0x2000 bytes (8 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 1024 bytes
2014-01-14T00:19:00 INFO src/stlink-sg.c: Successfully opened a stlink v1 debugger
Chip ID is 00000420, Core ID is  1ba01477.
Listening at *:4242...

Falls das nicht der Fall ist, hat man verschiedene Möglichkeiten, den Debugger zum Leben zu erwecken, diese sind im Readme von texane/st-link unter „IF YOU HAVE AN STLINKv1“ beschrieben. https://github.com/texane/stlink/blob/master/README

Dannach compilliert man das Programm mit [Strg +F9] erneut. Mit [F8] startet man dannach das Debuggen. Damit man sieht, ob alles wie gewünscht läuft. Man kann direkt rechts neben den Zeilennummerierungen rote Punkte (Haltepunkte) setzen. Sobald der Mikrocontroller an der Stelle angekommen ist, wird über dem roten Punkt ein gelber Pfeil angezeigt. Wenn man nun eine Serielle Konsole öffnet ( z.B. gtkterm ), sollte eine Ausgabe von Zeichen [0-Z] im Fenster erscheinen. Wenn das alles geklappt hat:

HERZLICHEN GLÜCKWUNSCH. Nun kann man beim Programmieren seiner Fantasie freien Lauf lassen, oder sich seinen Aufgaben zu den STM’s widmen.

Im nächsten Teil geht es um die nötigen Anpassungen auf andere Controller der STM32F10x-Serie und welche Fallstricke noch auf sich warten lassen.