summaryrefslogtreecommitdiff
path: root/project
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-10-09 21:43:08 -0400
committersowgro <tpoke.ferrari@gmail.com>2025-10-09 21:43:08 -0400
commit0e0f83905bb3ee79f4917927479cdaf710e8ac07 (patch)
treed7c1184e0d6732e671f2c72fc2fc7a10231b8fda /project
parent003bf896a726b2e3496c7b429f648b8db9c36a3b (diff)
download340-repo-Sowgro-0e0f83905bb3ee79f4917927479cdaf710e8ac07.tar.gz
340-repo-Sowgro-0e0f83905bb3ee79f4917927479cdaf710e8ac07.tar.bz2
340-repo-Sowgro-0e0f83905bb3ee79f4917927479cdaf710e8ac07.zip
Complete input and led part of project
Diffstat (limited to 'project')
-rw-r--r--project/.settings/language.settings.xml4
-rw-r--r--project/Core/Inc/Homework/hw4.h2
-rw-r--r--project/Core/Inc/Project/project.h2
-rw-r--r--project/Core/Inc/System/systick.h2
-rw-r--r--project/Core/Src/Homework/hw4.c7
-rw-r--r--project/Core/Src/Project/project.c96
-rw-r--r--project/Core/Src/System/systick.c20
-rw-r--r--project/Core/Src/main.c5
8 files changed, 129 insertions, 9 deletions
diff --git a/project/.settings/language.settings.xml b/project/.settings/language.settings.xml
index ae082b2..974b8a7 100644
--- a/project/.settings/language.settings.xml
+++ b/project/.settings/language.settings.xml
@@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
- <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="781097053452714720" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+ <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-905336628230113484" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
@@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
- <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="781097053452714720" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+ <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-905336628230113484" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
diff --git a/project/Core/Inc/Homework/hw4.h b/project/Core/Inc/Homework/hw4.h
index 2aa852e..447c7fc 100644
--- a/project/Core/Inc/Homework/hw4.h
+++ b/project/Core/Inc/Homework/hw4.h
@@ -10,4 +10,6 @@
void hw4_run();
+char read_and_print_char_nonblocking();
+
#endif /* INC_HOMEWORK_HW4_H_ */
diff --git a/project/Core/Inc/Project/project.h b/project/Core/Inc/Project/project.h
index bf37141..a4b568b 100644
--- a/project/Core/Inc/Project/project.h
+++ b/project/Core/Inc/Project/project.h
@@ -8,6 +8,6 @@
#ifndef INC_PROJECT_H_
#define INC_PROJECT_H_
-void run_project ();
+void project_run();
#endif /* INC_PROJECT_H_ */
diff --git a/project/Core/Inc/System/systick.h b/project/Core/Inc/System/systick.h
index 6075c95..bb5454d 100644
--- a/project/Core/Inc/System/systick.h
+++ b/project/Core/Inc/System/systick.h
@@ -23,4 +23,6 @@ void init_systick();
// This fuction is to create delay using SysTick timer counter
void delay_systick();
+int check_systick();
+
#endif /* INC_SYSTICK_H_ */
diff --git a/project/Core/Src/Homework/hw4.c b/project/Core/Src/Homework/hw4.c
index 2154cd4..7bafb38 100644
--- a/project/Core/Src/Homework/hw4.c
+++ b/project/Core/Src/Homework/hw4.c
@@ -11,12 +11,15 @@
#include <stdio.h>
-void read_and_print_char_nonblocking() {
+char read_and_print_char_nonblocking() {
uint8_t ch = USART_Read_Nonblocking(USART2);
- printf("%c", ch);
+ if (ch) {
+ printf("%c", ch);
+ }
if (ch == '\r') {
printf("\n");
}
+ return ch;
}
void hw4_run() {
diff --git a/project/Core/Src/Project/project.c b/project/Core/Src/Project/project.c
index d029e0b..379f380 100644
--- a/project/Core/Src/Project/project.c
+++ b/project/Core/Src/Project/project.c
@@ -6,3 +6,99 @@
*/
#include "project.h"
+#include "LED.h"
+#include "systick.h"
+#include <stdio.h>
+#include "hw4.h"
+#include <string.h>
+
+#define PLAYING_STATE (1)
+#define PAUSED_STATE (2)
+#define STOPPED_STATE (3)
+
+void handle_input(char buffer[], uint8_t *state);
+void help();
+void next();
+void play();
+void pause();
+void pause_loop();
+void stop();
+
+void project_run() {
+ char buffer[8];
+ char* cur = buffer;
+ uint8_t state = STOPPED_STATE;
+
+ help();
+ for (;;) {
+ if (state == PAUSED_STATE)
+ pause_loop();
+ char ch = read_and_print_char_nonblocking();
+ if (!ch)
+ continue;
+ if (ch == '\r') {
+ *cur = 0;
+ handle_input(buffer, &state);
+ cur = buffer;
+ continue;
+ }
+ *cur++ = ch;
+ }
+}
+
+void handle_input(char buffer[], uint8_t *state) {
+ if (!strcmp(buffer, "HELP")) {
+ help();
+ }
+ else if (!strcmp(buffer, "NEXT")) {
+ next();
+ }
+ else if (!strcmp(buffer, "PLAY")) {
+ play();
+ *state = PLAYING_STATE;
+ }
+ else if (!strcmp(buffer, "PAUSE")) {
+ pause();
+ *state = PAUSED_STATE;
+ }
+ else if (!strcmp(buffer, "STOP")) {
+ stop();
+ *state = STOPPED_STATE;
+ }
+ else {
+ printf("Unknown command \"%s\"\n\r", buffer);
+ }
+}
+
+void help() {
+ printf("\r***REMOTE LED CONTROL MENU***\r\n");
+ printf("Available User Commands:\r\n");
+ printf("NEXT - Show next song info\r\n");
+ printf("PLAY - Play the song (LED on)\r\n");
+ printf("PAUSE - Pause the song (LED flash)\r\n");
+ printf("STOP - Stop the song (LED off)\r\n");
+}
+
+void next() {
+ // TODO
+}
+
+void play() {
+ LED_On();
+}
+
+void pause() {
+ init_systick();
+}
+
+void pause_loop() {
+ if (check_systick()) {
+ LED_Toggle();
+ }
+}
+
+void stop() {
+ LED_Off();
+}
+
+
diff --git a/project/Core/Src/System/systick.c b/project/Core/Src/System/systick.c
index 58ee2b1..a9e38c7 100644
--- a/project/Core/Src/System/systick.c
+++ b/project/Core/Src/System/systick.c
@@ -16,9 +16,9 @@ void init_systick()
// Set the enable bit in the CTRL (CSR) to start the timer.
systick_t *s = get_systick();
- s->CSR = 0;
- s->RVR = 8000000;
+ s->CSR &= ~1;
s->CSR |= 1<<2;
+ s->RVR = 8000000; // 100 ms
s->CSR |= 1;
}
@@ -37,3 +37,19 @@ void delay_systick()
;
}
}
+
+int check_systick() {
+ static int i = 0;
+
+ systick_t *s = get_systick();
+ if (!(~s->CSR & (1<<16))) {
+ i++;
+ }
+
+ if (i >= 10) {
+ i = 0;
+ return 1;
+ } else {
+ return 0;
+ }
+}
diff --git a/project/Core/Src/main.c b/project/Core/Src/main.c
index b95d7e3..94c1aa1 100644
--- a/project/Core/Src/main.c
+++ b/project/Core/Src/main.c
@@ -11,6 +11,7 @@
#include "activity7.h"
#include <stdio.h>
#include "hw4.h"
+#include "project.h"
int main(void){
@@ -19,9 +20,9 @@ int main(void){
LED_Init();
UART2_Init();
- hw4_run();
// application run function
+ printf("\n\n\n\n\n\n\n\n\r");
// run_demo();
-// activity7_run();
+ project_run();
}