通常的代码如下
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{ /*检测是否有按键按下 */
if(GPIO_ReadInputDataBit(GPIOx, GPIO_Pin)==KEY_ON)
{ /*等待按键释放 */
while(GPIO_ReadInputDataBit( GPIOx, GPIO_Pin)==KEY_ON) ;
return KEY_ON ;
}
else return KEY_OFF;
}
两者之间的差异仅仅是 KEY_ON 和 KEY_OFF,你取的按键逻辑是反相的,并没什么不对;
其中语句:while(GPIO_ReadInputDataBit( GPIOx, GPIO_Pin)==KEY_ON) ;
就是进入循环,直到 GPIO_Pin= KEY_OFF,循环才结束;