找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2640|回复: 12
收起左侧

MCU按键长按三秒取消功能程序如何实现,求思路

  [复制链接]
ID:838669 发表于 2021-5-25 10:55 | 显示全部楼层 |阅读模式
有没有大神指导一下,感谢,按键长按三秒取消功能的实现。
回复

使用道具 举报

ID:282074 发表于 2021-5-25 12:39 来自手机 | 显示全部楼层
用按扭,长按来判断,如,key==0;num++;if(num==3000)达到条件取消自定义菜单就行了
回复

使用道具 举报

ID:926968 发表于 2021-5-25 13:29 | 显示全部楼层
使用if语句判断,当计时器大于等于3000,就行了。
回复

使用道具 举报

ID:311846 发表于 2021-5-25 13:46 | 显示全部楼层
按下时定时器计数,计时到三秒钟执行,大概就是这思路,慢慢调节吧!还有很多细节要弄好的
回复

使用道具 举报

ID:831687 发表于 2021-5-25 14:28 | 显示全部楼层
使用定时器判断,按下打开定时器
回复

使用道具 举报

ID:612392 发表于 2021-5-25 14:40 | 显示全部楼层
每隔一小段时间检测一下按键状态(例如50ms),当在3s内每次检测按键都是按下状态时,即执行目标操作;如果有任意一次处于未按下状态,则计数清0,待下次检测到再重新计数。
这样可以不要单独用一个定时器或外部中断。
回复

使用道具 举报

ID:883031 发表于 2021-5-25 16:26 | 显示全部楼层
用定时器,定时时间到如果没松开,认为有效,如果没到3秒就送开了,认为无效。
回复

使用道具 举报

ID:919834 发表于 2021-5-26 10:25 | 显示全部楼层
定时中断。计数三秒内都为按下状态。则处理。用中断就不会影响其他操作
回复

使用道具 举报

ID:101869 发表于 2021-5-26 12:54 来自手机 | 显示全部楼层
定时器设置50毫秒检测一次按键并计数3秒期间有一次检测不到,计数器就置零连续计数60次说明3秒时间到执行相应程序就行了,不要用!while死等,我是新手拙见
回复

使用道具 举报

ID:341589 发表于 2021-5-28 09:15 | 显示全部楼层
简单实现:延时函数
通用:使用定时器计时,减少消耗cpu
回复

使用道具 举报

ID:385830 发表于 2021-5-29 11:51 | 显示全部楼层
其实像这种状态检测就是一个思路问题。在程序里检测按键是否松开,未松开就定时3秒再判断,仍然为未松开状态就进入需要的程序段即可。
回复

使用道具 举报

ID:451718 发表于 2021-5-29 13:36 | 显示全部楼层
switch(key)
{
    case 0:
        if((Systick-Tpress)<3000) break;
        //------------按键响应操作
        Tpress = Systick;
    break;
    case 1:
        Tpress = Systick;
    break;
}
回复

使用道具 举报

ID:929073 发表于 2021-5-29 14:11 来自手机 | 显示全部楼层
这篇文章有思路,https://blog.csdn.net/wuhenyouyuyouyu/article/details/77622340
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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