AVR ARM STM32F3 Discovery GPIO Einführung

#3215123
Lesenswert?

In der beigefügten pdf Datei habe ich einmal aufgeführt, wie die GPIO 
Registerstruktur der ARM Prozessoren STM32F im Vergleich zu den 8 Bit 
AVR Prozessoren ist, um Einsteigern, die erste Versuche mit dem 32Bit 
STM32F Prozessoren zB. mit dem F3 Discovery Board machen möchten, eine 
Hilfestellung zu geben. Ein einfaches C Program zeigt die 
Initialisierung der GPIO Ports für elementare LED Ansteuerung und Button 
Abfrage und die GPIO Programmierung.
Angehängte Dateien:
#3261680
Lesenswert?

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?
#3261682
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren