stm32 矩阵键盘如何实现按钮长按只返回一次

2019-07-21 00:15发布

stm32的矩阵键盘如何实现按钮按下后,不管按下的时间长短,都只返回一次键值。
或者告诉我怎么判按钮断按下与松开?谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
BMN李
1楼-- · 2019-07-21 02:53
while等待按键释放吧。
while(未松开);//读引脚电平
BMN李
2楼-- · 2019-07-21 07:33
 精彩回答 2  元偷偷看……
cjiamoo
3楼-- · 2019-07-21 08:57
回复【2楼】BMN李:
---------------------------------
GPIO_Write(GPIOD,(GPIOD->ODR & 0xf0ff | 0x0100)); //让PB11到PB8输出二进制的0001.

switch(GPIOD->IDR & 0xf000)//对PB12到PB15的值进行判断,以输出不同的键值。
{
case 0x1000: KeyVal=0; break;
case 0x2000: KeyVal=4; break;
case 0x4000: KeyVal=8; break;
case 0x8000: KeyVal=12; break;
}
   
GPIO_Write(GPIOD,(GPIOD->ODR & 0xf0ff | 0x0200)); //让PB11到PB8输出二进制的0010.
switch(GPIOD->IDR & 0xf000)         //对PB12到PB15的值进行判断,以输出不同的键值。
{
case 0x1000: KeyVal=1; break;
case 0x2000: KeyVal=5; break;
case 0x4000: KeyVal=9; break;
case 0x8000: KeyVal=13; break;
}

GPIO_Write(GPIOD,(GPIOD->ODR & 0xf0ff | 0x0400)); //让PB11到PB8输出二进制的0100.
switch(GPIOD->IDR & 0xf000)         //对PB12到PB15的值进行判断,以输出不同的键值。
{
case 0x1000: KeyVal=2; break;
case 0x2000: KeyVal=6; break;
case 0x4000: KeyVal=10; break;
case 0x8000: KeyVal=14; break;
}
 
 GPIO_Write(GPIOD,(GPIOD->ODR & 0xf0ff | 0x0800)); //让PB11到PB8输出二进制的1000.
switch(GPIOD->IDR & 0xf000)         //对PB12到PB15的值进行判断,以输出不同的键值。
{
case 0x1000: KeyVal=3; break;
case 0x2000: KeyVal=7; break;
case 0x4000: KeyVal=11; break;
case 0x8000: KeyVal=15; break;
}

上面是我的程序,要在哪里加呢?未松开用什么表示?
cjiamoo
4楼-- · 2019-07-21 13:50
回复【4楼】BMN李:
---------------------------------
谢谢!已解决
伟好好学习
5楼-- · 2019-07-21 16:09
 精彩回答 2  元偷偷看……

一周热门 更多>