AVR ARM STM32F3 Discovery GPIO Einführung

OP #3215123
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:
(Firma: EleLa - www.elela.de)
Gut geschrieben!
Du könntest noch speziell/deutlicher hervorheben, dass unbedingt erst 
der Clock aktiviert werden muss und dann erst darf die jeweilige 
Periphere initialisiert werden, denn sonst klappt das nicht.
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..

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.