Forum: Mikrocontroller und Digitale Elektronik [ARM - STM32F7] Tutorial/Grundlagen C-Code


von Armin L. (armin_l)


Lesenswert?

Hallo Leute!

Ich bin kein Neuling mehr wenn es um Programmieren in C und 
Mikrocontroller geht. Allerdings gilt das nicht für die Verbindung von 
beidem:
Ich habe bis jetzt nur C-Programme geschrieben, die auf dem PC liefen. 
Und als ich das letzte Mal mit einem Mikrocontroller gearbeitet habe, 
habe ich in MATLAB/Simulink Modelle erstellt, aus denen ich mir dann 
C-Code generieren lassen habe. Ich habe nur recht wenig Code selbst 
ergänzt.
In meinem kommenden Projekt werde ich mit dem Board NUCLEO-F767ZI 
arbeiten (STM32). Den grundlegenden C-Code für die Pin-Belegung werde 
ich mithilfe des Tools CubeMX von STM erzeugen lassen, den Rest werde 
ich aber wohl selbst programmieren müssen.
Daher meine Frage: Kennt ihr gute Tutorials für STM32F7xx bzw. 
Code-Beispiele für simple, grundlegende Konfigurationen?
Bei meiner letzten Suche im Internet (und hier im Forum) habe ich nur 
ein paar YouTube-Videos gefunden. Ansonsten waren die meisten Tutorials 
auf die anderen MCU-Familien (< F7) ausgerichtet.
Oder sind die Tutorials für z.B. STM32F4xx auch brauchbar?
Das Programming Manual, das ich vom Hersteller STM gefunden habe, 
bezieht sich leider nur auf die Assembler-Befehle, bringt mir also im 
Hinblick auf C nicht viel...

Wisst ihr irgendwas oder habt ein paar Tipps? Ich bin für jede Hilfe 
dankbar!

von Johannes S. (Gast)


Lesenswert?

Das Board ist mbed enabled, 
https://os.mbed.com/platforms/ST-Nucleo-F767ZI/
Ein Beispiel in den Online Compiler laden, kompilieren, das bin file 
speichern. Das Board per USB Kabel anschliessen und das bin file auf den 
USB Massenspeicher kopieren, fertig, läuft.

von Dr. Sommer (Gast)


Lesenswert?

STM32 => Kapitel Tutorials für diverse Tool-Kombinationen

Die STM32F4 und -F7 sind sich sehr ähnlich. Die grundlegende 
Arbeitsweise mit IDE, Compiler, Startupcode, Linkerscript, Bibliotheken, 
Debugger / Debug-Adapter ist bei allen Cortex-M, und somit allen 
STM32Fxx, gleich. Letztendlich unterscheidet sich nur die Wahl der 
korrekten Varianten der genannten Dinge, ein paar Compileroptionen und 
eben der konkrete Code für die Peripherie-Ansteuerung.

von Armin L. (armin_l)


Lesenswert?

Vielen Dank für den Hinweis!
Eigentlich wollte ich fürs Programmieren die System Workbench für STM32 
(SW4STM32) benutzen. Das ist eine IDE von STM auf Basis von Eclipse. 
Kann ich auch einfach den Quellcode aus den Internet-Beispielen da rein 
kopieren anstatt diesen Online-Compiler zu benutzen? Oder benötigt die 
Nutzung des mbed OS noch irgendwelche zusätzlichen Libraries, die die 
System Workbench nicht hat?

von Johannes S. (Gast)


Lesenswert?

Der Online Compiler wäre etwas für einen 'Schnellstart' um etwas blinken 
zu sehen, editieren ist für wachsende Projekte natürlich etwas mühsamer 
und debuggen geht auch nicht.
Man kann die Projekte aber auch exportieren, SW4STM32 wird auch 
unterstützt. Es geht auch komplett ohne den Online Compiler mit dem 
mbed-cli (command line interface). Für Windows gibt es dafür eine 
einfache Installation die auch eine passende gnu toolchain 
mitinstalliert. Dann wird ein Beispiel per 'git clone' geholt und kann 
entweder mit 'mbed compile' übersetzt werden oder mit 'mbed export' auch 
ein Projekt für die IDE erstellt werden.
Intern benutzt mbed für die STM32 auch die HAL die Cube benutzt. Für 
Hardware Komponenten die mbed nicht unterstüzt kann man also Code mit 
Cube erzeugen lassen und in zusätzliche Klassen für mbed packen.
Im mbed-os5 ist ein RTOS mit drin, das kann man mit so einer fetten MCU 
auch gut nutzen.
Siehe auch: Beitrag "mbed - oder es muss nicht immer Arduino sein"

von Armin L. (armin_l)


Lesenswert?

Dr. Sommer schrieb:
> STM32 => Kapitel Tutorials für diverse Tool-Kombinationen
>
> Die STM32F4 und -F7 sind sich sehr ähnlich. Die grundlegende
> Arbeitsweise mit IDE, Compiler, Startupcode, Linkerscript, Bibliotheken,
> Debugger / Debug-Adapter ist bei allen Cortex-M, und somit allen
> STM32Fxx, gleich. Letztendlich unterscheidet sich nur die Wahl der
> korrekten Varianten der genannten Dinge, ein paar Compileroptionen und
> eben der konkrete Code für die Peripherie-Ansteuerung.

Danke, dann werde ich mir diese Tutorials auch mal zu Herzen nehmen.

Johannes S. schrieb:
Für Windows gibt es dafür eine
> einfache Installation die auch eine passende gnu toolchain
> mitinstalliert. Dann wird ein Beispiel per 'git clone' geholt und kann
> entweder mit 'mbed compile' übersetzt werden oder mit 'mbed export' auch
> ein Projekt für die IDE erstellt werden.

D.h. ich bräuchte mindestens einmal Admin-Rechte, um die mbed-cli und 
die Toolchain auf Windows zu installieren?

von Johannes S. (Gast)


Lesenswert?

mbed-cli möchte auch einen USB Treiber installieren, der ist aber nicht 
unbedingt nötig. Für die anderen Komponenten wie Python, Bibliotheken 
für Python, Compiler sind Admin Rechte normalerweise nicht nötig. Aber 
bei Windows ist es ja meistens besser etwas mit Admin Rechten zu 
installieren, eine Garantie dafür das es ohne geht kann ich jetzt nicht 
geben. Versuch macht kluch. Die SW4STM32 IDE will aber auch Treiber für 
den STLink installieren, wenn die nicht schon vorhanden ist wäre das ein 
Abwasch.
Das mbed-cli ist offene Software unter Apache 2.0 Lizenz und liegt auf 
github: https://github.com/ARMmbed/mbed-cli
falls die admins nörgeln.

von Dr. Sommer (Gast)


Lesenswert?

Also die Kombination folgender Tools lässt sich problemlos ohne 
Admin-Rechte installieren:
* Eclipse
* GNU-MCU-Eclipse-Plugin
* GCC-ARM-Embedded
* Build-Tools (sh.exe, make.exe)
* STM32CubeFx Bibliotheken
Lediglich der Treiber für den Programmer, z.B. JLink, muss als Admin 
installiert werden. Wenn es einen Programmer gibt der über WinUSB 
funktioniert ließe sich das wohl auch umgehen. Diverse Arten von 
Bootloader gingen auch ohne Admin-Rechte, aber ohne Debugging ist das 
Arbeiten doch sehr mühsam.

von Armin L. (armin_l)


Lesenswert?

Ja genau, das Problem ist eher, dass die IT-Abteilung immer ganz genau 
informiert werden will was installiert werden soll.
Ist der JLink jener genannte USB-Treiber, den mbed-cli installieren 
will?

von Johannes S. (Gast)


Lesenswert?

Hier ist die Liste was das mbed-cli installiert:
https://os.mbed.com/docs/v5.7/tools/installing-with-the-windows-installer.html
Der 'serial driver' ist für die automatische Erkennung der Boards, das 
ist aber nicht nötig. Man kennt sein Target ja und stellt das einmal ein 
'mbed target NUCLEO_F767ZI'.

von Dr. Sommer (Gast)


Lesenswert?

Nur mit dem mbed Zeug alleine kann man aber nicht debuggen. Ich würde 
produktiv nie ohne Debugger arbeiten, und die brauchen m.W. immer 
Treiber. Da die aber von hinreichend seriösen Firmen wie ST (Debugger 
"ST-Link") oder Segger (Debugger "J-Link") stammen und von allen 
möglichen Firmen kommerziell genutzt werden, sollte die IT sich da nicht 
allzu sträuben...

von Dr. Sommer (Gast)


Lesenswert?

Ich hab vorhin überlesen dass du ein Nucleo nutzt. Da ist ja ein ST-Link 
Debugger drauf, daher wirst du den vermutlich nutzen wollen. Dafür 
brauchst du den ST-Link-Treiber:
http://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-utilities/stsw-link009.html

von Johannes S. (Gast)


Lesenswert?

Und den bringt die IDE Installation schon mit.
Man kann die mbed-cli Komponenten auch selber einzeln installieren, aber 
sowas mag der gemeine Windows User ja eher nicht. Und weil mbed Multi 
Kulti ist kann man auch auf Linux oder MacOS arbeiten. Und wenn der GCC 
nicht gut genug ist kann man IAR oder Keil (=ARM) verwenden.
Da es ja scheinbar um eine größere Bude geht: für git und hg müssen die 
Konfigs angepasst werden wenn der Internetzugang über einen Proxy läuft.

von Dr. Sommer (Gast)


Lesenswert?

Johannes S. schrieb:
> Man kann die mbed-cli Komponenten auch selber einzeln installieren, aber
> sowas mag der gemeine Windows User ja eher nicht.
So könnte man aber besser kontrollieren, was Admin-Rechte hat und was 
nicht - man kann dafür sorgen dass ausschließlich der Treiber von ST so 
installiert wird, und der Rest mit User-Rechten.

Johannes S. schrieb:
> Und wenn der GCC
> nicht gut genug ist kann man IAR oder Keil (=ARM) verwenden.
Der GCC ist schon sehr gut, und kann auch aktuelle Sprachstandards. Ist 
nur etwas fummeliger zu bedienen.

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