wangch_sh 发表于 2014-1-20 18:31

28335检测按键的问题

我用28335检测按键,发现按键经常误动作,按一下响应两下。
程序如下:
#define KEY1   GpioDataRegs.GPBDAT.bit.GPIO40
。。。。。。。。。。。。。。。。。。。。。。。。。。
GpioCtrlRegs.GPBMUX1.bit.GPIO40 = 0;   //KEY1 IO功能
GpioCtrlRegs.GPBPUD.bit.GPIO40 = 1;    //禁止内部上拉引脚
GpioCtrlRegs.GPBCTRL.bit.QUALPRD1=0X2;   //采样周期=4*TSYSCLKOUT
GpioCtrlRegs.GPBQSEL1.bit.GPIO40=2;    //采用6个采样周期宽度限制
GpioCtrlRegs.GPBDIR.bit.GPIO40 = 0;    //输入
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
if(KEY1==0)   // 设置键
{
   DELAY_US(70000);
   while(KEY1==0);
   CursorPosition_cnt++;
   
}
电路图见附件。
请高手指教,谢谢!


zhangmangui 发表于 2014-1-20 18:51

应该是消抖动没做好
你可以按以下方法试试
if(KEY1==0)   // 设置键
{
   DELAY_US(70000);
   if(KEY1==0)
   CursorPosition_cnt++;
   
}

wangch_sh 发表于 2014-1-20 20:06

好了,谢谢版主!
页: [1]
查看完整版本: 28335检测按键的问题