/* * @Description: * @Version: 2.0 * @Author: Seven * @Date: 2022-06-14 17:47:28 * @LastEditors: Seven * @LastEditTime: 2022-06-15 09:25:31 */ #ifndef __KEY_H #define __KEY_H #include "stm32f10x.h" #include "tools.h" extern uint8_t hd_id; //PCB版本检测 #define PCB_V0 0 #define PCB_V1 1 #define HD_ID_0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2) #define HD_ID_1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3) #define HD_ID_2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4) #define HD_ID_3 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_5) //按键key #define KEY_NUM 3 typedef struct _key_info { uint8_t execute; //执行标记 uint8_t flag; //按键是否是第一次按下 uint8_t pres_num; //规定时间内按下次数 uint8_t pres_total_num; //按键按下的总次数 uint8_t key_state; //当前按键状态 uint8_t key_state_tmp; //上次按键状态 // uint32_t key_state_tick; // timeout_t tt_key_press; //按下滤波延时 timeout_t tt_key_release; //抬起滤波延时 timeout_t tt_key; // }key_info_t; extern key_info_t key_info[KEY_NUM]; #define KEY0() GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)//读取按键0 #define KEY0_PRES 1 //KEY0按下 #define KEY1_PRES 2 //KEY1按下 #define KEY2_PRES 3 //KEY2按下 #define WKUP_PRES 4 //KEY_UP按下(即WK_UP/KEY_UP) void HD_ID_Init(void); uint8_t get_HD_ID(void); void key_init(void); void key_press(void); #endif