微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > CY方案,想做一个按键的短按和长按功能

CY方案,想做一个按键的短按和长按功能

时间:10-02 整理:3721RD 点击:
请教各位大神,我在用CY方案时,需要做一个按键的短按和长按功能,一直没成功,代码如下:
if (index == 0x00)          // 按键按下
{
        f1_key_pressed = TRUE;
        Pageup_key_MS ++;
}
if (f1_key_pressed) {
        if (Pageup_key_MS >= 1000)
        {
                index = 0x0B;
                add_queue(index);
                Pageup_key_MS = 0;
        }
        if (Pageup_key_MS < 200)
        {
                index = 0x0C;
                add_queue(index);
                                                        
        }
}
不管是按键按一下松开还是长按,Pageup_key_MS总是只加1,
请问给位大神,怎样让按键按下时,Pageup_key_MS一直加?

没有大神做过这样的功能吗?
请指教!

你的判断按键的变量index和下面具体操作的index冲突了,按键按下Pageup_key_MS +1之后,直接就进入 if (Pageup_key_MS < 200)里面,然后 index = 0x0C;index的值就不是0了,长按和短按都进不了if (index == 0x00),必须松开重按才会进入,所以Pageup_key_MS不会连续加。把判断按键if (index == 0x00)换成if (xx == 0x00),变量换个名字应该就可以了。

谢谢!应该是我程序写错了,不能这么表达

谢谢,应该是我程序写错了,不知道你有没有做过按键短按长按这方面的,可否发给我参考下?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top