/*
 * @Description: 
 * @Version: 2.0
 * @Author: Seven
 * @Date: 2023-08-09 15:21:06
 * @LastEditors: Seven
 * @LastEditTime: 2023-09-25 10:12:35
 */
#ifndef KEY_H__
#define KEY_H__
#include "board.h"

//按键编号
enum {
    KEY1 = 0x00,
    KEY2,
    KEY3,
    KEY_MAX,
};

//按键状态
enum {
    KEY_STATUS_DN = 0x00,       //按键按下
    KEY_STATUS_UP = 0x01,       //按键抬起
    KEY_STATUS_NULL = 0xFF,
};

#define GET_KEY1()  GPIO_GetValue(GPIO1, GPIO_BIT4)
#define GET_KEY2()  GPIO_GetValue(GPIO1, GPIO_BIT5)
#define GET_KEY3()  GPIO_GetValue(GPIO1, GPIO_BIT6)

#define KEY_TIMEOUT (5*1000)    //按键超时时间

//按键信息
typedef struct _key_status_t
{
	uint8_t flag;			//是否需要执行按键功能
	uint8_t status;			//开关状态
	uint8_t last_level;		//上次开关电平
}key_status_t;
extern key_status_t key_status[KEY_MAX];

//按键功能
typedef struct _key_para_t
{
    uint8_t flag;
    uint8_t num;
    // timeout_t tt_key;
}key_para_t;


void key_init(void);
uint8_t get_key_bit(uint8_t key);
void key_status_init(void);
void get_key_bit_realtime(void);
void key_handle(void);
void key_timeout_handle(void);
#endif // 

