问题1:我发现调用adi_dev_Control(KeyPadDriverHandle, ADI_KPAD_CMD_KPAD_ENABLE, (void*) FALSE):并不能关闭按键的扫描功能,必须用 *pKPAD_CTL &= 0xFFFE; //bit0=0 表示关闭 bit0=1 表示打开
问题2:在实际项目中,我们的硬件工程师并没有对按键做并联电容硬件消抖,同时选用了工业上的金属按钮,每次按下去,都很可能带有机械抖动,如果不进行软件消抖,1次按下很容易被识别2次的按键动作,为了解决此问题,我在按键扫描中断的回调函数里,关闭了键盘扫描功能,并启动0.2s定时器,当定时器时间耗尽,我再打开键盘扫描函数。实际效果并没有很大提升,不过,我发现了1个新的功能,就是按键按下并保持按住,页面就会按照一定间隔翻页,呵呵,原本 keypad模块每次只能识别1次按键的功能,因为我做了关闭键盘和开启的功能,使得Blackfin 的键盘扫描产生了定时识别出按键的状态。这样的好处是,连续翻页的时候,不用release按键了。