Definitionen von GPIO Registeradressen (STM32F4)

#6437782
Lesenswert?

Christoph K. schrieb:
> Danke. Sehr umfangreiches Dokument (fast 2000 Seiten). Das soll keine
> Kritik sein, im Gegenteil.

Kannst du vielleicht mal etwas Kontext geben um was es dir nun genau 
geht und warum du gerade DAS wichtigste Dokument zur STM32F4 Entwicklung 
nicht findest und warum es jetzt um dessen Umfang geht?

Ich komm da grad nicht ganz mit.

Nochmal zur Eingangsfrage:

GPIOB_BASE ist doch eine Struktur aus der StdPerihpLib, welche die 
Basisfunktionen der GPIO Register enthält. Es gibt auch TIMER_BASE usw.
Das ist IMO keine Sache die das Datenblatt direkt erklären würde. Das 
Datenblatt erklärt aber die einzelnen Register, welche in GPIOB_BASE 
verwendet werden.
Es gibt auch ein Manual zur StdPeriphLib und sicher auch zur HAL. 
Eventuell würde DAS deine Frage besser beantworten.
OP #6437812
Lesenswert?

Vergiß erst mal meine Bemerkung zum Umfang des Dokuments.

Ich suche die Adresse des GPIO, das für die Programmierung der I/O-Pins 
von Port B (aber auch allgemein) zuständig ist. Ich will PB10/PB11 als 
UART3 konfigurieren.

Den Wert von GPIOA_BASE=0x40020000 habe ich in einem Assemblerbeispiel 
gefunden. Aber diese Adressen müssen doch in einem elementaren Dokument 
zu finden sein. Laß es meinetwegen 2000 Seiten groß sein.
#6437815
Lesenswert?

Christoph K. schrieb:
> Den Wert von GPIOA_BASE=0x40020000 habe ich in einem Assemblerbeispiel
> gefunden. Aber diese Adressen müssen doch in einem elementaren Dokument
> zu finden sein. Laß es meinetwegen 2000 Seiten groß sein.

In verlinkten Dokument findest du alle Register samt Adressen. 
GPIOA_BASE ist aber kein Register, sondern die Basisadresse für alle 
GPIOA Register. Also das 1. dieser Register sozusagen.
Seite 287 zeigt dir alle GPIO Register samt Adressen (als Offset von der 
Basisadresse).
Auf Seite 65 findest du alle Register samt Adressen.
Dort findest du auch deine GPIOA Basisadresse. Siehe Bild.
Angehängte Dateien:
#6438372
Lesenswert?

Christoph K. schrieb:
> Johannes S. schrieb:
>> Die Quelle für die Namen und die Strukturen sind die DFP von Keil:
>> https://www.keil.com/dd2/pack/
>
> Danke (allen). Ich möchte keinerlei Softwarepaket hinzuziehen, sondern
> rein mit den Herstellermanuals (ST) arbeiten.

Das ist hochgradig albern.

Du sollst kein "Softwarepaket hinzuziehen", sondern das CMSIS [1] 
Headerfile #includieren, das deinem C Compiler die IO-Register deines µC 
und die Bits darin namentlich bekannt macht.

[1] Cortex Microcontroller Software Interface Standard

Dieser Standard wurde extra deswegen etabliert, damit man die diversen 
Cortex µC portabel programmieren kann. Und jeder µC-Hersteller (und oft 
auch die Produzenten der IDE/Toolchain) stellt die zur Verfügung.

Natürlich kannst du dir diese typedefs und #defines auch selber in dein 
eigenes Headerfile schreiben oder - schlimmmer noch - die entsprechenden 
Hardware-Adressen hartcodiert in dein Programm schreiben. Nur warum? Um 
dann jeden Fe ler und Fipptehler erst selber suchen und finden zu 
dürfen? Gibt es irgendeinen Grund (abgesehen von NIH) das alles selber 
machen zu wollen? Oder gar zu müssen?
Gast #6438668
Lesenswert?

"hochgradig albern"

Ich will nicht die Diskussion schon wieder lostreten, ob Assembler oder 
C.
In diesem Falle benutze ich ein C. Aus ganz zwingenden Gründen benutze 
ich Assembler. Ich glaube, ich ändere mal meinen Namen, damit sich in 
Zukunft solche Bemerkungen erübrigen. Natürlich schreibe ich die 
Konstanten in einen File, den ich inkludiere.
Gast #6438692
Lesenswert?

Zunächst mal analysiere ich gerade ein vorhandenes Paket, das jemand 
anderes geschrieben hat. Da muß ich die Gegebenheiten so hinnehmen, wie 
sie sind. Starte ich eigene Entwicklung, werde ich es sicher so machen, 
daß ich die CMSIS Nomenklatur verwende, die sich ja wohl deckt mit den 
Namen, die in der Hardware-Dokumentation verwendet werden.

Aber um die Programmierung zu verstehen, möchte ich mich möglichst nah 
an der Hardware und der HW-Dokumentation "entlanghangeln".

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