INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13)
{
KeyCurrent=((GPIO_ReadInputData(GPIOB)&0xc0)>>6);
if(KeyCurrent!=KeyOld) //如果两次值不等,说明按键情况发生了改变
{
KeyNoChangedTime=0; //按键按下情况为0
KeyOld=KeyCurrent; //保存当前按键情况
//return; //·μ??
}
else
{
KeyNoChangedTime++; //按下时间累计
if(KeyNoChangedTime>=1) //如果按下时间足够
{
KeyNoChangedTime=1;
KeyPress=KeyOld; //保存按键
KeyDown|=(~KeyLast)&(KeyPress); //求出新按下的键
KeyUp|=KeyLast&(~KeyPress); //求出新释放的键
KeyLast=KeyPress; //保存当前按键情况
}
}
Key();
TIM2_ClearITPendingBit(TIM2_IT_UPDATE);
}
我用STM8S207C8T6写程序,开发环境IAR,用定时器中断检测按键。
可是按键反应很迟钝。请高手帮忙看看,谢谢!
|