# ckey **Repository Path**: sdegl/ckey ## Basic Information - **Project Name**: ckey - **Description**: 这是一个简单的嵌入式按键模块,集成按键消抖、按键短按、按键长按、按键多击.。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-17 - **Last Updated**: 2024-12-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 简单的按键模块 这是一个简单的嵌入式按键模块,集成按键消抖、按键短按、按键长按、按键多击.。 ## 使用说明 实现按键按下函数与按键事件回调 ``` /* is key press */ static bool is_mykey_press(void) { return gpio_read() == press_level ? true : false; } /* my key callback handle */ static void mykey_even(key_handle_t *handle, KEY_ENUM status) { switch (status) { case KEY_CLICK: printf("click\n"); break; default: break; } } ``` 初始化并添加按键 ``` void example_key1_init(void) { static key_handle_t my_key1; Key_InitSetting(&my_key1, is_mykey_press, mykey_even); Key_Add(&my_key1); // 添加多个按键 // static key_handle_t my_key2; // Key_InitSetting(&my_key2, is_mykey2_press, mykey2_even); // Key_Add(&my_key2); // static key_handle_t my_key3; // Key_InitSetting(&my_key3, is_mykey3_press, mykey3_even); // Key_Add(&my_key3); } ``` 间隔调用处理函数实现按键轮询扫描(或者在软件定时器中调用) ``` int main (void) { example_key1_init(); while(1) { Key_Handler(); delay_ms(DEFAULT_KEY_SCAN_INTERVAL); } return 0; } ```