EXTI是边沿触发的。
当你按下键时,肯定会出现抖动,那抖动一次就是一个边沿,自然会一次次的触发中断了。我以前也试验过,很不好使。
用systick扫描是一个办法,我用这个实现了线反转法扫描4X4的键盘矩阵。设置10ms中断一次,每次进中断首先检查有没有按键,如果没有就pass,如果有就先计个数再退出,重复三次操作确定都有按键(也就完成了消抖),然后翻转线路状态扫描一次确定行列位置,这样就确定键值了。
我觉得扫描方式比中断好。对每个键,定义一个字节用来消抖,每扫描一次就把键的0或1移位至这个字节,判断这个字节如果是0xff那么这个键被按下,如果0x00那么这个键未被按下,其它值不做操作,这种方法很简单,消抖效果也不错。
中断相应的及时性 是直接在中断程序进行处理