初级会员

- 积分
- 58
- 金钱
- 58
- 注册时间
- 2015-10-13
- 在线时间
- 5 小时
|
1金钱
代码如下,key线程扫描按键,并输出,但是每次按键都会执行2次输出,去掉防抖就OK了,这是怎么回事那?
static u8 key_up=1;//按键按松开标志
u8 key_scan(u8 mode)
{
if(mode)
key_up=1; //支持连按,每次扫描都认为是无按键
if(key_up&&(PGin(6)||PGin(7)))
{
rt_thread_delay(10);//去抖动
rt_kprintf("position1!\n");
key_up=0;
if(PGin(6))
return 6;
else if(PGin(7))
rt_kprintf("position2!\n");
return 7;
}
else if(PGin(6)==0&&PGin(7)==0)
key_up=1;
return 0;// 无按键按下'
}
void key_thread_entry(void* parameter)
{
rt_hw_key_init();
while(1)
{
switch(key_scan(0))
{
case 6:
PBout(15)=!PBout(15);
rt_kprintf("O11 is plug");
break;
case 7:
timer_conrol();
break;
default:
break;
}
rt_thread_delay(100);
}
}
|
|