Forum: Mikrocontroller und Digitale Elektronik STM32 Nucleo C++ Eclipse


von STM_Beginner (Gast)


Lesenswert?

Hallo,
hat jemand ein STM32 Nucleo Projekt mit C++, bzw einen Link ?
Ich suche für die Eclipse Umgebung.

Danke im vorraus.

von Stefan F. (Gast)


Lesenswert?

Die "System Workbench for STM32" basiert auf Eclipse und hat dazu einen 
Assistenten.

File/New/Project/C++ Project/AC6 STM32 MCU Project

von Alex D. (daum)


Lesenswert?

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.

von STM_Beginner (Gast)


Lesenswert?

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.

von Erklehr Behr (Gast)


Angehängte Dateien:

Lesenswert?

STM_Beginner schrieb:
> Vielleicht reicht ja auch ein Tip?

Zunächst mal dieser Tip im Anhang.

Bitte lesen, verstehen und verinnerlichen.

von Stefan F. (Gast)


Lesenswert?

Der Konstruktor darf in der Header Datei keinen Code-Block enthalten - 
auch keinen leeren.

von Alex D. (daum)


Lesenswert?

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.

von Johannes S. (Gast)


Lesenswert?

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.

von pegel (Gast)


Lesenswert?

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