diff --git a/examples/example_callback.c b/examples/example_callback.c new file mode 100644 index 0000000..ef05722 --- /dev/null +++ b/examples/example_callback.c @@ -0,0 +1,58 @@ +#include "multi_button.h" + +struct Button btn1; +struct Button btn2; + +int read_button1_GPIO() +{ + return HAL_GPIO_ReadPin(B1_GPIO_Port, B1_Pin); +} + +int read_button2_GPIO() +{ + return HAL_GPIO_ReadPin(B2_GPIO_Port, B2_Pin); +} + +int main() +{ + button_init(&btn1, read_button1_GPIO, 0); + button_init(&btn2, read_button2_GPIO, 0); + + button_attach(&btn1, PRESS_DOWN, BTN1_PRESS_DOWN_Handler); + button_attach(&btn1, PRESS_UP, BTN1_PRESS_UP_Handler); + button_attach(&btn1, PRESS_REPEAT, BTN1_PRESS_REPEAT_Handler); + button_attach(&btn1, SINGLE_CLICK, BTN1_SINGLE_Click_Handler); + button_attach(&btn1, DOUBLE_CLICK, BTN1_DOUBLE_Click_Handler); + button_attach(&btn1, LONG_RRESS_START, BTN1_LONG_RRESS_START_Handler); + button_attach(&btn2, LONG_PRESS_HOLD, BTN1_LONG_PRESS_HOLD_Handler); + + button_attach(&btn2, PRESS_DOWN, BTN2_PRESS_DOWN_Handler); + button_attach(&btn2, PRESS_UP, BTN2_PRESS_UP_Handler); + button_attach(&btn2, PRESS_REPEAT, BTN2_PRESS_REPEAT_Handler); + button_attach(&btn2, SINGLE_CLICK, BTN2_SINGLE_Click_Handler); + button_attach(&btn2, DOUBLE_CLICK, BTN2_DOUBLE_Click_Handler); + button_attach(&btn2, LONG_RRESS_START, BTN2_LONG_RRESS_START_Handler); + button_attach(&btn2, LONG_PRESS_HOLD, BTN2_LONG_PRESS_HOLD_Handler); + + button_start(&btn1); + button_start(&btn2); + + //make the timer invoking the button_ticks() interval 5ms. + //This function is implemented by yourself. + __timer_start(button_ticks, 0, 5); + + while(1) + {} +} + +void BTN1_PRESS_DOWN_Handler(void* btn) +{ + //do something... +} + +void BTN1_PRESS_UP_Handler(void* btn) +{ + //do something... +} + +... \ No newline at end of file diff --git a/examples/example_poll.c b/examples/example_poll.c new file mode 100644 index 0000000..510f89e --- /dev/null +++ b/examples/example_poll.c @@ -0,0 +1,37 @@ +#include "multi_button.h" + +struct Button btn1; + +int read_button1_GPIO() +{ + return HAL_GPIO_ReadPin(B1_GPIO_Port, B1_Pin); +} + + +int main() +{ + static uint8_t btn1_event_val; + + button_init(&btn1, read_button1_GPIO, 0); + button_start(&btn1); + + //make the timer invoking the button_ticks() interval 5ms. + //This function is implemented by yourself. + __timer_start(button_ticks, 0, 5); + + while(1) + { + if(btn1_event_val != get_button_event(&btn1)) { + btn1_event_val = get_button_event(&btn1); + + if(btn1_event_val == PRESS_DOWN) { + //do something + } else if(btn1_event_val == PRESS_UP) { + //do something + } else if(btn1_event_val == LONG_PRESS_HOLD) { + //do something + } + } + } +} +