118 lines
2.4 KiB
C
Raw Normal View History

//<2F><><EFBFBD><EFBFBD> FIFO <20><>
2021-08-04 10:46:24 +08:00
#ifndef __KEY_H
#define __KEY_H
#include "sys.h"
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
2021-08-04 10:46:24 +08:00
#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;
2021-08-04 10:46:24 +08:00
void KEY_Init(void);
void KEY_Scan10ms(void);
void KEY_PutKey(uint8_t _KeyCode);
2021-08-04 10:46:24 +08:00
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);
2021-08-04 10:46:24 +08:00
#endif