今天有人问我 ,使用了PA0进行扫描,然后再加上PC13进行扫描,这个时候,PC13就没反应了 。如果注释掉PA0的话,PC13是可以正常工作的。我试了一下找不到原因。
主函数代码:
while(1)
{
if(KEY_Scan(GPIOC,GPIO_Pin_13)==KEY_ON)
{
LED3_TOGGLE;
}
if(KEY_Scan(GPIOA,GPIO_Pin_0)==KEY_ON)
{
LED2_TOGGLE;
}
}
key函数代码:
void KEY_GPIO_Config()
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
// GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
// GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOC,&GPIO_InitStruct);
}
uint8_t KEY_Scan(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin )
{
if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON)
{
delay_ms(100);
if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON)
{
while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON);
return KEY_ON;
}
return KEY_OFF;
}
return KEY_OFF;
} |