一开始用的正点原子的按键扫描,代码简单,但用于多功能按键的实现就有点不够用了,后来我自己写了一下,新手刚写完,望多多指教。谢谢。
按键对应IO口.h(写在对应H文件里)
#define KEY_mid GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)
#define KEY_up GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)
#define KEY_down GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)
#define KEY_left GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)
#define KEY_right GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)
按键扫描结构体.h
typedef struct
{
uchar PressTime;
uchar LooseTime;
uchar press;//按下
uchar loose;//一直松开
uchar PressLoose;//按下松开有效
uchar ContiPress;
} key_stat;
typedef struct
{
uchar MPressTime;
uchar MLooseTime;
uchar MShortPress;//短按下
uchar MLongPress;//长按下
uchar Loose;//一直松开
uchar MPressLoose;//按下松开有效
uchar MPressNumber;
uchar MContiPress;//连按与否
} key_multi;
extern key_stat Key_Up;
extern key_stat Key_Down;
extern key_multi MKey_Right;
extern key_multi MKey_Left;
extern key_multi MKey_Right;
extern key_multi MKey_Left;
void Key_Scan(uint8_t mode);
void Key_Multi(void);