Forum: Mikrocontroller und Digitale Elektronik STM32F4 Tastenabfrage C++


von spannungsfreak (Gast)


Lesenswert?

Guten Tag,

ich habe gerade mit einem STM32F407 Mikroprozessor begonnen zu 
programmieren. Dies in C++.

Ich habe bereits erfolgreich einige LED's aus- und eingeschalten und 
möchte nun einen Taster abfragen. Ist der Taster aktiv sollten alle 
LED's leuchten, ist er nicht aktiv sollten keine LED's leuchten(Kann 
auch umgekehrt sein, es muss nur klar sein ob der Taster gedrückt wurde 
oder nicht..)

Die LEDs befinden sich auf GPIOD8-GPIOD15 und wurden bereits 
initialisiert.
Der Taster befindet sich auf GPIOE8 und wurde ebenfalls initialisiert.

Nun weiss ich leider echt nicht wie ich in C++ einen Taster abfragen 
kann. Kann mir bitte jemand helfen?


Ich stelle mir ca. so einen Code vor:

main()
{
  Initialisierung();
  if(Taster gedrückt)    //Tastenabfrage??
  {
    LEDs on
  }
  else
  {
    LEDs off
  }
}

von Chefkoch (Gast)


Lesenswert?

Poste doch mal den Header und die Source deiner Klasse mit der du die 
Pins als Ausgang setzt und ein- und ausschaltest.

Letztlich ist der Unterschied nur, ein anderes Register zu lesen und 
eine Art bool GetPinLogicLevel() Methode zu implementieren.
Welches Register das ist, hängt von der Port Base Adresse und der Pin 
Nummer ab. Ist ja alles in Headern definiert und hast du scheinbar schon 
benutzt.

Die PortBase und PinNummern sind heiße Kandidaten für 
Konstruktorparameter. Deswegen frage ich nach deiner Pinklasse. Wenn die 
sinnvoll gemacht ist, nimmt derern Konstruktor schon z.B. unter anderem 
Port und Pin Adresse.

von Dr. Sommer (Gast)


Lesenswert?

spannungsfreak schrieb:
> Nun weiss ich leider echt nicht wie ich in C++ einen Taster abfragen
> kann.

Im C++ Standard steht nichts über Taster. Du wirst ein API dafür 
benutzen müssen. Wenn du die HAL oder SPL nutzt, lies in deren Anleitung 
nach wie das damit geht. Wenn du direkt auf Register zugreifst, lies im 
Reference Manual nach. Lesen musst du noch selber tun, das erledigt das 
Forum nicht für dich.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.