本帖最后由 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)
|