按键例程
struct
{
uint16_t KeyAddTimes;
uint8_t KeyDecTimes;
uint8_t KeyFirstFlag;
}stKey;
static void Key_LongPress(void)
{
printf("============ 按键长按 ==========")
}
void Key_Task(void)
{
if(KEY_PRESS == Key_ReadPinStatus())
{
if(Key_ReadPinStatus() != stKey.KeyFirstFlag)
{
if(stKey.KeyAddTimes < KEY_TIME_COUNT)
{
stKey.KeyAddTimes += 1;
}
else
{
Key_LongPress();
stKey.KeyAddTimes = 0;
stKey.KeyFirstFlag = Key_ReadPinStatus();
}
}
}
else if(stKey.KeyAddTimes != 0 )
{
stKey.KeyAddTimes = 0;
stKey.KeyFirstFlag = Key_ReadPinStatus();
}
else
{
stKey.KeyFirstFlag = Key_ReadPinStatus();
}
}
void Timer_Callback_Fun(void)
{
Key_task();
}