Initial import
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
/******************************************************************************
|
||||
* @file key.h
|
||||
* @brief 按键状态机:短按 / 长按 / 释放
|
||||
* @author cyWu <1917507415@qq.com>
|
||||
* @date 2026.08.25
|
||||
* @version V1.0.0
|
||||
* @history
|
||||
* - V1.0.0, 2026.08.25, cyWu, 首次发布,实现按键短按/长按/释放状态机
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __KEY_H__
|
||||
#define __KEY_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
/*============================================================================*/
|
||||
/* 宏定义 */
|
||||
/*============================================================================*/
|
||||
|
||||
#define KEY_TIMER_MS 1
|
||||
#define KEY_MAX_NUMBER 12
|
||||
#define DEBOUNCE_TIME 30
|
||||
#define KEY_INTERVAL 30
|
||||
|
||||
#define CLICK 1
|
||||
#define DbLCLICK 2
|
||||
|
||||
typedef enum {
|
||||
USR_KEY_USER = 0,
|
||||
USR_KEY_COUNT
|
||||
} keyList;
|
||||
|
||||
typedef enum {
|
||||
Bit_RESET = 0,
|
||||
Bit_SET
|
||||
} BitAction_t;
|
||||
|
||||
typedef enum {
|
||||
KEY_ST_NULL = 0,
|
||||
KEY_ST_RELEASE,
|
||||
KEY_ST_SURE,
|
||||
KEY_ST_UP,
|
||||
KEY_ST_DOWN,
|
||||
KEY_ST_LONG
|
||||
} keyStatus_t;
|
||||
|
||||
typedef enum {
|
||||
NULL_Event = 0,
|
||||
DOWN_Event,
|
||||
SHORT_Event,
|
||||
LONG_Event,
|
||||
LAST_Event,
|
||||
DBCL_Event,
|
||||
RELEASE_Event
|
||||
} keyEvent_t;
|
||||
|
||||
typedef enum {
|
||||
KEY_DISABLE = 0,
|
||||
KEY_ENABLE = !KEY_DISABLE
|
||||
} keyEnable_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t keyShortFlag;
|
||||
uint8_t keyLongFlag;
|
||||
uint8_t keyInterval;
|
||||
uint8_t keyFrequency;
|
||||
uint16_t keyLongTime;
|
||||
uint16_t keyLastTime;
|
||||
uint32_t keyCount;
|
||||
keyEnable_t keyShield;
|
||||
BitAction_t keyLevel;
|
||||
BitAction_t keyDownLevel;
|
||||
keyStatus_t keyStatus;
|
||||
keyEvent_t eventType;
|
||||
uint8_t (*keyReadValue)(void);
|
||||
} keyFSM_t;
|
||||
|
||||
typedef struct {
|
||||
void (*nullPressCb)(void);
|
||||
void (*releasePressCb)(void);
|
||||
void (*downPressCb)(void);
|
||||
void (*ShortPressCb)(void);
|
||||
void (*longPressCb)(void);
|
||||
void (*lastPressCb)(void);
|
||||
void (*dbclPressCb)(void);
|
||||
} keyFunc_t;
|
||||
|
||||
typedef struct {
|
||||
keyFSM_t fsm;
|
||||
keyFunc_t func;
|
||||
} keyCategory_t;
|
||||
|
||||
void keyParaInit(keyCategory_t *keys);
|
||||
void setKeyEventParams(uint8_t key_event, keyCategory_t key_param);
|
||||
void keyCheckProcess(void);
|
||||
void keyHandle(void);
|
||||
void reset_key_Status(keyList key_index);
|
||||
|
||||
#endif /* __KEY_H__ */
|
||||
Reference in New Issue
Block a user