119 lines
2.6 KiB
C
119 lines
2.6 KiB
C
/**
|
|
******************************************************************************
|
|
* @file Key.h
|
|
* @author jjj
|
|
* @version V1.0.0
|
|
* @date 06/13/2022
|
|
* @brief
|
|
******************************************************************************
|
|
*
|
|
*
|
|
* <h2><center>© COPYRIGHT 2022 </center></h2>
|
|
******************************************************************************
|
|
**/
|
|
|
|
#ifndef _KEY_H
|
|
#define _KEY_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "global.h"
|
|
|
|
#define KEYA_GPIO_PORT GPIOA
|
|
#define KEYC_GPIO_PORT GPIOC
|
|
#define KEYA_COL2 GPIO_PIN_2
|
|
#define KEYA_COL3 GPIO_PIN_1
|
|
#define KEYA_ROW0 GPIO_PIN_0
|
|
#define KEYA_ROW1 GPIO_PIN_3
|
|
#define KEYA_ROW2 GPIO_PIN_6
|
|
#define KEYA_ROW3 GPIO_PIN_5
|
|
#define KEYC_COL0 GPIO_PIN_11
|
|
#define KEYC_COL1 GPIO_PIN_10
|
|
#define KEY_SHAKE_COUNT 4
|
|
#define KEY_PRESS 0
|
|
|
|
#define KEY1 (0x01) //(1)
|
|
#define KEY2 (0x02) //(1<<1)
|
|
#define KEY3 (0x04) //(1<<2)
|
|
#define KEY4 (0x08) //(1<<3)
|
|
#define KEY5 (0x10) //(1<<4)
|
|
#define KEY6 (0x20) //(1<<5)
|
|
#define KEY7 (0x40) //(1<<6)
|
|
#define KEY8 (0x80) //(1<<7)
|
|
#define KEY9 (0x100) //(1<<8)
|
|
#define KEYF (0x200) //(1<<9)
|
|
#define KEY0 (0x400) //(1<<10)
|
|
#define KEYC (0x800) //(1<<11)
|
|
#define KEYDA (0x1000) //(1<<12)
|
|
#define KEYDB (0x2000) //(1<<13)
|
|
#define KEYD (KEYDA|KEYDB)
|
|
#define KEYVA (0x4000) //(1<<14)
|
|
#define KEYVB (0x8000) //(1<<15)
|
|
#define KEYV (KEYVA|KEYVB)
|
|
|
|
|
|
#define KEY1GPIO GPIOC
|
|
#define KEY1PIN KEYC_COL0
|
|
#define KEY2GPIO GPIOC
|
|
#define KEY2PIN KEYC_COL1
|
|
#define KEY3GPIO GPIOA
|
|
#define KEY3PIN KEYA_COL2
|
|
#define KEYDAGPIO GPIOA
|
|
#define KEYDAPIN KEYA_COL3
|
|
|
|
#define KEY4GPIO GPIOC
|
|
#define KEY4PIN KEYC_COL0
|
|
#define KEY5GPIO GPIOC
|
|
#define KEY5PIN KEYC_COL1
|
|
#define KEY6GPIO GPIOA
|
|
#define KEY6PIN KEYA_COL2
|
|
#define KEYDBGPIO GPIOA
|
|
#define KEYDBPIN KEYA_COL3
|
|
|
|
#define KEY7GPIO GPIOC
|
|
#define KEY7PIN KEYC_COL0
|
|
#define KEY8GPIO GPIOC
|
|
#define KEY8PIN KEYC_COL1
|
|
#define KEY9GPIO GPIOA
|
|
#define KEY9PIN KEYA_COL2
|
|
#define KEYVAGPIO GPIOA
|
|
#define KEYVAPIN KEYA_COL3
|
|
|
|
#define KEYFnGPIO GPIOC
|
|
#define KEYFnPIN KEYC_COL0
|
|
#define KEY0GPIO GPIOC
|
|
#define KEY0PIN KEYC_COL1
|
|
#define KEYCGPIO GPIOA
|
|
#define KEYCPIN KEYA_COL2
|
|
#define KEYVBGPIO GPIOA
|
|
#define KEYVBPIN KEYA_COL3
|
|
|
|
#define KEY_CHECKCOUNT 30
|
|
#define KEY_VALIDATE 20
|
|
|
|
#define KEY_HOLDCOUNT 500
|
|
|
|
typedef struct
|
|
{
|
|
volatile uint8_t pressed;
|
|
volatile uint8_t released;
|
|
volatile uint8_t press_count;
|
|
volatile uint8_t release_count;
|
|
volatile uint16_t hold_count;
|
|
}KEY_STATUS;
|
|
|
|
void Key_Init(void);
|
|
|
|
void Key_Event(void);
|
|
void Key_SendData(void);
|
|
void Key_Wait(void);
|
|
uint8_t startShowDevicemod(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _KEY_H */
|