记录一次计数代替空延时的按键检测方法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;
	}
}

 

posted @ 2024-11-05 22:42  iZJ"Qq4577105  阅读(1)  评论(0编辑  收藏  举报