/* * 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_ */