OpenEdv-开源电子网

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

开源键扫例程--- 无须延时消抖等待,能稳定可靠地一体满足普通、短按(单击/双击)、长按、组合等应用需求的键盘扫描程序

    [复制链接]

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2018-9-10 15:19:07 | 显示全部楼层
楼主当真是我们这个行业的楷模哦,向楼主大大学习。
自己选择的路,成家前走完。
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4416
金钱
4416
注册时间
2018-5-11
在线时间
922 小时
 楼主| 发表于 2018-9-10 15:32:55 | 显示全部楼层
aiyeba 发表于 2018-9-10 15:19
楼主当真是我们这个行业的楷模哦,向楼主大大学习。

哈哈过奖了,真的觉得程序有用的话,记得在我的github上点个赞哦,谢谢
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2011-6-4
在线时间
30 小时
发表于 2018-9-10 16:31:28 | 显示全部楼层
谢谢分享。
回复 支持 反对

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2018-9-10 18:06:23 | 显示全部楼层
warship 发表于 2018-9-10 15:32
哈哈过奖了,真的觉得程序有用的话,记得在我的github上点个赞哦,谢谢

可以加个联系方式吗?

我的QQ867051287
自己选择的路,成家前走完。
回复 支持 反对

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4416
金钱
4416
注册时间
2018-5-11
在线时间
922 小时
 楼主| 发表于 2018-9-10 19:13:26 | 显示全部楼层
aiyeba 发表于 2018-9-10 18:06
可以加个联系方式吗?

我的QQ867051287

基本不用QQ了,论坛倒是常来,有事可以站短或直接跟帖哦
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-4-23
在线时间
67 小时
发表于 2018-9-10 22:33:52 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

0

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
248
金钱
248
注册时间
2011-1-18
在线时间
60 小时
发表于 2018-9-11 09:58:34 | 显示全部楼层
看看,学习学习!!!!!!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

3

主题

30

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2016-1-28
在线时间
259 小时
发表于 2018-9-12 20:08:27 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

207

帖子

0

精华

高级会员

Rank: 4

积分
959
金钱
959
注册时间
2017-5-27
在线时间
108 小时
发表于 2018-9-12 20:49:16 | 显示全部楼层
看看,了解了解
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2018-9-13
在线时间
0 小时
发表于 2018-9-13 13:19:47 | 显示全部楼层
我正在调按键代码,过来借鉴一下
回复 支持 反对

使用道具 举报

17

主题

237

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1312
金钱
1312
注册时间
2017-3-1
在线时间
259 小时
发表于 2018-9-13 13:29:54 | 显示全部楼层
看起来好溜的样子。。。。。。。。。。。
回复 支持 反对

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4416
金钱
4416
注册时间
2018-5-11
在线时间
922 小时
 楼主| 发表于 2018-9-13 21:51:56 | 显示全部楼层
NewGuard 发表于 2018-9-13 13:29
看起来好溜的样子。。。。。。。。。。。

哈哈,谁用谁知道。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
发表于 2018-9-14 11:47:02 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

10

主题

81

帖子

0

精华

初级会员

Rank: 2

积分
149
金钱
149
注册时间
2018-5-8
在线时间
27 小时
发表于 2018-9-14 14:37:40 | 显示全部楼层
soft reset
回复 支持 反对

使用道具 举报

8

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2011-11-12
在线时间
149 小时
发表于 2018-9-14 19:06:02 | 显示全部楼层
感谢楼主分享,学习下
回复 支持 反对

使用道具 举报

8

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2011-11-12
在线时间
149 小时
发表于 2018-9-14 20:22:13 | 显示全部楼层
warship 发表于 2018-9-5 21:00
不好意思,
我不是版主,
如果觉得好用的话,

为了给你点个赞,专门注册了个账号。
我也了解下那个网站,学习学习。
感谢楼主分享
回复 支持 反对

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4416
金钱
4416
注册时间
2018-5-11
在线时间
922 小时
 楼主| 发表于 2018-9-14 21:55:16 | 显示全部楼层
BowenQQ 发表于 2018-9-14 20:22
为了给你点个赞,专门注册了个账号。
我也了解下那个网站,学习学习。
感谢楼主分享

啥也别说了,
感动的眼泪哗哗的。
不过注册那个网站不会让你后悔的,
据说世界上最优秀的开源代码都在它上面。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

8

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2011-11-12
在线时间
149 小时
发表于 2018-9-14 22:10:16 | 显示全部楼层
本帖最后由 BowenQQ 于 2018-9-14 22:13 编辑

warship 发表于 2018-9-14 21:55
啥也别说了,
感动的眼泪哗哗的。
不过注册那个网站不会让你后悔的,


楼主 请教个问题,我最近也在弄4*4矩阵键盘,我出来的键值不对呀,郁闷中

[mw_shl_code=c,true]void Key_Config(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;   
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);
   
         /********4行输出*********/
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOF, &GPIO_InitStructure);
         
         /********4列输入*********/
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;         
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOF, &GPIO_InitStructure);        
}

int KeyScan(void)
{
   uchar KeyVal;
        
   GPIO_Write(GPIOF, (GPIOF->ODR & 0xFFC3 | 0x003C));                 //0xf0ff | 0x0f00
         
         if((GPIOF->IDR & 0x03C0)==0x0000)           //0xf000                                                         
                  return -1;
         else
         {        
            delay_ms(5);    //延时5ms去抖动
            if((GPIOF->IDR & 0x03C0)==0x0000)                //0xf000
            return -1;
         }
         
         GPIO_Write(GPIOF,(GPIOF->ODR & 0xFFC3 | 0x0004));        //0xf0ff | 0x0100
         switch(GPIOF->IDR & 0x03C0)        //0xf000
         {
             case 0x0040: KeyVal=0; break;                //0x1000
                        case 0x0080: KeyVal=1;        break;        //0x2000
                        case 0x0100: KeyVal=2;        break;        //0x4000
                        case 0x0200: KeyVal=3;        break;        //0x8000
   }
         while((GPIOF->IDR & 0x03C0)        > 0);     //0xf000
         
         GPIO_Write(GPIOF,(GPIOF->ODR & 0xFFC3 | 0x0008));        //0xf0ff | 0x0200
                switch(GPIOF->IDR & 0x03C0)                 //0xf000      
                {
                        case 0x0040: KeyVal=4;        break;
                        case 0x0080: KeyVal=5;        break;
                        case 0x0100: KeyVal=6;        break;
                        case 0x0200: KeyVal=7;        break;
                }
    while((GPIOF->IDR & 0x03C0)        > 0);                //0xf000
               
          GPIO_Write(GPIOF,(GPIOF->ODR & 0xFFC3 | 0x0010));        //0xf0ff | 0x0400
                switch(GPIOF->IDR & 0x03C0)                //0xf000               
                {
                        case 0x0040: KeyVal=8;        break;
                        case 0x0080: KeyVal=9;        break;
                        case 0x0100: KeyVal=10;        break;
                        case 0x0200: KeyVal=11;        break;
                }
    while((GPIOF->IDR & 0x03C0)        > 0);                //0xf000
               
          GPIO_Write(GPIOF,(GPIOF->ODR & 0xFFC3 | 0x0020));        //0xf0ff | 0x0800
                switch(GPIOF->IDR & 0x03C0)                 //0xf000      
                {
                        case 0x0040: KeyVal=12;        break;
                        case 0x0080: KeyVal=13;        break;
                        case 0x0100: KeyVal=14;        break;
                        case 0x0200: KeyVal=15;        break;
                }
                while((GPIOF->IDR & 0x03C0)        > 0);                //0xf000   
         
                return KeyVal;
}[/mw_shl_code]
回复 支持 反对

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4416
金钱
4416
注册时间
2018-5-11
在线时间
922 小时
 楼主| 发表于 2018-9-14 22:14:13 | 显示全部楼层
BowenQQ 发表于 2018-9-14 22:10
warship 发表于 2018-9-14 21:55啥也别说了,
感动的眼泪哗哗的。
不过注册那个网站不会让你后悔的,

看我的20KEY例子
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

8

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2011-11-12
在线时间
149 小时
发表于 2018-9-14 22:26:53 | 显示全部楼层

20KEY的例子是153楼吗?代码好像不全,添加进去有几个变量未定义
回复 支持 反对

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4416
金钱
4416
注册时间
2018-5-11
在线时间
922 小时
 楼主| 发表于 2018-9-14 22:30:06 | 显示全部楼层
BowenQQ 发表于 2018-9-14 22:26
20KEY的例子是153楼吗?代码好像不全,添加进去有几个变量未定义

https://github.com/ShuifaHe/STM32/blob/master/20Keys_Example.c这里也有,
研究一下,仿这个写,
如果有不对,再贴过来我帮你看。
不要再用你上面的键扫了。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

8

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2011-11-12
在线时间
149 小时
发表于 2018-9-14 22:31:57 | 显示全部楼层
warship 发表于 2018-9-14 22:30
https://github.com/ShuifaHe/STM32/blob/master/20Keys_Example.c这里也有,
研究一下,仿这个写,
如 ...

好的,感谢指点,我参考下
回复 支持 反对

使用道具 举报

2

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2018-9-2
在线时间
41 小时
发表于 2018-9-14 22:38:25 | 显示全部楼层
cool,谢谢分享。 学习了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2018-5-7
在线时间
13 小时
发表于 2018-9-15 08:17:15 | 显示全部楼层
多谢分享  小白学习一下
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-6-26
在线时间
4 小时
发表于 2018-9-15 09:31:39 | 显示全部楼层
ALIENTEK战舰STM32开发板
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2018-9-14
在线时间
2 小时
发表于 2018-9-15 09:36:43 | 显示全部楼层
学习一下   
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2018-8-27
在线时间
21 小时
发表于 2018-9-16 00:01:14 | 显示全部楼层
谢谢分享              
回复 支持 反对

使用道具 举报

1

主题

192

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2014-4-14
在线时间
104 小时
发表于 2018-9-17 15:06:56 | 显示全部楼层
单个按键?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-9-17
在线时间
3 小时
发表于 2018-9-17 16:01:20 | 显示全部楼层
厉害,考虑的真全面
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2016-1-28
在线时间
25 小时
发表于 2018-9-18 14:02:10 | 显示全部楼层
回复后可获取解压密码,谢谢支持。
回复 支持 反对

使用道具 举报

34

主题

322

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1835
金钱
1835
注册时间
2014-12-4
在线时间
717 小时
发表于 2018-9-19 12:17:28 | 显示全部楼层
下载看看
回复 支持 反对

使用道具 举报

26

主题

1533

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6365
金钱
6365
注册时间
2015-8-25
在线时间
1003 小时
发表于 2018-9-19 13:16:58 | 显示全部楼层

谢谢分享 mark
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复 支持 反对

使用道具 举报

0

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
451
金钱
451
注册时间
2016-9-28
在线时间
136 小时
发表于 2018-9-19 14:12:10 | 显示全部楼层
谢谢!
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-1-16
在线时间
10 小时
发表于 2018-9-19 14:15:25 | 显示全部楼层
优秀
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2016-10-19
在线时间
55 小时
发表于 2018-9-19 14:54:35 | 显示全部楼层
:
回复 支持 反对

使用道具 举报

13

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2018-4-24
在线时间
91 小时
发表于 2018-9-19 16:15:19 | 显示全部楼层
  大佬  看看  膜拜
回复 支持 反对

使用道具 举报

6

主题

71

帖子

0

精华

高级会员

Rank: 4

积分
885
金钱
885
注册时间
2016-6-15
在线时间
362 小时
发表于 2018-9-19 21:54:53 来自手机 | 显示全部楼层
看看        
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2018-9-19
在线时间
0 小时
发表于 2018-9-19 23:09:34 | 显示全部楼层
下载下来研究研究
回复 支持 反对

使用道具 举报

2

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2014-9-26
在线时间
26 小时
发表于 2018-9-20 09:02:28 | 显示全部楼层
马克一下,学习一下代码的逻辑
潜伏LED流水灯百八十年
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4251
金钱
4251
注册时间
2018-9-20
在线时间
270 小时
发表于 2018-9-20 11:09:13 | 显示全部楼层
warship 发表于 2018-8-15 22:36
u16 KeyStable; //全局变量:存有稳定(消除抖动后)的当前键态
u16 KeyTime=0;  //存放按键持续时间长度

...


本帖最后由 warship 于 2018-8-18 21:02 编辑


u16 KeyStable; //全局变量:存有稳定(消除抖动后)的当前键态
u16 KeyTime=0;  //存放按键持续时间长度

//这是网友转发的三行读键程序(实为两行)
u16 Trg=0;
u16 Cont=0;
void KeyRead(void)
{
        Trg=KeyStable & (KeyStable ^ Cont);
        Cont=KeyStable;
}
这几句确实是经典,写得非常好,
回复 支持 反对

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4416
金钱
4416
注册时间
2018-5-11
在线时间
922 小时
 楼主| 发表于 2018-9-20 11:27:30 | 显示全部楼层
YGYGYG 发表于 2018-9-20 09:02
马克一下,学习一下代码的逻辑

如觉得好的话请点一下赞。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4416
金钱
4416
注册时间
2018-5-11
在线时间
922 小时
 楼主| 发表于 2018-9-20 11:28:47 | 显示全部楼层
sky68 发表于 2018-9-20 11:09
本帖最后由 warship 于 2018-8-18 21:02 编辑

可以到我的站点https://github.com/ShuifaHe/STM32.git去下载最新的源代码,如果觉得好的话请点一下赞。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

11

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2016-4-6
在线时间
53 小时
发表于 2018-9-20 11:48:01 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2017-11-25
在线时间
19 小时
发表于 2018-9-20 12:01:24 | 显示全部楼层
好东西
回复 支持 反对

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4416
金钱
4416
注册时间
2018-5-11
在线时间
922 小时
 楼主| 发表于 2018-9-20 12:59:40 | 显示全部楼层

可以到我的站点https://github.com/ShuifaHe/STM32.git去下载最新的源代码,如果觉得好的话,可以在里面点一个赞。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4416
金钱
4416
注册时间
2018-5-11
在线时间
922 小时
 楼主| 发表于 2018-9-20 13:00:09 | 显示全部楼层
刘春 发表于 2018-9-19 16:15
大佬  看看  膜拜

如果觉得好的话可以点赞哦。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
177
金钱
177
注册时间
2018-8-20
在线时间
25 小时
发表于 2018-9-20 13:06:12 | 显示全部楼层
点赞!!!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-9-17
在线时间
3 小时
发表于 2018-9-20 15:20:22 | 显示全部楼层
这个要看看,好东西啊。。。。。
回复 支持 反对

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4416
金钱
4416
注册时间
2018-5-11
在线时间
922 小时
 楼主| 发表于 2018-9-20 16:03:53 | 显示全部楼层

是到这里https://github.com/ShuifaHe/STM32.git去点赞哦。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

10

主题

42

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
271
金钱
271
注册时间
2014-11-30
在线时间
2 小时
发表于 2018-9-20 16:32:24 | 显示全部楼层
啥东西这么神秘
还有谁?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 02:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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