此处有一个标志位,如果使能后,就每次轮询都进行判断复位,否则就只在按键改变的时候复位
//按键处理函数 //返回按键值 //mode:0,不支持连续按;1,支持连续按; //0,没有任何按键按下 //1,WKUP按下 WK_UP //注意此函数有响应优先级,KEY0>KEY1>WK_UP!! u8 KEY_Scan(u8 mode) { static u8 key_up=1; //按键松开标志 ///如果是1,就进去,继续汇报按下 if(mode==1)key_up=1; //支持连按 ///此处是如果up是0,则第二次进入的时候,就不再进去,就直接返回0 ///如果是0,判断按键是否全部复位,如果复位后才使能up,如此开启下一次 if(key _up&&(KEY0==0||KEY1==0||WK_UP==1)) { delay_ms(10); key_up=0; if(KEY0==0) return KEY0_PRES; else if(KEY1==0) return KEY1_PRES; else if(WK_UP==1) return WKUP_PRES; }else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1; return 0; //无按键按下 }
STM32【按键轮询的处理】
最新推荐文章于 2024-08-06 20:46:51 发布