65 lines
908 B
C
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_ */
|