summaryrefslogtreecommitdiff
path: root/project/Core/Src
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-11-05 22:56:07 -0500
committersowgro <tpoke.ferrari@gmail.com>2025-11-05 22:56:07 -0500
commit843e263ac896fae11b8c176810bab4866eb8b2a8 (patch)
treeabe5938c16b5537192edb989b189e4e1afd90a2e /project/Core/Src
parente51714a66f5361c5f063f1395fdd441567932d19 (diff)
download340-repo-Sowgro-843e263ac896fae11b8c176810bab4866eb8b2a8.tar.gz
340-repo-Sowgro-843e263ac896fae11b8c176810bab4866eb8b2a8.tar.bz2
340-repo-Sowgro-843e263ac896fae11b8c176810bab4866eb8b2a8.zip
begin logic for local control
Diffstat (limited to 'project/Core/Src')
-rw-r--r--project/Core/Src/Project/local_control.c23
-rw-r--r--project/Core/Src/Project/player_actions.c4
-rw-r--r--project/Core/Src/Project/project.c1
-rw-r--r--project/Core/Src/System/systick.c11
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;
+}