diff options
Diffstat (limited to 'project/Core/Src/Project/local_control.c')
| -rw-r--r-- | project/Core/Src/Project/local_control.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/project/Core/Src/Project/local_control.c b/project/Core/Src/Project/local_control.c index 7a4ba2f..ce40c22 100644 --- a/project/Core/Src/Project/local_control.c +++ b/project/Core/Src/Project/local_control.c @@ -7,6 +7,7 @@ #include <stm32l4xx.h> #include <stdio.h> +#include <stdint.h> #include "GPIO.h" #include "project.h" @@ -31,7 +32,25 @@ void EXTI9_5_IRQHandler() { int status = !!(GPIOA->IDR & GPIO_PIN_9); if (prevStatus == status) return; - prevStatus = status; - printf("EXT BUTTON %i\r\n", status); + handle_press(status); } + +uint32_t time_down = 0; +void handle_press(int pressed) { + uint32_t now = systick_get_count(); + if (pressed) { + time_down = now; + } else { + printf("now: %i, time_down: %i diff: %i\r\n", now, time_down, now - time_down); + if (now - time_down < 10) { + //ignore + } else if (now - time_down < 10000) { + printf("SHORT PRESS\r\n"); + } else { + printf("LONG_PRESS\r\n"); + } + time_down = 0; + } +} + |
