Forum: Compiler & IDEs STM32 mit Codesourcery will kein C++


von Flo (Gast)


Lesenswert?

Hallo zusammen,
Ich beschäftige mich seit kurzer Zeit mit dem STM32 und benutze den 
STM32F105RB, also mit 128k Flash und 32k RAM.

Zum Einstieg benutze ich das Projekt "stm32_chan_fat" von M. Thomas.
Das Linkerskript habe ich an den größeren RAM angepasst und es 
funktioniert auch alles gut.
Ich kann das Programm in den Flash laden und debuggen.
Zum testen lasse ich einfach einen Portpin toggeln.

Jetzt wollte ich Templates benutzen und habe dafür auf C++ umgeschaltet.
main.c in main.cpp umbenannt und im makefile bei CPPSRC eingefügt.

Das Programm läuft sauber an, aber nur ein paar Zyklen, dann ist Ruhe.
Zylin zeigt das Programm weiter als running an, aber der Portpin toggelt 
nicht mehr.

Ich bin ziemlicher Neuling auf dem Gebiet.
Muss ich noch etwas anpassen, damit es mit C++ sauber läuft?

Vielen Dank im Voraus!
Flo

: Verschoben durch Moderator
von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Im "STM32 ChaN-Fat"-Projekt habe ich, wenn richtig erinnert noch nicht 
alles reingepackt, was für C++-Unterstützung erforderlich ist 
(Linker-Script und Startup). Mglw. ist dieses Projekt eine bessere Basis 
für Experimente mit C++: 
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/index.html#cm3_cpp1 
- es ist nicht allzu ausgiebig getestet (eigentlich nur mit dem 
enthaltenen Demo-Code, also nicht mit templates). Rückmeldungen und 
Fehlerberichte willkommen.
(Habe den Thread ins "GCC" Forum verschoben - passt dort besser)

von Flo (Gast)


Lesenswert?

Danke.
Mit dem Projekt klappt es!

von Flo (Gast)


Lesenswert?

So, schon das nächste Problem.
Mit dem C++ Projekt scheinen keine Interrupts zu laufen.
Ich will USART1 mit TX Interrupt benutzen.
Der gleiche Code funktioniert im "stm32_chan_fat" aber nicht im C++ 
Projekt.
Vielleicht weißt Du auf die Schnelle, woran das liegen kann?

Vielleicht bin ich aber auch mit C++ falsch.
Ich habe eine schöne Template-Funktion gefunden, die den Zugriff auf 
Port Pins sehr einfach macht.
http://www.webalice.it/fede.tft/stm32/stm32_gpio_and_template_metaprogramming.html
Deshalb und weil C++ noch einige nette Erweiterungen zu C hat, wollte 
ich C++ benutzen.
Ich könnte die Portzugriffe natürlich auch ohne Templates machen.
Unter C gibt es bestimmt auch Tricks, das zu vereinfachen.

Macht es Sinn, auf C++ zu gehen, oder besser C?

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.