diff options
Diffstat (limited to 'project/Core/Src')
| -rw-r--r-- | project/Core/Src/Project/local_control.c | 23 | ||||
| -rw-r--r-- | project/Core/Src/Project/player_actions.c | 4 | ||||
| -rw-r--r-- | project/Core/Src/Project/project.c | 1 | ||||
| -rw-r--r-- | project/Core/Src/System/systick.c | 11 |
4 files changed, 34 insertions, 5 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; + } +} + diff --git a/project/Core/Src/Project/player_actions.c b/project/Core/Src/Project/player_actions.c index dbb7859..4fc29a1 100644 --- a/project/Core/Src/Project/player_actions.c +++ b/project/Core/Src/Project/player_actions.c @@ -65,13 +65,11 @@ void player_stop() { LED_Off(); } -void SysTick_Handler() { +void SysTick_Handler2(int count) { if (state != PAUSED_STATE) return; - static int count = 0; if(!(count & 1023)) { LED_Toggle(); } - count++; } diff --git a/project/Core/Src/Project/project.c b/project/Core/Src/Project/project.c index 56932f1..d4517d7 100644 --- a/project/Core/Src/Project/project.c +++ b/project/Core/Src/Project/project.c @@ -24,6 +24,7 @@ uint8_t project_get_mode() { } void project_run() { + HAL_Init(); local_control_init(); remote_control_init(); diff --git a/project/Core/Src/System/systick.c b/project/Core/Src/System/systick.c index ac3a731..c18707e 100644 --- a/project/Core/Src/System/systick.c +++ b/project/Core/Src/System/systick.c @@ -23,6 +23,8 @@ void init_systick() s->CSR |= 1; } + + // This fuction is to create delay using SysTick timer counter void delay_systick() { @@ -54,3 +56,12 @@ int check_systick() { return 0; } } + +static uint32_t count = 0; +void SysTick_Handler() { + SysTick_Handler2(count++); +} + +uint32_t systick_get_count() { + return count; +} |
