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