这是我某一行的扫描代码
GPIOB->ODR=((GPIOB->ODR&0xfff0) | 0x0020);//设置对应的行IO口为高电平
switch(GPIOB->IDR&0X03C0)//检测四列对应IO口的高低电平
{
case 0X0040:KeyVal=12;break;
case 0x0080:KeyVal=13;break;
case 0x0100:KeyVal=14;break;
case 0x0200:KeyVal=15;break;
default:return 0;
}
int main(void)
{
u8 keycode=0;
KEY_Init();
uart_init(115200);
printf(" start");
while(1)
{
keycode=KEY_Scan();
if(keycode)
{
printf("%d
",keycode);
keycode=0;
}
}
//
}
我用的串口显示按键值 ,但是按键不按下去 ,扫描程序就会进入SWITCH语句里。应该是扫面那块出了问题 ,但是不知道是什么问题。求解 。
一周热门 更多>