Hallo,
STM32CubeMX kann recht hilfreich sein um die Peripherie des STM32
schnell ohne große Datenblattrecherche zu initialisieren und
anzusprechen.
STM32CubeMX generiert C Code und Projektdaten für unterschiedliche
Entwicklungsumgebungen.
Ich habe die Entwicklungsumgebungen von SW4STM32 und Atollic TrueSTUDIO
aktuell in Verwendung, da diese kostenlos und nicht begrenzt sind.
Jedenfalls hatte ich große Schwierigkeiten mit dem Tool SW4STM32 oder
TrueSTUDIO eigene C++ Module in die von STM32CubeMX erzeugten Projekte
hinzuzufügen. Der Compiler oder Linker hatte immer was zu meckern.
Welchen Weg habe ich für mich gefunden:
1
Mit STM32CubeMX die Projektkonfigurierungen durchführen.
In Project Settings wähle ich als Toolchain die für SW4STM32. Im Reiter
„Code Generator“ wähle ich
„Generate peripheral initialization as a pair of .c .h files per
peripheral“ damit mir der Generator nicht alles in die main.c reinpackt
und lass den Code generieren.
2
Das erstellte Project öffne ich nun mit SW4STM32, selektiere das Projekt
mit der rechten Maustaste und wähle „Convert to C++“. SW4STM32 hat seine
Arbeit für mich getan und kann geschlossen werden.
3
Das Projekt wird nun mit Atollic TrueStudio geöffnet.
Die main.c in main.cpp umbenannt und das Projekt wird nun ohne
Fehlermeldungen gebaut. C++ Module können nun erstellt oder eingebunden
werden.
4
Zum Debuggen muss noch der Richtige unter dem Reiter „Debugger“ gewählt
werden.
Das ist mein Weg um von ST32CubeMX nicht C++ fähige Projekte in C++
fähige zu wandeln.
Idealerweise würde ich mir diese Prozedur gerne ersparen aber ich kenne
keinen anderen Weg. Als Entwicklungsumgebung bin ich dann bei TrueStudio
gelandet.
Wie geht ihr vor um die von ST32CubeMX generierten Projekte C++ fähig zu
bekmomen?
Janosch schrieb:> Wie geht ihr vor um die von ST32CubeMX generierten Projekte C++ fähig zu> bekmomen?
Vielleicht kann man die Probleme ja direkt beheben:
Janosch schrieb:> Der Compiler oder Linker hatte immer was zu meckern.
Verrate doch mal, was da für Fehler auftauchen. Vielleicht sind das ja
die üblichen verdächtigen und leicht zu korrigieren.
Wenn ich z.B. ein mit STM32CubeMX erzeugtes Projekt für SW4STM32 mit
diesem öffne, in C++ convertiere, die main.c in main.cpp umbenenne und
das ganze dann "bauen" lasse, kommt die Meldung:
make: *** [Src/main.o] Error 258
Nu welches Gefrickel sollte ich angehen, damit der Fehler nicht kommt.
Janosch schrieb:> Nu welches Gefrickel sollte ich angehen, damit der Fehler nicht kommt.
Du könntest damit anfangen, den eigentlichen Fehler anzugeben, nicht nur
die letzte Zeile...
Janosch schrieb:> Scheinbar hat der C++ Compiler Schwierigkeiten beim SW4STM32.
Nö, der Compiler wird gar nicht erst aufgerufen.
> Bin aber überfragt, was hier nicht passt.
Da sind runde Klammern im Compiler-Aufruf, welche die Shell nicht mag.
Die kommen vermutlich irgendwie aus den Projekt-Einstellungen; kurios,
dass C nicht betroffen ist. Füge mal Anführungsstriche jeweils um die
beiden "-D..." Argumente ein. Oder lösche sie ganz, eigentlich sollten
die nicht nötig sein.
Dr. Sommer ....
mal ehrlich, ich habe einen Weg wie der Dreck tut.
Ich will mich aufs Programmieren fokussieren und nicht auf Compiler oder
Linker wehwehchen.
Wenn die Brüder von STM32CubeMX mit den Brüdern von SW4STM32, die beide
ja den STM32 unterstützen wollen das net sauber auf die Reihe bekommen,
was will man dazu sagen. In der Regel sitzt das Problem ja vor dem
Computer. Aber das kostenlose Werkzeug ist nicht gerade gut abgestimmt,
was aber sicherlich ginge, wenn man sich den auskennt aber mir scheint,
denen fehlt warum auch immer, der Wille.
Die Scheren sich momentan halt nicht um einfache C++ Unterstützung.
Janosch schrieb:> Dr. Sommer ....> mal ehrlich, ich habe einen Weg wie der Dreck tut.
Na es klang, als würdest du nach einem besseren Weg suchen:
Janosch schrieb:> Idealerweise würde ich mir diese Prozedur gerne ersparen aber ich kenne> keinen anderen Weg. Als Entwicklungsumgebung bin ich dann bei TrueStudio> gelandet.>> Wie geht ihr vor um die von ST32CubeMX generierten Projekte C++ fähig zu> bekmomen?Janosch schrieb:> Ich will mich aufs Programmieren fokussieren und nicht auf Compiler oder> Linker wehwehchen.
Das ist mehr so eine IDE Wehwehchen, die kaputte Makefiles generiert.
Janosch schrieb:> Die Scheren sich momentan halt nicht um einfache C++ Unterstützung.
Das ist überhaupt kein C++ Problem, sondern ein Shell-Problem. C++
Programme auf den STM32 zum Laufen zu bringen ist nicht besonders
schwierig. Man bekommt halt nicht immer alles auf dem Silbertablett
serviert...
Hi,
Habe nun den cubeMX aktualisiert.
Das SW4STM32 sollte auch aktuell sein.
Ansonsten wähle ich den STM32F411re in cubeMX aus. Besser gesagt das
entsprechende Nucleo Board.
Öffne das Projekt aus cubeMX mit SW4STM32 und convertiere das Projekt
durch rechte Maustaste und Wahl von convert to C++.
Anschließend main.c in main.cpp umbenamt und das projekt gebildet.
Ergebnis nach wie vor ohne Erfolg.
make: *** [Src/main.o] Error 258
Habe keine Idee, was da nicht passt.
SW4STM32 bereits neu installiert.
Bei c ist alles ok. Bei c++ gehts nicht.
Über den eingangs geschilderten Weg habe ich keine Probleme.
Habe so FreeRTOS laufen und eigene c++ module eingebunden .... ohne
Probleme.
Janosch schrieb:> Das SW4STM32 sollte auch aktuell sein.
Sollte?
Für das Nucleo mit einer Klasse in eigener h/cpp unter Linux
funktioniert es prima.
Muss wohl andere Ursachen haben.
Hallo,
Habe nun cubeMX und SW4STM32 auf aktuellste Versionen überprüft und
obwohl ich die hatte, deinstalliert und neu installiert.
Erfolg ..... nada.
Das bringt nach wie vor den gleichen Fehler.
Wenn ich ein Projekt mit cubeMX erstelle und mit SW4STM32 in c++ wandle.
In c alles ok.
Erstelle ich ein C++ Projekt gleich mit SW4STM32 und benenne die main.c
in main.cpp um, dann ist alles ok.
Habe auch ein Projekt mit cubeMX für nen STM32F0 erstellt. ......
gleiches Verhalten.
Die Compiler Einstellungen sehe ich wohl in sw4stm32 kann die da aber
nicht editieren.
Ich benutze win10 64bit.
Jetzt ist erst mal Ostern angesagt und dann nach Laune hier
weitergefrickelt.
Einen.... wenn auch unorthodoxen Weg habe ich ja beschrieben.