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;
}
这是一个函数,但是不明白啥意思,谁能帮我讲解一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>