overheat 发表于 2015-4-5 06:53:22

请教是否有现成的按键组合功能框架?

板子上的按键高级点功能可以区分长按和短按。

如果需要组合呢?就像苹果手机长按开源和音量+键等(随便举得例子)。
如果按键稍微多点,自己一点点实现就很麻烦。

但是,这些操作有共性,哪位大侠知道有没有这样的开源按键组合框架来使用?

骁龙科技工作室 发表于 2015-4-5 08:47:45

发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底层就可以。

机器人天空 发表于 2015-4-5 09:03:14

本帖最后由 机器人天空 于 2015-4-5 09:04 编辑

感谢二楼的程序很有用{:lol:}
这是你们的开发板教程吧

overheat 发表于 2015-4-5 09:09:57

骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...

你的处女回复啊,呵呵

骁龙科技工作室 发表于 2015-4-5 09:39:38

机器人天空 发表于 2015-4-5 09:03
感谢二楼的程序很有用
这是你们的开发板教程吧

本教程还未正式发布,敬请期待,多多支持

机器人天空 发表于 2015-4-5 10:04:48

骁龙科技工作室 发表于 2015-4-5 09:39
本教程还未正式发布,敬请期待,多多支持

{:victory:}

qq开始学单片机 发表于 2015-4-5 10:05:02

骁龙科技工作室 发表于 2015-4-5 09:39
本教程还未正式发布,敬请期待,多多支持

赞,按键组合,Mark

骁龙科技工作室 发表于 2015-4-5 10:06:19

写得不好的地方请大家多多指教

mcu5i51 发表于 2015-4-5 10:09:29

按键少的话,用一个Bit表示一个键,就可以用Key = GetKey(); sw..(Key){ca... K1+K2:来处理了,多得话可以和电脑键盘一样,用按下,放开来表示,可以用较少的变量来处理,一般的键盘可以处理5个键同时操作,我们完全可以根据自己的需要来做2-3键的

lans0625 发表于 2015-4-5 10:11:01

2楼的东东非常好,谢谢分享。

mcu5i51 发表于 2015-4-5 10:19:09

初步看了一下那个文件,写的真好,比我的模块多出一个双击功能,可能是条件编译的原因,程序要长一些

oooios 发表于 2015-4-5 10:19:10

赞,按键组合

blueice1108 发表于 2015-4-5 13:57:30

骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...


还有其他教程吗

721zjr 发表于 2015-4-5 14:26:21

谢谢二楼和楼主,写的蛮好的,正在认真看!!

mybigapple 发表于 2015-4-5 15:19:11

谢谢分享。也在看。

dmxfeng 发表于 2015-4-5 20:41:01

本帖最后由 dmxfeng 于 2015-4-5 20:42 编辑

不错,下来学习下!!!!!谢谢二楼分享

LSZD 发表于 2015-4-5 20:45:37

2楼好人,好人一生平安……

f8023m 发表于 2015-4-7 14:33:47

2L请指教,你的代码测试了一下,为什么CreateKey(&Key1,cbOfKey1);放到void Key_GPIO_Config(void)里面不行呢?真奇怪,如果在void Key_GPIO_Config(void)里面创建按键按键内存不能被分配。求指导。
代码很棒。

nuncle 发表于 2015-5-3 07:23:09

mark。试试

悟空间66 发表于 2015-5-3 07:32:38

mark 好分享

tiger5 发表于 2015-5-3 07:58:34

下载,谢谢二楼。。。。。

mypc16888 发表于 2015-5-3 15:32:36

不错,很好,谢谢二楼

redchina 发表于 2015-5-3 16:46:07

二楼很好,谢谢

nuncle 发表于 2015-5-7 22:04:22

骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...

请教下, 我刚刚使用了你的按键模块。

不知道是不是BUG, 我修改长按的最短时间为2000MS,按键10MS扫描一次。

nuncle 发表于 2015-5-7 22:07:50

骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...

请教下, 我刚刚使用了你的按键模块。

不知道是不是BUG, 我修改长按的最短时间为2000MS,按键10MS扫描一次。

程序里面我判断一个按键 短按, 和长按。


定义#define REACTE               REACTE_WHEN_UP

现在 当我一直按着按键, 能进入长按分支。长按结束后抬起按键那一下, 也响应了 短按的分支。。


问题是能不能长按后抬起那下 , 不要被检测成是按键短按?

骁龙科技工作室 发表于 2015-5-10 10:38:50

f8023m 发表于 2015-4-7 14:33
2L请指教,你的代码测试了一下,为什么CreateKey(&Key1,cbOfKey1);放到void Key_GPIO_Config(void)里面不行 ...

你把Key1定义为函数里面的局部变量Key_GPIO_Config?这样子是不行的,这个结构体变量是用来存放按键状态的,必须在按键检测的过程中始终保持有效

骁龙科技工作室 发表于 2015-5-10 10:40:41

nuncle 发表于 2015-5-7 22:07
请教下, 我刚刚使用了你的按键模块。

不知道是不是BUG, 我修改长按的最短时间为2000MS,按键10MS扫 ...

我等下修改下这个bug,我在编写的时候只想到了检测每一种状态的检测,没有想到他们之间在实际使用中是互斥的

nuncle 发表于 2015-5-10 12:50:06

骁龙科技工作室 发表于 2015-5-10 10:40
我等下修改下这个bug,我在编写的时候只想到了检测每一种状态的检测,没有想到他们之间在实际使用中是互 ...

好的, 还有个问题。
这个版本的是不是会发生这样的现象?多次快速的单击按钮,最后会判断出来一次长按。
我现在程序里面 获取短按后,
都调用GetKeyElement(k1,ELEMENT_LONG_PRESS,CLEAR);//清除长按
      GetKeyElement(k2,ELEMENT_LONG_PRESS,CLEAR);//清除长按
来清除下, 就不会误判有长按发生。
这个你看下 是不是要改呢?

myin4 发表于 2015-5-10 13:09:40

mark一下,等完整版

overheat 发表于 2015-5-11 09:42:33

自古二楼出真相。

elecfun 发表于 2015-5-11 13:46:27

以前单按键的有了那个3行的按键处理非常方便,多按键的研究下2楼的,看看好不好用。

骁龙科技工作室 发表于 2015-5-11 15:32:14

nuncle 发表于 2015-5-10 12:50
好的, 还有个问题。
这个版本的是不是会发生这样的现象?多次快速的单击按钮,最后会判断出来一次长按 ...

新的,修改好BUG后在此。

骁龙科技工作室 发表于 2015-5-11 15:33:45

不过新的程序中没有使用手册,只有2楼才有

nuncle 发表于 2015-5-11 16:09:48

骁龙科技工作室 发表于 2015-5-11 15:32
新的,修改好BUG后在此。

好的, 非常感谢。。 等下回去了 试试。

sos9616 发表于 2015-5-15 09:46:48

骁龙科技工作室 发表于 2015-5-11 15:33
不过新的程序中没有使用手册,只有2楼才有

对于你的程序请教一个问题:
若要把两个按键组合起来使用该如何实现?

比如
KEY_1短按切换LED1——LED3,长按则快速切换,双击BUZZER1响起
KEY_2短按切换LED4——LED6,长按则快速切换,双击BUZZER2响起
以上这些都可以实现。

但下面的按键功能如何实现?
当KEY_1和KEY_2同时按下时,关闭BUZZER1
当KEY_1和KEY_2再次同时按下时,关闭BUZZER2

骁龙科技工作室 发表于 2015-5-19 08:25:25

sos9616 发表于 2015-5-15 09:46
对于你的程序请教一个问题:
若要把两个按键组合起来使用该如何实现?



这个是应用层的问题了,你就加个判断就好啦,if(GetKeyXXX>0&&GetKeyYYY>0).....然后加多一个变量。

f8023m 发表于 2015-5-23 22:44:58

骁龙科技工作室 发表于 2015-5-11 15:32
新的,修改好BUG后在此。

请问我更新了修改后的驱动,发现长按时间无法响应了?有哪些地方需要修改呢

lianzhong008 发表于 2015-10-8 14:48:10

谢谢2楼,代码很棒,key代码框架写的真好!

hackerboygn 发表于 2015-10-8 14:59:04

自己用状态机写一个,什么长按短按单击双击消抖组合,甚至是旋转编码器,一个搞定,一劳永逸

hackerboygn 发表于 2015-10-8 15:02:33

看了一下2L的文档,也是基于状态机的,不错,只是状态有点少

xurenhui 发表于 2015-10-19 10:02:21

hackerboygn 发表于 2015-10-8 15:02
看了一下2L的文档,也是基于状态机的,不错,只是状态有点少
大虾能指点一下你说的状态机不,感觉还厉害,

hackerboygn 发表于 2015-10-19 11:18:39

xurenhui 发表于 2015-10-19 10:02
大虾能指点一下你说的状态机不,感觉还厉害,

请自行谷歌有限状态机(finite state machine),在FPGA里用得很普遍。
对于按键的处理,我当时参考了这个
http://www.mathertel.de/Arduino/FiniteStateMachine.aspx
http://www.mathertel.de/Arduino/OneButtonLibrary.aspx

xurenhui 发表于 2015-10-19 13:18:10

hackerboygn 发表于 2015-10-19 11:18
请自行谷歌有限状态机(finite state machine),在FPGA里用得很普遍。
对于按键的处理,我当时参考了这 ...

谢谢,大虾

大哥年 发表于 2015-10-27 09:59:01

骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...

你好!请问下你那个程序在编译的时候出现很多错误,应该打不开stm32f10x。h文件报错。cannot open sourse input file stm32f10x.h:no such file or directory 这个怎么解决
页: [1]
查看完整版本: 请教是否有现成的按键组合功能框架?