mikrocontroller.net

Forum: Projekte & Code AVR ARM STM32F3 Discovery GPIO Einführung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Axel S. (axelac)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht 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.

Autor: Markus M. (mmvisual)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Joe G. (feinmechaniker) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine gute Anleitung, vielen Dank!

@Off-Topic (Fortschritt in Übersichtlichkeit und Funktionalität)
I/O - Funktion einer Z80 PIO
I/O – Funktion eines AVR
I/O – Funktion deines ARM STM32

Autor: J. T. (chaoskind)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: J. T. (chaoskind)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: J. T. (chaoskind)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollte das lieber in nen neuen Thread? Falls ja, könnte ein OP bitte 
meine beiden Beiträge in nen neuen schieben?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.