From 799d8e43b54f68c61c7b63e43d4a3487754dfe60 Mon Sep 17 00:00:00 2001 From: Dien-Nhung Nguyen-Phu Date: Sun, 2 Jun 2024 18:27:36 +0700 Subject: button: add basic button functionalities - Provided a way to set handler for each button one-press/long-press - Debouncing with RC filter and Schmitt trigger --- src/button.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/button.h (limited to 'src/button.h') diff --git a/src/button.h b/src/button.h new file mode 100644 index 0000000..234e45b --- /dev/null +++ b/src/button.h @@ -0,0 +1,23 @@ +#ifndef __BUTTON_H__ +#define __BUTTON_H__ + +#include "CH58x_common.h" + +enum keys { + KEY1 = 0, + KEY2, + KEY_INDEX, +}; + +#define KEY2_PIN (GPIO_Pin_22) // PB +#define KEY1_PIN (GPIO_Pin_1) // PA + +#define isPressed(key) ((key) ? \ + !GPIOB_ReadPortPin(KEY2_PIN) : \ + GPIOA_ReadPortPin(KEY1_PIN)) + +void btn_onOnePress(int key, void (*handler)(void)); +void btn_onLongPress(int key, void (*handler)(void)); +void btn_init(); + +#endif /* __BUTTON_H__ */ -- cgit v1.2.3