Files
2024-03-02 01:06:06 +08:00

65 lines
908 B
C

/*
* drv_key.h
*
* Created on: Jun 11, 2023
* Author: gxms0
*/
#ifndef USER_DRV_KEY_H_
#define USER_DRV_KEY_H_
#include "ch32v20x.h"
#include "Global.h"
typedef enum {
release = 0,
pressed,
}keystate;
typedef struct sKEY
{
GPIO_TypeDef *GPIO;
uint32_t Pin;
uint32_t delay;
uint32_t tick;
keystate last;
keystate state;
keystate current;
uint8_t type;//0 按下时点平为低,1按下时电平为高
struct sKEY *next_ptr;
void ( *pressed )( void );
void ( *released )( void );
void ( *clicked )( void );
void ( *doubleclicked )( void );
}KEY_t;
typedef KEY_t* KEY_ptr;
extern KEY_t key1;
extern KEY_t key2;
extern KEY_t key3;
extern KEY_t key4;
void key_init(void);
void key_thread(void);
void key_config(KEY_ptr ptr, GPIO_TypeDef *GPIO, uint32_t Pin, uint8_t type);
void key_update(KEY_ptr ptr);
#endif /* USER_DRV_KEY_H_ */