按键长按短按识别的同一程序,在裸奔程序中能正常运行,而在移植了OS的任务中不能正常运行,就是下面的按键扫描程序
void KEY_Scan(void)
{
if(KEY2_DOWN)
{
key3_cnt=0;
key3_Lock=0; //自锁
if(key3_Flag==1) //短按触发标志
{
key3_Flag=0;
Key3Sec_1=!Key3Sec_1; //短按值
}
}
else if(key3_Lock==0)
{
key3_cnt++;
if(key3_cnt>20)
{
key3_Flag=1; //激活按键短按的有效标志
}
if(key3_cnt>3000)
{
key3_Flag=0; //清除按键短按的有效标志
key3_cnt=0;
key3_Lock=1; //自锁按键置位,避免一直触发
Key3Sec_2++; //长按值
if(Key3Sec_2>6)Key3Sec_2=0;
LED_Flag=!LED_Flag;
}
};
}
程序放到带的OS单片机程序中只有长按值有效,短按无效,在裸奔程序中上面程序是放到定时器中间中的,在OS系统的单片机程序是放在任务中执行的
|