Hallo, hat jemand ein STM32 Nucleo Projekt mit C++, bzw einen Link ? Ich suche für die Eclipse Umgebung. Danke im vorraus.
Die "System Workbench for STM32" basiert auf Eclipse und hat dazu einen Assistenten. File/New/Project/C++ Project/AC6 STM32 MCU Project
STM_Beginner schrieb: > Hallo, > hat jemand ein STM32 Nucleo Projekt mit C++, bzw einen Link ? > Ich suche für die Eclipse Umgebung. Was genau suchst du? Eine Anleitung, ein fertiges Projekt als Beispiel? Oder eigentlich nur eine Referenz. Ich programmiere STM32 in SystemWorkbench4STM32 (Eclipse basiert) in C++. Für die Peripherals benutze ich direkte Registerzugriffe, die ich in Class Templates abstrahiere und danach mit typedefs für jedes dieser Peripherals einen typen erstelle (z.B. Timer als class template, dann TIM1, TIM2, TIM3 als typedefs bzw mit using). Für Informationen über die Peripheral Register ließt du dir am besten das Reference Manual zu deinem STM32 Controller durch.
Vielen Dank für Eure Antworten, Ich habe mir mit dem STM32CubeMX für mein NUCLEO F446RE Board ein Projekt erstellt. Nun habe ich einen STEP Motor 28BYJ angeschlossen, dreht sich mit "Ansi C" auch wunderbar. Ziel ist für mich aber eine C++ Klasse zu erstellen. Bisher Header:********************************************************** #ifndef STEPPER28BYJ_H_ #define STEPPER28BYJ_H_ #include "stm32f4xx_hal.h" #include "stm32f4xx_hal_gpio.h" #include "def.h" class Stepper28BYJ { public: Stepper28BYJ() { ----- "Hier Fehlermeldung: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token" ---- } void SetValues( OutputPin pn1, OutputPin pn2, OutputPin pn3, OutputPin pn4); virtual ~Stepper28BYJ(); void WriteStepperPin( GPIO_PinState p1, GPIO_PinState p2, GPIO_PinState p3, GPIO_PinState p4); OutputPin pin1, pin2, pin3, pin4; }; #endif /* STEPPER28BYJ_H_ */ CPP:************************************************************* #include "Stepper28BYJ.hpp" Stepper28BYJ::Stepper28BYJ() { // TODO Auto-generated constructor stub } Stepper28BYJ::~Stepper28BYJ() { // TODO Auto-generated destructor stub } void Stepper28BYJ::SetValues( OutputPin pn1, OutputPin pn2, OutputPin pn3 , OutputPin pn4) { // TODO Auto-generated destructor stub pin1 = pn1, pin2 = pn2, pin3 = pn3, pin4 = pn4; } void Stepper28BYJ::WriteStepperPin( GPIO_PinState ps1, GPIO_PinState ps2, GPIO_PinState ps3, GPIO_PinState ps4){ HAL_GPIO_WritePin(pin1.OutPort, pin1.OutPin, ps1); HAL_GPIO_WritePin(pin2.OutPort, pin2.OutPin, ps2); HAL_GPIO_WritePin(pin3.OutPort, pin3.OutPin, ps3); HAL_GPIO_WritePin(pin4.OutPort, pin4.OutPin, ps4); } Stepper28BYJ step; def.h:*************************************************************** #ifndef DEF_H_ #define DEF_H_ typedef struct { GPIO_TypeDef* OutPort; uint16_t OutPin; } OutputPin; #endif /* DEF_H_ */ Leider erhalte ich die Fehlermeldung(siehe oben) angezeigt, deswegen die Frage nach einem C++ Projekt als Beispiel. Vielleicht reicht ja auch ein Tip? Danke im vorraus.
STM_Beginner schrieb: > Vielleicht reicht ja auch ein Tip? Zunächst mal dieser Tip im Anhang. Bitte lesen, verstehen und verinnerlichen.
Der Konstruktor darf in der Header Datei keinen Code-Block enthalten - auch keinen leeren.
Stefanus F. schrieb: > Der Konstruktor darf in der Header Datei keinen Code-Block enthalten - > auch keinen leeren. Er darf schon, kann aber dann nicht in einer .cpp Datei deklariert werden, nennt sich inline declaration.
mbed-cli installieren und mit dem Blinky https://github.com/ARMmbed/mbed-os-example-blinky anfangen. Das kann erstmal einfach in der Kommandozueile übersetzt und auf das Board geladen werden. Dann mit 'mbed export' die Projektdateien für Eclipse erzeugen und in SW4STM32 oder gnuarmeclipse verwenden.
Hier ein Beispiel für gemischtes C und C++ Projekt: https://www.youtube.com/watch?v=gOpClMD4M38 Den Code für die kluge aber hektische Sonnenblume gibt es auf github.
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.