Forum: Mikrocontroller und Digitale Elektronik CodeBlocks und STM32F3Discovery, Probleme beim Compilieren


von J. T. (chaoskind)


Lesenswert?

Moin Moin,
ich hatte diesen Artikel 
Beitrag "AVR ARM STM32F3 Discovery GPIO Einführung"
gefunden, und dort schon nachgefragt, aber scheinbar ist der Thread 
tot...
Darum mach ich hier nochmal nen Neuen auf und kopier hier rein, was ich 
da geschrieben hab.





MoinMoin

Erstmal vielen Dank für die Einführung, ich hatte mich vor einiger Zeit
schonmal mit f3Disco versucht, auch mit CodeBlocks, da bin ich aber
schon gescheitert, die ganzen Header und den Compiler richtig
zuzuweisen. Nachdem ich einige Zeit Pause machen musste, hab ich das
Board nun mal wieder rausgekramt, als ich auf das Tut hier gestoßen bin.
Immerhin hab ich CodeBlocks nun so weit, das es versucht, zu
compilieren.

Ich hab dann das C-File in CodeBlocks eingefügt, auf compilieren
geklickt, da hat über die void main (void) gemeckert, die hab ich dann
zu ner int main (void) gemacht. Da waren die Warnungen schonmal auf
Null.... aber dann gabs ja noch die 9 Fehlermeldungen. Hier mal ein
BuildLog:



-------------- Build: Debug in MalSehen (compiler: GNU ARM GCC
Compiler)---------------

arm-none-eabi-gcc.exe -Wall  -g  -Os
-IC:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\_htmresc
-IC:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\De
vice\ST\STM32F30x\Include
-IC:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\De
vice\ST\STM32F30x\Source\Templates\arm
-IC:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\In
clude
-IC:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\Li
b\ARM
-IC:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\Li
b\GCC
-IC:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\RT
OS
-IC:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\SV
D
-IC:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\STM32_US
B-FS-Device_Driver\inc
-IC:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\STM32F30
x_StdPeriph_Driver\inc
-IC:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Project\Peripheral
_Examples\GPIO_IOToggle
-IC:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Utilities\STM32F3_
Discovery
-IC:\Programme\CodeBlocks\stm32f3-discovery-basic-template-master
-IC:\Programme\CodeBlocks\Projekte\ARM\MalSehen -c main.c -o
obj\Debug\main.o
arm-none-eabi-g++.exe  -o bin\Debug\MalSehen.exe obj\Debug\main.o
C:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\Lib\
ARM\arm_cortexM0b_math.lib
C:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\Lib\
ARM\arm_cortexM0l_math.lib
C:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\Lib\
ARM\arm_cortexM3b_math.lib
C:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\Lib\
ARM\arm_cortexM3l_math.lib
C:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\Lib\
ARM\arm_cortexM4b_math.lib
C:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\Lib\
ARM\arm_cortexM4bf_math.lib
C:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\Lib\
ARM\arm_cortexM4l_math.lib
C:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\Libraries\CMSIS\Lib\
ARM\arm_cortexM4lf_math.lib
c:/programme/codeblocks/gnu_tools_arm_embedded/bin/../lib/gcc/arm-none-e
abi/4.6.2/../../../../arm-none-eabi/lib\libc.a(lib_a-exit.o):  In
function `exit':
exit.c:(.text.exit+0x2c): undefined reference to `_exit'
obj\Debug\main.o: In function `InitClock':
C:\Programme\CodeBlocks\Projekte\ARM\MalSehen/main.c:20: undefined
reference to `RCC_HSEConfig'
C:\Programme\CodeBlocks\Projekte\ARM\MalSehen/main.c:21: undefined
reference to `RCC_WaitForHSEStartUp'
obj\Debug\main.o: In function `InitGPIOE':
C:\Programme\CodeBlocks\Projekte\ARM\MalSehen/main.c:26: undefined
reference to `RCC_AHBPeriphClockCmd'
C:\Programme\CodeBlocks\Projekte\ARM\MalSehen/main.c:34: undefined
reference to `GPIO_Init'
obj\Debug\main.o: In function `InitGPIOA':
C:\Programme\CodeBlocks\Projekte\ARM\MalSehen/main.c:39: undefined
reference to `RCC_AHBPeriphClockCmd'
C:\Programme\CodeBlocks\Projekte\ARM\MalSehen/main.c:47: undefined
reference to `GPIO_Init'
obj\Debug\main.o: In function `main':
C:\Programme\CodeBlocks\Projekte\ARM\MalSehen/main.c:61: undefined
reference to `GPIO_SetBits'
C:\Programme\CodeBlocks\Projekte\ARM\MalSehen/main.c:67: undefined
reference to `GPIO_ResetBits'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
9 errors, 0 warnings (0 minutes, 1 seconds)


wo liegen denn die ganzen "GPIO_ResetBits" und vor allem die
RCC_AHBPeriphClockCmd?.. die hatte mir schonmal bei nem Versuch
dazwischengefunkt...

MfG Chaos

P.S.

würde es statt den ganzen
-IC:\Programme\CodeBlocks\STM32F3-Discovery_FW_V1.1.0\_htmresc usw
eigentlich auch reichen einfach nur -IC:\Programme\CodeBlocks\ zu
schreiben bzw anzugeben? Findet er sich dann von selbst in den
Subdirectories zurecht?

P.P.S.

Nun hab ich noch gelesen, das der ganze Ordner,
STM32F3-Discovery_FW_V1.1.0, in das Projekt kopiert werden muss. In
meinem Fall also in //Codeblock/Projekte/STM32...? oder muss der da noch
in //bin oder //obj? Irgendwie ist mir das noch nicht so richtig klar...
Heißt das, das ich in jedes neue Projekt immer den ganzen STM32F3-Ordner
kopieren muss?

mhh, irgendwie macht es keinen Unterschied, egal wohin ich den Ordner
kopiere..

von J. T. (chaoskind)


Lesenswert?

Gibt es denn nicht irgendwo ne Schritt für Schritt Anleitung, die mir 
sagt, welche Dateien wo liegen müssen, und was ich in CodeBlocks 
einstellen muss, damit ich das STM32F3Discovery zum laufen bekomm? 
Irgendwie reichen meine Googlekünste wohl nicht.

Verzweifelte Grüße, Chaos

von hp-freund (Gast)


Lesenswert?


von J. T. (chaoskind)


Lesenswert?

Da bin ich auhc schon drauf gestoßen, aber die wollen 120€ für das EPS.. 
das is mir n bischn viel für privat und erstmal zu sehen, wie man denn 
die LED´s an und aus bekommt.

von hp-freund (Gast)


Lesenswert?

Nur mal probieren?

http://forums.codeblocks.org/index.php?topic=13609.0

ganz unten:
Unlicensed version has 25% flash capacity limit (32KB max.) for selected 
device.

Wenn CodeBlocks nichts freies für STM32 bietet, wie wäre es mit eclipse?

Oder alles mit Makefile...

von J. T. (chaoskind)


Lesenswert?

Ja das ist ja schonmal was, ich registriers grad, bin gespannt, ob das 
dann auch klappt. Mit Eclipse wären meine Probleme auch aus der Welt 
sagst du? Und für die Makefile-geschichte, kannst du mir da ein Tutorial 
empfehlen? oder falls das möglich ist, mir auf die schnelle n kleinen 
Anriß davon geben?

Aber erstmal vielen Dank für deine Hilfe =)

MfG Chaos

von holger (Gast)


Lesenswert?

>Mit Eclipse wären meine Probleme auch aus der Welt
>sagst du?

Damit fangen deine Probleme erst an. Das ist nicht so einfach.
Eclipse pur aufzusetzen bedeutet eine lange schmerzvolle
Einarbeitung. Openocd noch dazu macht noch mal lange aua.

> Und für die Makefile-geschichte, kannst du mir da ein Tutorial
>empfehlen?

makefile zu Fuss willst du als Anfänger auch nicht.

Schau dir doch mal http://www.coocox.org/index.html an. Vieleicht kommst 
du damit zurecht.

von J. T. (chaoskind)


Lesenswert?

Hmm... CooCox CoIDE hab ich auch schon versucht... da sind im Endeffekt 
die selben Probleme aufgetaucht. Es sind zwar einige Beispiele dabei, 
aber die sind dann fürs F0 oder F4 und das klappt damit auch nicht, das 
F3 anzusprechen. Und dort hatte ich genau die selben Probleme, die 
STM32Libary überhaupt einzubinden. Dort hatte ich es auch soweit, das er 
immerhin die #includeten Files gefunden hat, aber dennoch hat er auch 
dort solche Querverweisfehlermeldungen rausgespuckt.

von holger (Gast)


Lesenswert?

>Und dort hatte ich genau die selben Probleme, die
>STM32Libary überhaupt einzubinden.

Wieso? Die musst du doch nur in dein Projekt reinlegen
damit die Dateien auch mit compiliert werden.

Die Fehlermeldungen vom Linker sagen auch das du
die Dateien der Library nicht mit compiliert hast.
Es reicht nicht nur die Header Dateien zu includen.

von hp-freund (Gast)


Lesenswert?


von J. T. (chaoskind)


Lesenswert?

soo die EPS-Geschichte läuft nun so halbwegs. Er compiliert zwar, aber 
spuckt kein Hex-File aus... Ich meine im "normalen" CodeBlocks konnte 
man bei den Compilersettings ein Häkchen bei "erzeuge 
Hexfile"(sinngemäß) setzen, aber ich find das nicht mehr. Könnt ihr mir 
da auf die schnelle weiterhelfen?

Und dann werd ich mir nun mal das diller-tech angucken =)

von J. T. (chaoskind)


Lesenswert?

HEUREKA!! Es geht es geht es geht. Ich glaub ich hab mich in meinem 
ganzen Leben noch nicht so darüber gefreut, das n paar simple LED´s an 
und ausgehen.

In den Buildoptions stand das er eine project.mot erstellen soll, daraus 
hab ich dann einfach .hex gemacht, und nun macht er mir auch meine Hex.

Nochmal vielen Dank für eure Hilfe,
vom halbtotgefreuten Chaos =)

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.