OpenEdv-开源电子网

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

按键捕捉不灵敏-RTC模块通过按键设置时间的问题

[复制链接]

30

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-5-4
在线时间
56 小时
发表于 2019-6-12 13:09:45 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 袁超 于 2019-6-12 13:12 编辑

想通过按键修改当前时间,效果是lcd进入时间设置界面后,光标会在待修改的年/月/日/时/分/秒位置闪烁,通过前后按键移动闪烁光标的位置,通过增减按键对当前闪烁位置的数值进行加减。没有找到相应的例程,自己试着写了一段程序,闪烁光标是通过在相应位置交替显示数字和空白字符实现的,可能是因为加了两秒的延时,按键的时候很可能正好在延时,按键捕捉非常不灵敏,很多时候按键无响应,求解决方案。

[mw_shl_code=c,true]/* 概念程序
    @i,j代表光标位置
    @date,time代表日期和时间
*/
                        char date[16],time[16];
                        u8 i,j,key=0;
                        while(key==0||key==KEY3_PRES||key==KEY4_PRES||key==KEY5_PRES||key==KEY6_PRES)
                        {
                                if(key==KEY3_PRES)
                                {
                                   //修改光标位置
                                   //if(i=1,j=17) j=49;
                                   ......
                                }
                                if(key==KEY4_PRES)
                                {
                                   //修改光标位置
                                   //if(i=1,j=17) {i=3;j=81;}
                                }
                                if(key==KEY5_PRES)
                                {
                                        //if(i==1 && j==17) calendar.w_year += 1;
                                        //if(i==1 && j==49) calendar.w_month += 1;                        
                                }
                                if(key==KEY6_PRES)
                                {
                                        //if(i==1 && j==17) calendar.w_year -= 1;
                                        //if(i==1 && j==49) calendar.w_month -= 1;                        
                                }
                                Show_Str(1,1,date);
                                Show_Str(3,1,time);
                                delay_ms(2000);
                                Show_Str(i,j,"  ");
                                delay_ms(2000);
                                key = KEY_Scan(0);
                        }[/mw_shl_code]

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

使用道具 举报

2

主题

84

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1092
金钱
1092
注册时间
2019-1-5
在线时间
256 小时
发表于 2019-6-12 15:01:38 | 显示全部楼层
个人建议不要用原地死循环的延时,可以用滴答时钟计时来实现闪烁功能
回复

使用道具 举报

30

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-5-4
在线时间
56 小时
 楼主| 发表于 2019-6-12 15:42:55 | 显示全部楼层
s2333 发表于 2019-6-12 15:01
个人建议不要用原地死循环的延时,可以用滴答时钟计时来实现闪烁功能

没搞懂这个跟滴答时钟计时有什么关系?计时功能已经实现,我的主要问题其实是关于人机交互的GUI的,如何提示用户当前数据哪部分正处于编辑状态,怎样方便地修改该数据而不致卡死?
回复

使用道具 举报

2

主题

84

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1092
金钱
1092
注册时间
2019-1-5
在线时间
256 小时
发表于 2019-6-12 16:32:30 | 显示全部楼层
袁超 发表于 2019-6-12 15:42
没搞懂这个跟滴答时钟计时有什么关系?计时功能已经实现,我的主要问题其实是关于人机交互的GUI的,如何 ...

先找到按键捕捉不灵敏的原因,也就是说到底是不是因为你的延时函数导致的?你的延时函数是不是用while()原地死等,什么都不做?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-15 01:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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