Difference between revisions of "ARM Embedded Tutorial - Simple GPIO on and off output/de"

From Free Pascal wiki
Jump to navigationJump to search
Line 31: Line 31:
 
<syntaxhighlight>
 
<syntaxhighlight>
 
PortC.CRH := $00300000;  
 
PortC.CRH := $00300000;  
 +
</syntaxhighlight>
 +
=== '''ODR''' Ganzer Port beschreiben ===
 +
Mit dieser Funktion, wird der '''ganze''' Port auf einmal beschrieben.
 +
 +
<syntaxhighlight>
 +
// Nur Pin13 wird auf HIGH gestellt.
 +
PortC.BSRR := 1 shl 13;
 +
 +
// Alle Pin auf LOW.
 +
PortC.BSRR := 0;
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revision as of 21:02, 13 April 2018

Template:Translate

Einfache GPIO Ein und Aus-gabe

Register für Portzugriff

Für GPIO-Zugriffer, stehen folgende Register zu Verfügung:

  • CRL - Funktions-Register LOW.
  • CRH - Funktions-Register HIGH.
  • IDR - Input Data Register
  • ODR - Output Data Register
  • BSRR - Bit Reset Register
  • BRR - Bit Set Reset Register
  • LCKR - Port Configuration Lock Register


GPIO einschalten

Bevor man man auf die GPIO zugreifen kann, müssen diese eingeschalten werden.
Ohne die ist kein Zugriff möglich ! Dies geschieht folgendermassen für die PortA - PortC.

RCC.APB2ENR := RCC.APB2ENR or (%111 shl 2);

Direkte Portmanipulation

Bevor man einen GPIO-Pin auf HIGH schalten kann, muss man diesen als Ausgang konfigurieren. Dies geht über die Register CRL und CRH.

CRx Pin-Funktion einstellen

Für die Funktionseinstellung steht pro Pin ein Nibble (4Bit) zu Verfügung. Pin13 an PortC auf Ausgabe. Da 13 höher als 7 ist, wird dafür das HIGH-Register CRH verwendet. 13 - 8 = 5; Somit ist es das fünfte Nibble in CHR. Pin0 - Pin7 würde man mit CHL konfigurieren.

PortC.CRH := $00300000;

ODR Ganzer Port beschreiben

Mit dieser Funktion, wird der ganze Port auf einmal beschrieben.

// Nur Pin13 wird auf HIGH gestellt.
PortC.BSRR := 1 shl 13; 

// Alle Pin auf LOW.
PortC.BSRR := 0;

Siehe auch

Autor: Mathias