KEY0 KEY1设置了上拉输入,JTAG/SWD都关闭了,按键扫描程序也加了去抖,为什么实际使用的时候会出现KEY0有时候按键不灵敏,按几下才+1,KEY1相反,太灵敏,按一下加好几个
void JtagSWDSelect(void)
{
u32 temp;
temp = 0x02; //此处修改模式
temp <<= 25;
RCC->APB2ENR |= 1<<0; //开启辅助时钟
AFIO->MAPR &= 0xF8FFFFFF; //清除MAPR的[26:24]
AFIO->MAPR |= temp; //设置jtag模式
}
/* 设置按键KEY0(PA13)、KEY1(PA15) 上拉输入 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
u8 KeyScan(void)
{
static u8 KeyUp = 1; //考虑到上拉输入松开时按键输入1,后续要用到&&运算,故设松开为1
if( KeyUp && (KEY0==0 || KEY1==0) ) //之前按键松开,且有按键按下
{
Delayms(10);
KeyUp = 0;
if(KEY0==0)
{
return 1;
}
else if(KEY1==0)
{
return 2;
}
}
else if(KEY0==0 || KEY1==0)
{
KeyUp = 1;
}
return 0x00;
}
|