OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4148|回复: 2

为什么下面这个按键扫描,只有第一个有效。

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2022-4-27
在线时间
0 小时
发表于 2022-4-27 23:39:12 | 显示全部楼层 |阅读模式

为什么下面这个按键扫描,只有第一个有效。
        while(1)
        {
                if((KEY_Scan(0)==KEY_UP_PRESS)||(KEY_Scan(0)==KEY0_PRESS)||(KEY_Scan(0)==KEY1_PRESS)||(KEY_Scan(0)==KEY2_PRESS))
                {
                        IWDG_FeedDog();//喂狗
                        LED2=0;
                        printf("喂狗\r\n");
                }
               
                i++;
                if(i%20==0)
                {
                        LED1=!LED1;       
                }
                delay_ms(10);
        }
}


u8 KEY_Scan(u8 mode)
{
        static u8 key=1;
       
        if(mode==1) //连续按键按下
                key=1;
        if(key==1&&(KEY_UP==1||KEY0==0||KEY1==0||KEY2==0)) //任意一个按键按下
        {
                delay_ms(10);  //消抖
                key=0;
                if(KEY_UP==1)
                        return KEY_UP_PRESS;
                else if(KEY0==0)
                        return KEY0_PRESS;
                else if(KEY1==0)
                        return KEY1_PRESS;
                else if(KEY2==0)
                        return KEY2_PRESS;
        }
        else if(KEY_UP==0&&KEY0==1&&KEY1==1&&KEY2==1)    //无按键按下
                key=1;
        return 0;
}






正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2022-4-27
在线时间
0 小时
 楼主| 发表于 2022-4-27 23:39:56 | 显示全部楼层
回复 支持 反对

使用道具 举报

14

主题

821

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2070
金钱
2070
注册时间
2021-7-17
在线时间
647 小时
发表于 2022-4-28 09:57:07 | 显示全部楼层
可以看原子的按键检测章节内容就清楚了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 21:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表