在参考你的4*4键盘中断程序,请解释一下下列代码:谢谢
GPIO_SetBits ( ROW4_GPIO_PORT, ROW4_GPIO_PIN );
GPIO_ResetBits ( LINE1_GPIO_PORT, LINE1_GPIO_PIN );
GPIO_ResetBits ( LINE2_GPIO_PORT, LINE2_GPIO_PIN );
GPIO_ResetBits ( LINE3_GPIO_PORT, LINE3_GPIO_PIN );
GPIO_ResetBits ( LINE4_GPIO_PORT, LINE4_GPIO_PIN );
//取4列的状态
if(GPIO_ReadInputDataBit ( LINE1_GPIO_PORT, LINE1_GPIO_PIN ))
{
while(GPIO_ReadInputDataBit ( LINE1_GPIO_PORT, LINE1_GPIO_PIN ));
KeyValue = 13;
}
这段代码是一个 STM32 键盘扫描程序中的一部分。检测键盘中的按键是否被按下。
具体解释如下:
GPIO_SetBits ( ROW4_GPIO_PORT, ROW4_GPIO_PIN ): 将第 4 行的状态设为高电平,以选择第 4 行。
GPIO_ResetBits ( LINE1_GPIO_PORT, LINE1_GPIO_PIN ): 将第 1 列的状态设为低电平,以读取第 1 列的状态。同样的,对于第 2 列、第 3 列和第 4 列,也是一样的处理方法。
GPIO_ReadInputDataBit ( LINE1_GPIO_PORT, LINE1_GPIO_PIN ): 读取第 1 列的状态,以判断是否有键被按下。
while(GPIO_ReadInputDataBit ( LINE1_GPIO_PORT, LINE1_GPIO_PIN )):等待键松开。
KeyValue = 13:当第 1 列的状态为高电平时,说明有键被按下,此时 KeyValue 的值被赋为 13。
这个程序部分是用来读取键盘中第 4 行第 1 列的按键状态。如果有键被按下,则读取该键的值,并将其保存在 KeyValue 变量中。
不知道你这个问题是否已经解决, 如果还没有解决的话: