历史上的今天
返回首页

历史上的今天

今天是:2024年11月16日(星期六)

2019年11月16日 | 单个按键,实现单击+双击+长按

2019-11-16 来源:eefocus

按键函数:实现单击、双击、长按


按键按下时长超过1.5S,认为是长按事件。

连续两次按下时间间隔不超过350ms,认为是双击事件。

除以上两条,按键按键都属于单击事件。

废话不多说,直接上代码。如有问题,欢迎评论区讨论。



/* 此函数是1ms运行一次 所以时间单位为1ms */

#define KEY_LP_TIME      1500  /* 长按时间       单位 ms                  */

#define KEY_DOUBLE_TIME  350   /* 两次按下间隔不超过此值为双击事件 */


uint8_t  KEY1_LP_FLG;    /* 按键长按标志                   */

uint8_t  KEY1_PR_FLG;    /* 按键按下标志                   */


uint8_t  Key1LtDelay;    /* 按键抬起消抖时间               */

uint8_t  Key1PrDelay; /* 按键按下消抖时间               */

uint8_t  Key1PrCnt;      /* 按键按下次数计数 检测双击      */

uint16_t Key1PrTimeCnt;  /* 连续两次按下时长计数 检测双击  */

uint16_t Key1PrTime;     /* 按键按下时长计数 检测长按      */


void Key1Scan(void){ //1ms扫描一次

if(KEY1 == 0){

Key1LtDelay = 0;

if(!KEY1_PR_FLG){

Key1PrDelay++;

if(Key1PrDelay>20){

Key1PrDelay = 0;

KEY1_PR_FLG = 1;

/********** User Code **********/

Key1PrCnt++;                       /* 计数按下次数 */

if(Key1PrCnt>2){ Key1PrCnt = 0; }  

KEY1_LP_FLG = 0;

Key1PrTime  = 0;

/************* End *************/

}

}

}

else{

Key1PrDelay = 0;

if(KEY1_PR_FLG){

Key1LtDelay++;

if(Key1LtDelay>20){

Key1LtDelay = 0;

KEY1_PR_FLG = 0;

/********** User Code **********/

KEY1_LP_FLG = 0;     /* 抬起按键轻触长按标志 */

/* 当按键按下但是超过双击检测时间 未达到长按时间 此时认为是一个单击事件 */

if(Key1PrTime >= KEY_DOUBLE_TIME){

//单击事件

}

/************* End *************/

}

}

}

//长按检测

if(KEY1_PR_FLG){

if(!KEY1_LP_FLG){

Key1PrTime++;

if(Key1PrTime >= KEY_LP_TIME){

Key1PrTime = 0; 

KEY1_LP_FLG = 1;  /* 长按1.5S 置位长按标志 */

/********** User Code **********/

//长按事件

/************ End *************/

}

}

}

//双击检测

if(Key1PrCnt==1){

if(Key1PrTimeCnt < KEY_DOUBLE_TIME){ Key1PrTimeCnt++;   }

else{

if(!KEY1_PR_FLG){ 

//单击事件

}

Key1PrTimeCnt = 0;

Key1PrCnt     = 0;

}

}

else if(Key1PrCnt==2){

if(Key1PrTimeCnt < KEY_DOUBLE_TIME){

//双击事件

}

Key1PrCnt     = 0;

Key1PrTimeCnt = 0;

}

}


推荐阅读

史海拾趣

Etron公司的发展小趣事

面对未来电子行业的发展趋势和挑战,钰创科技始终保持着清醒的认识和前瞻性的思考。公司将继续加大研发投入和人才培养力度,推动技术创新和产业升级;同时加强与国际知名企业的合作与交流,拓展国际市场;并积极响应国家政策和市场需求变化,不断调整和优化产品结构和市场布局;为实现公司的可持续发展和长远目标奠定坚实基础。

请注意,以上故事为虚构内容,旨在展示Etron公司(钰创科技)在电子行业中的发展历程和可能遇到的挑战与机遇。实际情况可能因各种因素而有所不同。

广州奥松公司的发展小趣事

奥松电子在传感器领域取得了显著的突破。公司凭借其强大的研发实力和技术创新能力,成功开发出一系列具有自主知识产权的传感器产品。这些传感器产品不仅性能稳定、测量精度高,而且具有广泛的应用领域。在医疗、轨道交通、智能家电等多个领域,奥松电子的传感器产品都得到了广泛的应用和认可。这些产品的成功应用,不仅提升了公司的市场竞争力,也为公司的未来发展提供了更多的可能性。

这五个故事展示了广州奥松电子股份有限公司在电子行业中发展起来的历程和成就。通过不断的技术创新和市场拓展,奥松电子已经成功成为了国内电子行业中的佼佼者。未来,随着技术的不断进步和市场需求的不断变化,奥松电子将继续保持其领先地位,为电子行业的发展做出更大的贡献。

BOSER公司的发展小趣事

BOSER公司始终关注企业社会责任和可持续发展。公司在生产过程中积极采用环保材料和技术,降低能耗和排放。同时,BOSER还积极参与公益事业,为社会做出贡献。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

需要强调的是,以上五个故事是基于电子行业常见趋势和挑战虚构的BOSER公司的发展故事。虽然这些故事是虚构的,但它们反映了电子公司在发展过程中可能遇到的机遇和挑战,以及如何通过不断创新和适应市场变化来实现持续发展。如果您希望了解真实存在的电子公司的发展故事,建议查阅相关公司的官方资料或新闻报道。

Frequency Electronics Inc公司的发展小趣事

高频电子的业务范围广泛且多元化,主要包括FEI-NY、Gillam-FEI和FEI-Zyfer三个部门。FEI-NY部门主要负责纽约总部设施和子公司FEI-Asia与FEI-Elcom的运营;Gillam-FEI部门则负责比利时与法国的业务,并专注于电缆网络同步产品的设计、研发和生产;FEI-Zyfer部门则主要经营公司加州业务,并设计生产附带GPS技术的产品。这种多元化业务布局不仅降低了公司的经营风险,还实现了各业务之间的战略协同和资源共享。

Herotek Inc公司的发展小趣事

在消费电子领域,Henkel的粘合剂技术同样发挥着重要作用。随着智能手机、平板电脑等终端设备的不断迭代升级,对结构粘接、散热等方面的要求也越来越高。Henkel针对这些需求,提供了定制化的粘合剂解决方案。例如,其导热凝胶和导热垫片产品能够有效提升设备的散热性能,确保设备在高强度使用下依然保持稳定的性能。此外,Henkel还针对全面屏、折叠屏等新型屏幕技术,推出了专门的聚氨酯热熔胶解决方案,帮助手机厂商提高屏占比和用户体验。

Crouzet公司的发展小趣事

随着业务的不断发展,Crouzet公司于1989年和1992年分别成功兼并了法国Syreles公司及墨西哥Gordos公司。这一系列的兼并活动不仅增强了公司的实力,还进一步扩大了公司的业务范围。此后,Crouzet开始在全球范围内布局,陆续在美国、德国、英国、荷兰、比利时、瑞士、瑞典等国设立分公司,形成了一个覆盖全球的销售网络。

问答坊 | AI 解惑

HYM8025 时钟IC 有谁用过啊?

HYM8025 时钟IC 有谁用过啊? 大家现在都用的什么型号的时钟IC?谢谢 QQ:76530879 mail:lvrenchaomail@163.com…

查看全部问答>

[====================]wince 5.0 C# numericUpDown 控件不能显示小数

点上 点下 都没用??? 这是为何啊 谁在 wince  下用过这 倒霉的控件啊 …

查看全部问答>

求购RVDS3.1,价格好商量

哪位朋友能提供RVDS3.1,不管什么版,能用就行,价格好商量。MSN:spark_huo@hotmail.com   QQ:2758884…

查看全部问答>

usb NRZI编码及同步问题

1、NRZI 即0翻转非归灵编码方式,遇0则跳变,遇1则维持前一状态的电平,这样做有什么好处,还有为什么当遇到一大串连续的1时候,即没有跳变的时候就会失去同步呢?同步序列不是在数据包的开始吗,后面的位为什么和同步有关了? 2、同步是怎么完成 ...…

查看全部问答>

220V控制5V

接在交流220V电压电路上的开关 我要用单片机来读这个开关的断开或闭合 有哪些方法? (就像5V控制220V可用继电器,反过来220V控制5V呢) …

查看全部问答>

stm32f的io开漏输出最大可吸入多大电流?

                                  …

查看全部问答>

XDATA超出范围

小弟刚接触ZIGBEE,打算用两个CC2530开发板做点对点的无线收发,可是走到一半时发现程序跑飞,不知道为什么,报的错是下面这个啊,希望前辈们指点一下啊 Tue Apr 10 13:03:07 2012: The stack pointer for stack \'XdataStack\' (currently XData:0 ...…

查看全部问答>

【视频分享】MSP430 医疗产品应用

简介:MSP430 是一款超低功耗单片机,非常适合便携式产品以及便携式医疗产品的应用。设计便携式医疗产品通常要求较低的系统成本、最低的系统功耗以及实现较高的测量精度。TI 为医疗成像提供完整的模拟信号链和嵌入式处理解决方案,旨在以更快速度为 ...…

查看全部问答>

Xbee和TI zigbee的区别

本人新手,刚最近要做一个定位系统,现在看好Xbee与TI 的CC系列芯片。但是有几个问题没有弄明白。一、两者之间有没有区别?还是说Xbee实际就是使用的TI芯片。二、一般说用RSSI定位,但是听说TI最新的芯片里内嵌了定位引擎,做起定位来会比较方便, ...…

查看全部问答>