118 lines
2.4 KiB
C
118 lines
2.4 KiB
C
|
|
//<2F><><EFBFBD><EFBFBD> FIFO <20><>
|
|||
|
|
|
|||
|
|
#ifndef __KEY_H
|
|||
|
|
#define __KEY_H
|
|||
|
|
|
|||
|
|
#include "sys.h"
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
#define KEY1_DOWN KEY_1_DOWN
|
|||
|
|
#define KEY1_UP KEY_1_UP
|
|||
|
|
#define KEY1_LONG KEY_1_LONG
|
|||
|
|
|
|||
|
|
#define KEY2_DOWN KEY_2_DOWN
|
|||
|
|
#define KEY2_UP KEY_2_UP
|
|||
|
|
#define KEY2_LONG KEY_2_LONG
|
|||
|
|
|
|||
|
|
#define JOY_OK_DOWN KEY_3_DOWN //OK
|
|||
|
|
#define JOY_OK_UP KEY_3_UP
|
|||
|
|
#define JOY_OK_LONG KEY_3_LONG
|
|||
|
|
|
|||
|
|
#define JOY_U_DOWN KEY_4_DOWN //<2F><>
|
|||
|
|
#define JOY_U_UP KEY_4_UP
|
|||
|
|
#define JOY_U_LONG KEY_4_LONG
|
|||
|
|
|
|||
|
|
#define JOY_D_DOWN KEY_5_DOWN //<2F><>
|
|||
|
|
#define JOY_D_UP KEY_5_UP
|
|||
|
|
#define JOY_D_LONG KEY_5_LONG
|
|||
|
|
|
|||
|
|
#define JOY_L_DOWN KEY_6_DOWN //<2F><>
|
|||
|
|
#define JOY_L_UP KEY_6_UP
|
|||
|
|
#define JOY_L_LONG KEY_6_LONG
|
|||
|
|
|
|||
|
|
#define JOY_R_DOWN KEY_7_DOWN //<2F><>
|
|||
|
|
#define JOY_R_UP KEY_7_UP
|
|||
|
|
#define JOY_R_LONG KEY_7_LONG
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD> ID
|
|||
|
|
typedef enum
|
|||
|
|
{
|
|||
|
|
KEY1 = 0,
|
|||
|
|
KEY2,
|
|||
|
|
JOY_OK,
|
|||
|
|
JOY_U,
|
|||
|
|
JOY_D,
|
|||
|
|
JOY_L,
|
|||
|
|
JOY_R
|
|||
|
|
} KEY_ID_E;
|
|||
|
|
|
|||
|
|
#define KEY_FILTER_TIME 5 //<2F><><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><CAB1> 50ms<6D><73><EFBFBD><EFBFBD>λ 10ms
|
|||
|
|
#define KEY_LONG_TIME 100 //<2F><><EFBFBD><EFBFBD> 1 <20>룬<EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
uint8_t (*IsKeyDownFunc)(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>жϺ<D0B6><CFBA><EFBFBD><EFBFBD><EFBFBD>1 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
uint8_t Count; //<2F>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
uint16_t LongCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
uint16_t LongTime; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD><C2B3><EFBFBD>ʱ<EFBFBD>䣬0 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ⳤ<EFBFBD><E2B3A4>
|
|||
|
|
uint8_t State; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>»<EFBFBD><C2BB>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
uint8_t RepeatSpeed; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
uint8_t RepeatCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
} KEY_T;
|
|||
|
|
|
|||
|
|
typedef enum
|
|||
|
|
{
|
|||
|
|
KEY_NONE = 0,
|
|||
|
|
|
|||
|
|
KEY_1_DOWN, //1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_1_UP, //1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_1_LONG, //1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
KEY_2_DOWN, //2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_2_UP, //2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_2_LONG, //2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
KEY_3_DOWN, //3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_3_UP, //3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_3_LONG, //3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
KEY_4_DOWN, //4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_4_UP, //4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_4_LONG, //4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
KEY_5_DOWN, //5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_5_UP, //5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_5_LONG, //5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
KEY_6_DOWN, //6 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_6_UP, //6 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_6_LONG, //6 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
KEY_7_DOWN, //7 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_7_UP, //7 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
KEY_7_LONG, //7 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
} KEY_ENUM;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD> FIFO <20><><EFBFBD><EFBFBD>
|
|||
|
|
#define KEY_FIFO_SIZE 10
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
uint8_t Buf[KEY_FIFO_SIZE]; //<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
uint8_t Read; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
|
uint8_t Write; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>дָ<D0B4><D6B8>
|
|||
|
|
} KEY_FIFO_T;
|
|||
|
|
|
|||
|
|
void KEY_Init(void);
|
|||
|
|
void KEY_Scan10ms(void);
|
|||
|
|
void KEY_PutKey(uint8_t _KeyCode);
|
|||
|
|
uint8_t KEY_GetKey(void);
|
|||
|
|
uint8_t KEY_GetKeyWait(void);
|
|||
|
|
uint8_t KEY_GetKeyState(KEY_ID_E _ucKeyID);
|
|||
|
|
void KEY_WaitKey(KEY_ID_E _ucKeyID);
|
|||
|
|
void KEY_SetKeyParam(uint8_t _ucKeyID, uint16_t _LongTime, uint8_t _RepeatSpeed);
|
|||
|
|
void KEY_ClearKey(void);
|
|||
|
|
|
|||
|
|
#endif
|