83-KeyMatrix-Library (STM32F4)

Hier eine Library mit der man eine Tastenfeld das als X/Y-Matrix aufgebaut ist an den STM32F4 anschließen kann.

Es spielt keine Rolle wie die Anordnung der Tasten-Matrix ist (3×3, 4×3, 2×5 usw).
Es werden auch keine externen Dioden oder PullUps benötigt.

Im H-File wird die Größe der Tastatur-Matrix eingestellt (im Beispiel 3×4)
und im C-File werden die GPIO-Pins der X- und Y-Richtung zugeordnet.

Es gibt eine Funktion um die gedrückte Taste auszulesen, diese liefert als Rückgabewert “0″ falls gar keine Taste gedrückt ist. Falls eine Taste (oder mehrere) gedrückt sind, wird die Tasten-Nummer der ersten gefundenen Taste zurückgeliefert. (Im Beispiel 1 bis 12)

Zum entprellen der Tasten wird kein Timer sondern nur ein Schleifenzähler benutzt.
(dieser muss event. bei euch angepasst werden)

Hinweis : falls der Rückgabewert >0 ist auch wenn gar keine Tastatur angeschlossen ist, müssen an die Y-Leitungen externe PullUps (4k7) angebracht werden.

Bilder :

keymatrix

Voraussetzungen :

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

Funktionen :

1
2
void UB_KeyMatrix_Init(void);    // zum init der Tastatur-Matrix
uint8_t UB_KeyMatrix_Scan(void); // zum auslesen der gedrueckten Taste

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
//--------------------------------------------------------------
// File     : main.c
// Datum    : 02.05.2014
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.4
// GCC      : 4.7 2012q4
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der Key-Matrix-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------
 
#include "main.h"
#include "stm32_ub_keymatrix.h"
#include "stm32_ub_led.h"
 
int main(void)
{
  uint8_t key_value;
 
  SystemInit(); // Quarz Einstellungen aktivieren
 
  // init der LEDs
  UB_Led_Init();
 
  // init der Tastatur-Matrix
  UB_KeyMatrix_Init();
 
  while(1)
  {
    // Tastatur-Matrix abfragen
    key_value=UB_KeyMatrix_Scan();
    // LEDs je nach Tasten-Nr schalten
    if(key_value==1) UB_Led_On(LED_GREEN); else UB_Led_Off(LED_GREEN);
    if(key_value==2) UB_Led_On(LED_RED); else UB_Led_Off(LED_RED);
    if(key_value==3) UB_Led_On(LED_BLUE); else UB_Led_Off(LED_BLUE);
    if(key_value==4) UB_Led_On(LED_ORANGE); else UB_Led_Off(LED_ORANGE);
  }
}

Hier die Library zum Download :

ub_stm32f4_key_matrix_v100

Hier der komplette CooCox-Projektordner zum Download :

Demo_83_KEY_Matrix


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