**kfu 发表于 2013-8-3 20:47 
代码看过了,你没有延时去除抖动,所有就会误动作了
/*
* 函数名:TimingDelay_Decrement
* 描述 :获取节拍程序
* 输入 :无
* 输出 :无
* 调用 :在SysTick中断函数SysTick_Handler()调用
*/
void TimingDelay_Decrement(void)
{
//判断是否有按键按下
if(Key_Statu == Key_ON)
{
//有按键按下,延时30us去抖
TimingDelay++;
if(TimingDelay >= 30)
{
//计数清0
TimingDelay = 0;
//再次判断是否真的有按键被按下
if(Key_Statu == Key_ON)
{
//清除按键状态
Key_Statu = Key_OFF;
//判断是哪一个按键被按下
Key_Check();
}
}
}
}
我这里有用系统滴答定时器来进行延时30us进行去抖呀 |