OpenEdv-开源电子网

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

STM32 如何按键设置初始值,加减位移

[复制链接]

32

主题

236

帖子

0

精华

高级会员

Rank: 4

积分
993
金钱
993
注册时间
2017-8-11
在线时间
137 小时
发表于 2020-6-3 09:24:42 | 显示全部楼层 |阅读模式
10金钱
想实现:

一个程序正常运行,随时一个按键“设置”进入配置模式,
通过3个按键“加、减、位移”对数值进行设置(数码管显示)
设置完成后,回到主程序继续运行


怎么个设计思路,是否一定要4个独立按钮,4个外部中断???
我有一个数码管按键模块,能读到按键值并显示数码管

最佳答案

查看完整内容[请看2#楼]

一个按键做法:长按超过3s代表确认,短按不超过2s代表选择;通过轮询的方式短按按键选择“加,减,位移”的功能,然后长按按键确认;类推,如果 “加” 功能确认后还需要按键按下加1操作的话,一样的短按一次加1,长按确认。 两个按键做法:一个按键代表确认,另一个按键代表选择,按选择按键选择“加,减,位移”的功能,然后确认按键确认;类推,如果 “加” 功能确认后还需要按键按下加1操作的话,一样的选择键按一次加1,确认 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2020-6-3 09:24:43 | 显示全部楼层
本帖最后由 szczyb1314 于 2020-6-3 13:52 编辑

一个按键做法:长按超过3s代表确认,短按不超过2s代表选择;通过轮询的方式短按按键选择“加,减,位移”的功能,然后长按按键确认;类推,如果 “加” 功能确认后还需要按键按下加1操作的话,一样的短按一次加1,长按确认。
两个按键做法:一个按键代表确认,另一个按键代表选择,按选择按键选择“加,减,位移”的功能,然后确认按键确认;类推,如果 “加” 功能确认后还需要按键按下加1操作的话,一样的选择键按一次加1,确认键按下确认。
多个按键最简单了
回复

使用道具 举报

5

主题

269

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2020-5-11
在线时间
253 小时
发表于 2020-6-3 09:34:21 | 显示全部楼层
我感觉中断和扫描都可以吧。当然我觉得最好是中断。至于是不是一定要四个按键,我个人觉得可以三个按键。有一个按键支持连按。比如位移按键连按两下进入设置,再连按两下退出。我记得原子哥例程里好像有连按(没记错的话)。
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2020-6-3 10:46:12 | 显示全部楼层
按键多,程序越简单,搞四个按键,10ms周期扫描就可以了,可以不用中断
一分耕耘一分收获。
回复

使用道具 举报

22

主题

2254

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4486
金钱
4486
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-6-3 10:48:01 | 显示全部楼层
按键多,处理简单,按键少处理复杂。也就是说一个按键也是可以实现的就是复杂,4个按键实现简单
回复

使用道具 举报

32

主题

236

帖子

0

精华

高级会员

Rank: 4

积分
993
金钱
993
注册时间
2017-8-11
在线时间
137 小时
 楼主| 发表于 2020-6-3 10:59:51 | 显示全部楼层
yklstudent 发表于 2020-6-3 10:46
按键多,程序越简单,搞四个按键,10ms周期扫描就可以了,可以不用中断

主程序还有其他操作,如果用扫描的话,
假设按下“配置”按钮以后,后续肯定要按 “+”“-”,可是什么时候按下不清楚
延时多久,一直扫描?
回复

使用道具 举报

9

主题

219

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1437
金钱
1437
注册时间
2020-5-12
在线时间
395 小时
发表于 2020-6-3 11:34:24 | 显示全部楼层
弄个定时器一直去读取四个按键的状态然后记录起来。最好保存2组,然后在main函数里面判断按键的当前状态为1,前一周期状态为0即为按下。
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2020-6-3 13:14:54 | 显示全部楼层
笨鸟想飞 发表于 2020-6-3 10:59
主程序还有其他操作,如果用扫描的话,
假设按下“配置”按钮以后,后续肯定要按 “+”“-”,可是什么 ...

按键就一个单独的任务10ms周期扫描好了
处理的问题就是获取按键后响应好了
一分耕耘一分收获。
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
发表于 2020-6-4 07:50:23 来自手机 | 显示全部楼层
看看这个,提供个按键四路!https://blog.csdn.net/wuhednyouyuyouyu/article/details/77622340
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-28 19:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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