OpenEdv-开源电子网

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

按键模块程序分享

[复制链接]

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
发表于 2017-4-14 13:12:18 | 显示全部楼层 |阅读模式
本程序是从网上资料修改而来的,不算是原创,谢谢
为什么要写按键模块程序?
1>基于模块化考虑
2>基于分层的考虑(底层,按键层,应用层)
3>取消原子按键的delay函数,太占用CPU资源
按键模块程序的大致结构
其中pKeyLevelCB是底层回调函数指针,底层的数据操作就是封装在这里
pKeyEventCB是应用层函数指针数组,应用层的数据操作就是封装在这里
arg就是应用层函数可能需要传递的参数,如果没有,就用NULL

[mw_shl_code=c,true]typedef struct
{
        void *arg;
        u32 state;
        KeyEvent index;
        u32 wobble_cnts;
        u32 stable_cnts;
        KeyLevelCB pKeyLevelCB;
        KeyEventCB pKeyEventCB[KEY_EVENT_NUM];
}KEY;[/mw_shl_code]
应用层事件索引,目前我只是实现了单击事件,如果想实现双击等其它功能,可自由添加.
[mw_shl_code=c,true]typedef enum
{
        KEY_SINGLE_CLICK = 0,
        KEY_DOUBLE_CLICK,
        KEY_EVENT_NUM,
}KeyEvent;[/mw_shl_code]
总结:本程序总体来说不是很复杂,因为目前只是实现了单击事件的处理,但是框架已经搭好了,有什么需求,只要在上面添加代码即可.
附件部分是demo版本,基于战舰开发板,Keil5.14.

按键模块程序.rar

2.44 MB, 下载次数: 192

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

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-4-14 14:56:59 | 显示全部楼层
回复 支持 反对

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2017-5-15 13:11:07 | 显示全部楼层
本帖最后由 ianhom 于 2017-5-15 13:23 编辑

感谢分享!
之前我也写过一个按键模块
https://github.com/ianhom/Btn_State_Machine_Module
欢迎一起讨论
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复 支持 反对

使用道具 举报

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
 楼主| 发表于 2017-5-15 17:30:12 | 显示全部楼层
ianhom 发表于 2017-5-15 13:11
感谢分享!
之前我也写过一个按键模块
https://github.com/ianhom/Btn_State_Machine_Module

请问神
你这个按键模块已经用于实际项目了?
我那个自己弄着玩的,能实现功能,但是如果要放在项目里话,还需要自己验证...
电子爱好者
回复 支持 反对

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2017-5-15 17:35:00 | 显示全部楼层
liuchang 发表于 2017-5-15 17:30
请问神
你这个按键模块已经用于实际项目了?
我那个自己弄着玩的,能实现功能,但是如果要放在项目里话,还 ...

在我自己开发的小东西上用过,正式产品中使用的是这个模块未优化的版本
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复 支持 反对

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
发表于 2017-5-15 17:37:49 | 显示全部楼层
ianhom 发表于 2017-5-15 17:35
在我自己开发的小东西上用过,正式产品中使用的是这个模块未优化的版本

厉害,学习借鉴一下
电子人生!
回复 支持 反对

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2017-5-15 17:40:44 | 显示全部楼层

http://www.openedv.com/forum.php ... id=67273&extra=
之前在论坛上分享过,可以看视频效果
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-21 06:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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