解决:我以STM32F103为例,需要读取GPIO,B口的低四位。
我们首先在中断里最如下处理:
IN_old=IN_new;
IN_old_stable=IN_new_stable; //前面两行先做迭代。
IN_new=(GPIO_ReadInputData(GPIOB))&0x00001111;//读取GPIOB的低四位。
IN_temp=(IN_old^IN_new)&IN_old_stable; //中间变量
IN_temp|=IN_old&IN_new;
IN_new_stable=IN_temp;这就得到了我们最新的键值,它是由过去旧的确定值,按键前后两次的值所决定的,所以您看,是不是至少得经历三次中断才能把一个键值更新。
|