按键处理的函数

2019-10-16 07:59发布

u8 get_key_state(void)
{
        static u8  temp_key_state = KEY_STATE_UP;
    static u8  temp_key_value = 0;
    static u32 temp_key_dealy_count = 0;                //消抖计时
    static key_value_truct temp_key_value_mode;
        if (temp_key_state == KEY_STATE_UP)        //按键为弹起状态                          /* 按键为弹起状态             */
    {
        temp_key_value = get_key_value(&temp_key_value_mode);
        if(temp_key_value > 0)
        {
            temp_key_dealy_count = 0;
            temp_key_state = KEY_STATE_DOWN;
        }
        }
        if (temp_key_state == KEY_STATE_DOWN)                           /* 判断按键是否按下           */
    {
        temp_key_dealy_count++;                                                                                //消抖计时自加
        if (temp_key_dealy_count > KEY_DELAY_COUNT)                                        //如果大于消抖计数器数值则进行清零
        {
            temp_key_dealy_count = 0;                                                               
            if (temp_key_value == get_key_value(&temp_key_value_mode))   /* 判断按键是否为按下状态     */
            {   
                if (temp_key_value_mode.key_mode == KEY_MODE_COMBO)      /* 判断按键是否为连击模式     */
                {
                    return  temp_key_value;                                                               
                }
                else
                {
                    return  0x00;
                }
            }
            else                                                      
            {
                temp_key_state = KEY_STATE_UP;                                                         /* 按键弹起                    */
                if (temp_key_value_mode.key_mode == KEY_MODE_NORMAL)    /* 如果按键为单击模式返回键值  */
                {
                    return  temp_key_value;
                }
                else
                {
                    return  0x00;
                }   
            }   
        }
    }
        return 0x00;
}


这是一个函数,但是不明白啥意思,谁能帮我讲解一下

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
lycreturn
1楼-- · 2019-10-17 04:57
孤狼一佐 发表于 2016-11-23 19:22
temp_key_value = get_key_value(&temp_key_value_mode);
这一句还不太明白,调用get_key_value时为啥 ...

&temp_key_value_mode  这个不是与,是取地址符,这是c语言基础知识,LZ得加强一下。&temp_key_value_mode是变量temp_key_value_mode的地址。
孤狼一佐
2楼-- · 2019-10-17 09:09
哦,知道了,C语言基础不好,要加强了,谢谢亲
孤狼一佐
3楼-- · 2019-10-17 13:47
 精彩回答 2  元偷偷看……

一周热门 更多>