请问它是怎么判断按键是哪行哪列的

GPIO_Write(GPIOA,(GPIOA->ODR & 0xfff0 | 0x1));
switch(GPIOA->IDR & 0x00f0)
{
case 0x0010: KeyVal=15;break;
case 0x0020: KeyVal=11;break;
case 0x0040: KeyVal=7; break;
case 0x0080: KeyVal=3; break;
}

GPIO_Write(GPIOA,(GPIOA->ODR & 0xfff0 | 0x2));
switch(GPIOA->IDR & 0x00f0)
{
case 0x0010: KeyVal=14;break;
case 0x0020: KeyVal=10;break;
case 0x0040: KeyVal=6; break;
case 0x0080: KeyVal=2; break;
}

矩阵键盘使用PA0到PA7引脚,其中,PA0到PA3固定为推挽输出,PA4到PA7固定为
下拉输入。
请问它是怎么判断按键是哪行哪列的?

第一行代码,先给PA0写1,这样PA0连接键盘的这一行都为1,然后用switch语句读取PA4到PA7的电平,如果此时PA4也为1,那么就是PA0和PA4交叉点的这个按键按下了。这样依次类推,分别给PA0到PA3给高电平,然后再去读PA4到PA7的电平,通过两个口的交叉点来判断哪个按键按下。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632