记录一次计数代替空延时的按键检测方法ByWYJ
//按键处理
void keyProc(void)
{
static unsigned int Cnt = 0,KEY = 0;
if((GPIO_ReadInputData(GPIOA) & 0xF000) != 0xF000) //按下时刻:判断GPIOA口是否有一个或多个按键按下
{
Cnt += 1;
KEY = GPIO_ReadInputData(GPIOA);
if (Menu == 5) // 当Menu == 5且GPIO_Pin_13按下时
{
if(Cnt % 20 == 0) //调节的速度可以自己修改
//执行长按不抬起就执行的动作
}
}
else //抬起
{
if(Cnt > 5) //短按抬起
{
Cnt = 0;
if((KEY & GPIO_Pin_12) == 0)
{
//执行短按抬起后的动作
}
else if((KEY & GPIO_Pin_13) == 0)
{
//执行短按抬起后的动作
}
}
else if(Cnt > 100) //长按抬起
{
Cnt = 0;
//执行长按抬起后的动作
}
else
Cnt = 0;
}
}
作者QQ4577105