按钮长按检测

2个帖子/ 0新
最后一篇
Liuluan002.
离线
最后一次露面:3个月2周前
加入:2015-11-27 14:24
按钮长按检测

我已成功按下按下按下按下按钮,但是我想加上检测的检测,以区分短按和长按。长按3s。

你有一些想法或参考如何做到这一点?

空白_Button(空白)
{
if((!(getword16(p0_data_reg)&(1 << 0)))))))))
{
keyint_mstime = loop_timer_gettime();
button_flag = 3;
app_easy_timer(10,loop_timer_cb);
}

if(getBits16(sys_stat_reg,per_is_down))
periph_init();

wkupct_register_callback(按_Button);

wkupct_enable_irq(0x000001,0x000001,1,0x00);
if(button_flag == 2)
{
}

if(button_flag == 3)
{
}
}

void user_app_init(void)
{
//初始化制造商特定数据
mnf_data_init();
default_app_on_init();
wkupct_enable_irq(0x000001,0x000001,1,0x00);// lincs liu

}

设备:
mt_dialog.
离线
最后一次露面:4天1小时前
职员
加入:2015-06-08 11:34
嗨Liuluan002,

嗨Liuluan002,

没有参考应用程序来检测和区分长短的短发,但是一个想法是为每个新闻时间段设定两个不同的定时器,一旦按钮被按下,这两个计时器都应该开始计数。当第一个计时器过去时,应检查按钮是否仍然按下,如果它在SHORT_TIMER_HANDLER()中设置标志(短周期计时器的处理程序)。当长时间经过时,您还应该检查long_timer_handler()如果仍然按下按钮。现在,如果仍然按下该按钮,这意味着交互是一个长按,应该执行长按的指定功能。如果仍然不按此LONG_TIMER_HANDLER()中的按钮,并且设置了来自SHORT_TIMER_HANDLER()的标志,这意味着交互是短按并执行SHORT_PRESS_FUNCTION()。

谢谢mt_dialog.