mikrocontroller.net

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


Autor: STM_Beginner (Gast)
Datum:

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

Danke im vorraus.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die "System Workbench for STM32" basiert auf Eclipse und hat dazu einen 
Assistenten.

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

Autor: Alex D. (daum)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: STM_Beginner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Erklehr Behr (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
STM_Beginner schrieb:
> Vielleicht reicht ja auch ein Tip?

Zunächst mal dieser Tip im Anhang.

Bitte lesen, verstehen und verinnerlichen.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Konstruktor darf in der Header Datei keinen Code-Block enthalten - 
auch keinen leeren.

Autor: Alex D. (daum)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johannes S. (jojos)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ein Beispiel für gemischtes C und C++ Projekt:

Youtube-Video "Neural Network in Cpp for STM32 - DIY - Part 1"

Den Code für die kluge aber hektische Sonnenblume gibt es auf github.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.