29-PS2_Keyboard-Library (STM32F4)

Mit dieser Library kann eine normale PS2-Tastatur an die STM32F4-CPU angeschlossen werden. Im Moment habe ich nur die Empfangsrichtung implementiert (die LEDs können also nicht gesteuert werden)

Zum Betrieb wird eine externe Interrupt-Leitung und ein normaler GPIO-Pin benötigt. Ich habe PB7 und PA8 am Discovery-Board benutzt.

Die Tastatur muss nach dem Init gepollt werden und liefert den Ascii-Code der gedrückten Taste zurück. Alle Tasten die benutzt werden sollen, müssen im C-File in einer Tabelle eingetragen werden. (Im Moment ist als Umschalttaste nur SHIFT implementiert)
Hinweis : Die Tastatur braucht nach PowerOn ca 500ms bevor sie bereit ist.

Die Tastatur läuft eigentlich mit +5V und bräuchte vermutlich Pegelwandler auf 3,3V
(ich habe sie einfach an +3,3V angeschlossen das funktioniert bei mir auch :-)

Wegen der Interrupt-Leitung wird auch die Library “STM32_UB_EXT_INT5TO9″ benötigt.

PS2-Steckerbelegung :

ps2

Benutzte Pins :

1
2
Clock an PB7 (per externem Interrupt-7)
Data an PA8

Voraussetzungen :

1
2
Benutzte Module der CooCox-IDE : GPIO
Benutzte Librarys : STM32_UB_EXT_INT5TO9

Funktionen :

1
2
void UB_PS2_Key_Init(void);        // zum init der Tastatur
uint8_t UB_PS2_Key_GetAscii(void); // zum auslesen des Tastatur-Puffers

Beispiel :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//--------------------------------------------------------------
// File     : main.c
// Datum    : 02.04.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der PS2-Keyboard-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------
 
#include "main.h"
#include "stm32_ub_ps2_key.h"
#include "stm32_ub_led.h"
 
int main(void)
{
  uint8_t ascii_wert;
 
  SystemInit(); // Quarz Einstellungen aktivieren
 
  // init der LEDs
  UB_Led_Init();
 
  // init der PS2-Tastatur
  UB_PS2_Key_Init();
 
  while(1)
  {
    // PS2-Tastatur abfragen
    ascii_wert=UB_PS2_Key_GetAscii();
    // Grüne LED mit der Taste 'a' toggeln
    if(ascii_wert=='a') UB_Led_Toggle(LED_GREEN);
 
    // Rote LED mit der Taste 'A' toggeln
    if(ascii_wert=='A') UB_Led_Toggle(LED_RED);
 
    // Blaue LED mit der Taste 'F1' toggeln
    if(ascii_wert==0x81) UB_Led_Toggle(LED_BLUE);
 
    // Orange LED mit jeder Taste toggeln
    if(ascii_wert!=0) UB_Led_Toggle(LED_ORANGE);
  }
}

Hier die Library zum Download :

ub_stm32f4_ps2_key_v100

Hier der komplette CooCox-Projektordner zum Download :

Demo_29_PS2_KEY


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert