Forum: Mikrocontroller und Digitale Elektronik STM32 - Eclipse, ARM GCC - Funktionsaufruf geht nicht :-(


von Hans A. (hansachterbahn)


Angehängte Dateien:

Lesenswert?

Hallo liebe μC Gemeinde,

ich hab ein komisches Problem mit meiner Entwicklungsumgebung. Ich kann 
keine Funktionen aus dem StdPreiph des STM32 aufrufen.

Mein System:
Board:           Hitex STM32PerformanceStick
Betriebssystem:  Ubuntu 14.04 LTS
IDE:             Eclipse mit ARM-GCC-Toolchain und OpenOCD

Vorgeschichte:
Vor einer Weile hab ich ein Olimex-Board mit STM32 eingerichtet, jetzt 
soll auch der PerformanceStick noch laufen.

Herangehensweise:
- Den Stick hatte ich relativ schnell mit ARM-GCC und OpenOCD 
eingerichtet
- In Eclipse habe ich ein Template-Projekt (STM32f10x) vom ARM-GCC 
Plugin benutzt um mir ein Projekt zusammenstellen zulassen
- Das erstellte Projekt ließ sich sofort builden und debuggen
- Nach ein paar kleinen Änderungen haben meine USER-LEDs dann auch 
geblinkt (Port und Pins anpassen)
- jetzt wollte ich schauen, ob ich auch die Interrupts in die Reihe 
bekomme und hab ein TIM-Beispielprojekt (TIM9 OC Toggle) von 
http://stm32-spl-doc-online.esy.es/STM32F10x_StdPeriph_Lib_V3.5.0/stm32f10x_stdperiph_lib_um_html/index2.html 
verwendet

Jetzt zum Problem:
- Der Linker kann keine Funktionen aus der stm32f10x_tim.c Source 
aufrufen, obwohl sie im entsprechenden Header (stm32f10x_tim.h) 
deklariert sind und der Header klassisch über #include stm32f10x_tim.h 
in main.c eingebunden ist
- Weiterhin ist auch seltsam, dass Typdefinitionen aus dem Header 
erkannt werden
- Auch die Möglichkeit sich vom Aufruf der Funktion in main.c in die 
stm32f10x.h verweisen zu lassen funktioniert, dennoch ist ein rotes 
Kreuz neben der Funktion und der Builder ist nicht gewillt seine Arbeit 
zu machen
- Wenn ich die Zeilen auskommentiere funktioniert alles.

Es ist bestimmt was ganz banales, aber ich komm einfach nicht drauf...

von Jim M. (turboj)


Lesenswert?

Hans A. schrieb:
> - Der Linker kann keine Funktionen aus der stm32f10x_tim.c Source aufrufen

Dann wird die stm32f10x_tim.o Datei nicht korrekt compiliert oder 
verlinkt.

von René K. (cyprius)


Lesenswert?

Das ARM Eclipse-Plugin exkludiert erstmal alle C-Files des HAL/der 
Stdlib aus dem Build, die nicht benötigt werden. Wenn du mal in das 
entsprechende Verzeichnis schaust, sind die auch ausgegraut. Mit 
Rechtsklick -> Resource Configurations -> Exclude from Build kannst du 
das konfigurieren.

Tückisch daran ist, dass die Headerfiles nicht exkludiert werden, daher 
"siehst" du die Funktionen trotzdem.

von Hans A. (hansachterbahn)


Lesenswert?

Ahhhh...!

Ja super!
René du hast genau ins Schwarze getroffen, es musste ja was banales 
sein. Aber da muss man erst mal drauf kommen.

Mit einem einfachen Rechtsklick und "Exclude" ging es zwar nicht, aber 
ich hab mit dem Stichwort schnell eine Lösung gefunden:

In Eclipse muss man dass in
"Properties ‣ C/C++ General ‣ Paths and Symbols ‣ Source Location"
einstellen.

Dazu klappt man den jeweiligen Source-Folder auf und bearbeitet den 
gesetzten Filter.

Das hab ich von dieser Seite: 
http://stackoverflow.com/questions/15935207/adding-header-files-to-eclipse-build-path-for-c

Vielen Dank, allein hätte ich da noch ewig gesucht!

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.