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
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.
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
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 .
#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.
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.
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.