硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1175|回复: 0
收起左侧

[客户分享] 按键驱动(单击,长按,连续长按,组合键(单击和长按))

[复制链接]

10

主题

34

回帖

64

积分

初级会员

积分
64
发表于 2024-9-11 10:41:24 | 显示全部楼层 |阅读模式
本帖最后由 jasonZJR 于 2024-9-11 14:22 编辑

硬件平台:原子ESP32开发板(因为这个即有IO按键也有ic扩展按键)
-----------------------------------------------------------------------------
按键功能:1.单个按键单击,返回CLICK事件
                 2.单个按键长按,返回HOLD事件
                 3.单个按键连续长按,连续返回HOLD事件
                 4.组合按键单击,返回CK_CLICK事件
                 5.组合按键长按,返回CK_HOLD事件
                 7.组合按键连续长按,连续返回CK_HOLD事件
                 8.连续时间采集判断消抖
                 9.允许一定抖动次数
                 注:长按和连续长按功能只能二选一
-----------------------------------------------------------------------------
按键类型支持:IO按键,AD按键,电容按键,ic扩展按键
-----------------------------------------------------------------------------
驱动代码有大量注释,方便理解其逻辑
主程序调用示例:
[C] 纯文本查看 复制代码
void KEY_Task(void *pvParameters)
{

        uint8_t key_value = 0;

        for(;;)
        {

                vTaskDelay(1);
                
                key_value = KEY_Read();
                
                switch(key_value)
                {
                        case KEY_BOOT_CLICK:
                        {
                                
                        }
                        break;
                        
                        case KEY_BOOT_HOLD:
                        {
                        
                        }
                        break;

                        case KEY_0_CLICK:
                        {
                        
                        }
                        break;
                        
                        case KEY_0_HOLD:
                        {
                        
                        }
                        break;

                        case KEY_CK1_CLICK:
                        {
                                DebugPrintf("Key CK1 Click\r\n");
                        }
                        break;
                        
                        case KEY_CK1_HOLD:
                        {
                                DebugPrintf("Key CK1 Hold\r\n");
                        }
                        break;
                }
        
        }

}


按键驱动源码:
key.c (8.28 KB, 下载次数: 39)
key.h (1.42 KB, 下载次数: 29)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-10 04:36 , Processed in 0.225180 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表