Forum: Compiler & IDEs Problem mit STM32 Programmierung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von AVR (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich möchte mich in die STM32 Programmierung einarbeiten. Ich habe hier 
im Forum die PDF Unterlagen von einem Stefan Frings heruntergeladen. 
Vielen Dank für die Sachen :)

Ich habe mit der IDE alles so eingerichtet, wie es im Dokument 
beschrieben ist. Der einzige Unterschied ist, dass ich ein anderes 
Nucleo Board verwende. Ich benutze ein NUCLEO-L152RE.

Ich habe den passenden CMSIS Ordner in mein Projektordner gelegt. In 
meiner main.c die passende Headerfile genommen. In meinem Fall die 
"stm32l152xe.h".

Nun kommt die Fehlermeldung, die ich euch angehängt habe. Er findet die 
"core_cm3.h" nicht. Da ich mich in dem Thema nicht so gut auskenne, weiß 
ich leider nicht, wie ich nun weitermachen soll. Weiß einer von euch, 
wie es dort weiter geht?

MfG

von Markus M. (adrock)


Lesenswert?

Der Compiler weiß nicht wo er das include file

core_cm3.h

finden soll. Das wird wohl im Ordner

CMSIS/Core/Include

liegen. Kenne mich jetzt mit Deiner IDE (Eclipse?) nicht aus, aber 
irgendwo kann man konfigurieren, wo der Compiler nach Files sucht die 
mit

#include "<datei>"

eingebunden werden. Er sucht zuerst im gleichen Verzeichnis wo die Datei 
liegt in der die "#include" Anweisung steht, und danach in einer 
konfigurierten Liste von Verzeichnissen.

Das ist der Teil im Aufruf des gcc den Du im Fenster am rechten Rand 
hast, mit -I<verzeichnis> ... kann man die Verzeichnisse beim 
Compileraufruf mitgeben, in denen nach Includes gesucht wird.

Da der gcc ja von Deiner IDE aufgerufen wird, müsste das irgendwo in 
Deinen Projekteigenschaften eingestellbar sein.

EDIT: Google hilft, es sollte wohl dort einstellbar sein:

Project > Properties > C/C++ Build > Settings > Tool Settings > MCU GCC 
Compiler > Include paths

: Bearbeitet durch User
Beitrag #6460865 wurde von einem Moderator gelöscht.
von AVR (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Markus,

vielen Dank für deinen Beitrag. Ich habe den passenden Pfad eingegeben 
und der Compiler findet nun die core_cm3.h Headerfile.

Nun habe ich ein anderes Problem. Bei mir werden die Funktionen wie 
WRITE_REG oder SET_BIT nicht gefunden. Siehe angehängtes Bild.

Welche Headerfile muss da denn eingebunden werden? Ich habe dazu 
folgende Seite angeschaut:

http://stefanfrings.de/stm32/stm32f3.html#newlib

Ich habe mir die Rubrik "ARM Libraries" angeschaut. Wenn ich das richtig 
verstanden habe, dann sind die Befehle, die bei mir nicht gefunden 
werden, von ST selbst hinzugefügt worden. Warum findet der Compiler 
diese dann nicht?

MfG

von pegel (Gast)


Lesenswert?

AVR schrieb im Beitrag #6461798:
> Bei mir werden die Funktionen wie
> WRITE_REG oder SET_BIT nicht gefunden.

Das sind keine Funktionen, das sind nur Macro Definitionen aus der 
stm32l1xx.h .

von pegel (Gast)


Lesenswert?

#elif defined(STM32L152xE)
  #include "stm32l152xe.h"

In der stm32l1xx.h wird auch entsprechend des -dSTM32L152xE die zum µC 
passende Header Datei benutzt.

D.h. Du solltest nicht
#include "stm32l152xe.h"
direkt verwenden sondern
stm32l1xx.h
den µC Type unter Define Symbols angeben.

So werden auch alle weiteren µC abhängigen Bedingungen im Projekt 
erfüllt.

von Stefan ⛄ F. (stefanus)


Lesenswert?

AVR schrieb im Beitrag #6459634:
> Ich habe den passenden CMSIS Ordner in mein Projektordner gelegt. In
> meiner main.c die passende Headerfile genommen. In meinem Fall die
> "stm32l152xe.h".

AVR schrieb im Beitrag #6461798:
> Nun habe ich ein anderes Problem. Bei mir werden die Funktionen wie
> WRITE_REG oder SET_BIT nicht gefunden. Siehe angehängtes Bild.

Zusammengefasst:

Du musst die Datei stm32l1xx.h nehmen.

Die Datei core_cm3.h befindet sich in dem anderen Verzeichnis 
CMSIS/core, vermutlich hast du das nicht zur Projektkonfiguration 
(includes) hinzugefügt oder du hast es nur nicht für beide Profile 
Debug+Release gemacht.

: Bearbeitet durch User

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]
  • [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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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