Forum: Compiler & IDEs Erste Schritte STM32 mit PlatformIO, welches Framework?


von Patrick W. (patrick_w806)


Lesenswert?

Hallo zusammen,

nach diversen Arduino und ESP32 Projekten soll es diesmal ein STM32F103 
werden. Als Entwicklungsumgebung soll VSCode mit PlatformIO genutzt 
werden.

Hier beginnt mein Problem bei der Auswahl der vielen verfügbaren 
Frameworks.
- Arduino
- Zephyr
- STM32Core
- mbed
- eines der vielen anderen?

Das ganze ist ein Hobby Projekt und wird die Firmware für einen Roboter. 
Gesteuert wird der Roboter später mittels ROS von einem NVidia Jetson 
aus.

Folgende Dinge muss die Firmware später beherrschen:
- USB Kommunikation mit Jetson
- UART zu zwei anderen Boards
- I2C zu zwei Winkelsensoren (blöderweise feste I2C Adressen)
- DC Motorsteuerung mittels PWM
- optional CAN Bus

Mir fehlt da aktuell noch der richtige Einstieg. Ich erwarte nicht, dass 
mir hier jemand den Code schreibt, aber vielleicht kann mir jemand bei 
der Auswahl des Frameworks behilflich sein?

STM32Core schreckt mich aktuell noch etwas ab. Ich habe da einige Codes 
mir angesehen und es scheint ja wirklich sehr viel Low-Level Code zu 
sein. Schöner wäre natürlich, wenn man bereits fertige Libraries nehmen 
könnte, wie ich es von Arduino und ESP32 kenne. Mir sind aber auch die 
Limitationen einiger Libraries (z.B. Verwendung von Delay) bekannt. Die 
möchte ich gern vermeiden.

Grüße
Patrick

von J. S. (jojos)


Lesenswert?

Mbed-OS unterstützt die genannten Devices. Die delays kann man da gut 
durch die EventQueue ersetzen. Über PIO habe ich das wenig benutzt, das 
hat ein eigenes Buildsystem.
ARM hat da leider sein Personal abgezogen, aber eine Weiterentwicklung 
gibt es in Mbed-CE, Community Edition.
Für die ROS Anbindung gab es afaik auch Code für Mbed.

: Bearbeitet durch User
Beitrag #7472801 wurde vom Autor gelöscht.
von Alexander (alecxs)


Lesenswert?

neulich in der Werbung
https://embdev.net/topic/557423

von Bauform B. (bauformb)


Lesenswert?

Patrick W. schrieb:
> Folgende Dinge muss die Firmware später beherrschen:
> - USB Kommunikation mit Jetson
> - optional CAN Bus

Der F103 kann USB und CAN nicht gleichzeitig, nur nacheinander. Außerdem 
ist das der älteste STM32, magst du nicht mit etwas modernerem anfangen?

von Rudolph R. (rudolph)


Lesenswert?

Dann nimm doch Arduino.
Vor allem ist unter dem STM32 Arduino Core die STM32 HAL Library 
drunter, man kann auch an den Arduino Klassen vorbei direkt HAL und 
LL_HAL benutzen.
Und wenn einem danach ist natürlich auch Register-Zugriffe.
Damit kann man gezielt Teil-Aspekte anders implementieren, zum Beispiel 
SPI mit DMA benutzen, oder sich am Ende komplett von Arduino lösen ohne 
gleich alles neu machen zu müssen.

Und ja, der STM32F103 ist etwas schwer angestaubt.

von Alexander (alecxs)


Lesenswert?

Lässt sich ein STM32 ebenso arduinomäßig "programmieren" wie ein 
Arduino, so mit Funktionen pinMode(pin, OUTPUT); analogWrite(pin, 
value); usw?

Was ich bisher an STM32 Code gesehen habe war für mich wildes 
Registergeschiebe und völlig unverständlicher asm ähnlicher C Code. Und 
zum flashen benutzt man einen ST Link, weiß nicht ob das noch dieselbe 
Liga ist.

: Bearbeitet durch User
von Thomas W. (Gast)


Lesenswert?

Alexander schrieb:
> Und
> zum flashen benutzt man einen ST Link, weiß nicht ob das noch dieselbe
> Liga ist.

Und als Belohnung bekommst Du richtiges Debugging (mir ist einfach die 
Lebenszeit nicht wert weiter printf() oder writeLN() zu benutzen). Kann 
man machen wenn man nichts hat, aber ein ST-Link-Clone kostet 3-4 EUR 
(gehe mal in den Biergarten, ein  Hefeweizen ist mittlerweile ca. 5EUR).

Gruesse

Th.

P.S.: Der Arduino Zero war und ist der beste Arduino in dem 
Uno-Formfaktor. Eingebauter Debugging-Chip.

von Rudolph R. (rudolph)


Lesenswert?

Alexander schrieb:
> Lässt sich ein STM32 ebenso arduinomäßig "programmieren" wie ein
> Arduino, so mit Funktionen pinMode(pin, OUTPUT); analogWrite(pin,
> value); usw?

Ja, sonst würde als Framework da ja nicht Arduino dran stehen.

https://github.com/stm32duino/Arduino_Core_STM32

: Bearbeitet durch User
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.