在做按键查询的时候,程序只能停在key_scan的位置,按键后也进不去下面的程序。
其中主程序是:
int main(void)
{
/* LED 端口初始化 */
led_config();
key_config();
while (1)
{
GPIO_ResetBits(GPIOF, GPIO_Pin_7|GPIO_Pin_8);
GPIO_ResetBits(GPIOB, GPIO_Pin_0);
if( Key_Scan(GPIOA,GPIO_Pin_0) == KEY_ON )
{//接下来程序进不去了
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOF, GPIO_Pin_7|GPIO_Pin_8);
}
}
}
其中,key的所有程序如下:
#include"key.h"
void key_config()
{
GPIO_InitTypeDef GPIO_InitStructure;
/*开启按键端口(PA)的时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,u16 GPIO_Pin)
{
/*检测是否有按键按下 */
if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON )
{
/*延时消抖*/
Delay(10000);
if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON )
{
/*等待按键释放 */
while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON);
return KEY_ON;
}
else
return KEY_OFF;
}
else
return KEY_OFF;
}
static void Delay(__IO u32 nCount)
{
for(; nCount != 0; nCount--);
}
真心求大神帮助! |