STM32 Anleitungen

Hinweise zur STM32 Cube IDE

Als Ergänzung zu meiner STM32 Anleitung gebe ich hier Tipps zum Umgang mit der "STM32 Cube IDE". Das ist eine Entwicklungsumgebung für STM32 Mikrocontroller.

ST kaufte das Atollic TrueStudio auf, reduzierte es auf STM32 Controller und machte daraus dann die Cube IDE, indem Funktionen von CubeMX integriert wurden. Wer das Atollic Truestudio bereits kennt, wird sich daher in der Cube IDE sofort zurecht finden.

So sieht ein neues 'leeres' Projekt aus

Download: STM32 Cube IDE

Die Cube IDE kann Projekte von der System Workbench importieren, umgekehrt geht es nicht.

Hinweise für Linux

Bei Linux wird das Paket libncurses5 benötigt.

Wenn man ein neues Projekt startet und der Dialog "Target Selection" komplett leer bleibt, muss man die IDE mit folgendem Befehl starten: /usr/bin/env GDK_BACKEND=x11 ./stm32cubeide

Projekt erzeugen

Ich empfehle für den Anfang ohne Cube HAL (nur mit den CMSIS Headern) zu arbeiten. Das geht so:

Programm übertragen

Klicke mit der rechten Maustaste auf den Projektnamen, dann auf "Run as..." und dann auf "STM32 Cortex-M C/C++ Application". Dabei werden Änderungen am Programm automatisch auf den Mikrocontroller übertragen.

Bei Verbindungsproblemen kann es hilfreich sein, den Bootloader mittels Boot0=High und Reset-Impuls zu starten, da dieser die SWD Schnittstelle nicht deaktiviert.

Debuggen

Klicke mit der rechten Maustaste auf den Projektnamen, dann auf "Debug as..." und dann auf "STM32 Cortex-M C/C++ Application". Dabei werden Änderungen am Programm automatisch auf den Mikrocontroller übertragen.

Bei Verbindungsproblemen kann es hilfreich sein, den Bootloader mittels Boot0=High und Reset-Impuls zu starten, da dieser die SWD Schnittstelle nicht deaktiviert. Eventuell hilft auch ein Firmware-Update des ST-Link Adapters.

Verbindungsoptionen

Die Cube IDE unterstützt zwei Optionen zum Verbindungsaufbau:

ModusBeschreibungEinschränkung
Connect Under ResetDie Verbindung wird während des Reset-Impulses geöffnet.Wenn die NRST Leitung nicht mit dem Programmieradapter verbunden ist, muss man den Reset Knopf manuell gedrückt halten und im richtigen Moment loslassen.
Software System ResetDie SWD Schnittstelle wird ohne Hardware-Reset geöffnet und dann ein Reset-Kommando abgesetzt.Funktioniert nicht, wenn das Programm die SWD Schnittstelle deaktiviert oder in einen Schlafmodus gegangen ist.

Die Cube IDE benutzt beim Debuggen standardmäßig die Option "Connect Under Reset".

Klicke mit der rechten Maustaste auf den kleinen Pfeil neben dem Käfer, dann auf "Debug Configurations...". Gehe in dem folgenden Dialog in den Debugger Tab, wo du die Einstellung ändern kannst:

Trace Meldungen ausgeben

Alle ARM Controller ab Cortex M3 aufwärts können Trace Meldungen (ITM, Instrumentation Trace Messages) auf der SWO Leitung ausgeben.

mit GDB

Die Cube IDE kann diese Meldungen bei Verwendung des ST-Link GDB Servers oder Segger J-Link folgendermaßen anzeigen:

Neben dem grünen Käfer ist ein kleiner Pfeil, der nach unten Zeigt. Klicke darauf und dann auf "Debug Configurations...". Aktiviere im Debugger Tab die rot markierte Option und stelle die Taktfrequenz des Mikrocontrollers ein:

Nun starte den Debugger durch Klick auf den grünen Käfer. Das Programm pausiert zunächst ganz am Anfang der main() Funktion. Jetzt gehe in das Menü Window/Show View/Other... und wähle "SWV ITM Data Console". Dieses Fenster ist zunächst leer. Klicke in der rechten oberen Ecke des Fensters auf das Werkzeug-Symbol.

Schalte im nächsten Dialog den "ITM Stimulus Port" Nummer 0 ein.

Direkt neben dem Werkzeug-Symbol ist ein roter Punkt mit der Beschriftung "Start Trace". Klicke darauf. Danach klicke am oberen Rand der IDE auf den Resume-Knopf.

Nun sollten in dem "SWV ITM Data Console" Fenster alle Trace Meldungen erscheinen, die das Programm auf dem Mikrocontroller erzeugt.

mit OpenOCD

Klicke mit der rechten Maustaste auf den kleinen Pfeil neben dem grünen Käfer, dann auf "Debug Configurations...". Wähle im Debugger Tab den ST-Link OpenOCD aus, und darunter die Option User defined configuration script.

Nun öffne dieses "Configuration Script" im Texteditor und hänge ganz unten zwei Zeilen an:

tpiu config internal /tmp/debug.txt uart off 8000000
itm port 0 on
Die Zahl 8000000 muss der CPU Taktfrequenz entsprechen.

Bei der nächsten debug Sitzung werden die Trace Meldungen dann in die Datei /tmp/debug.txt geschrieben. Zur fortlaufenden Anzeige benutze ich unter Windows den Befehl tail -f debug.txt in einem CygWin Fenster:

Die Datei enthält zwischen den Buchstaben nicht darstellbare Steuerzeichen. Falls tail diese unerwünscht anzeigt, kann man sie so heraus filtern: tail -f debug.txt | tr -dc '[:print:]\n'

Man kann die Schnittstelle auch so konfigurieren, dass sie die Meldungen im gleichen Format ausgibt, wie ein normaler serieller Port:

monitor tpiu config external uart off 8000000 2000000
itm port 0 on

Die Zahl 8000000 muss der CPU Taktfrequenz entsprechen, die Zahl 2000000 ist die serielle Baudrate - maximal 1/4 des CPU Taktes. Nun kann man die Ausgabe mit einem gewöhnlichen USB-UART Adapter empfangen.

mit ST-Link Utility

Außerhalb einer Debugger-Sitzung kann man das ST-Link Utility zur Anzeige benutzen, und zwar über dem Menüpunkt ST-LINK/Printf via SWO Viewer. Stelle die richtige Taktfrequenz ein und klicke dann auf Start.