diff options
| author | sowgro <tpoke.ferrari@gmail.com> | 2025-10-09 21:43:08 -0400 |
|---|---|---|
| committer | sowgro <tpoke.ferrari@gmail.com> | 2025-10-09 21:43:08 -0400 |
| commit | 0e0f83905bb3ee79f4917927479cdaf710e8ac07 (patch) | |
| tree | d7c1184e0d6732e671f2c72fc2fc7a10231b8fda | |
| parent | 003bf896a726b2e3496c7b429f648b8db9c36a3b (diff) | |
| download | 340-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 '')
| -rw-r--r-- | project/.settings/language.settings.xml | 4 | ||||
| -rw-r--r-- | project/Core/Inc/Homework/hw4.h | 2 | ||||
| -rw-r--r-- | project/Core/Inc/Project/project.h | 2 | ||||
| -rw-r--r-- | project/Core/Inc/System/systick.h | 2 | ||||
| -rw-r--r-- | project/Core/Src/Homework/hw4.c | 7 | ||||
| -rw-r--r-- | project/Core/Src/Project/project.c | 96 | ||||
| -rw-r--r-- | project/Core/Src/System/systick.c | 20 | ||||
| -rw-r--r-- | project/Core/Src/main.c | 5 |
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 "${INPUTS}"" 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 "${INPUTS}"" 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 "${INPUTS}"" 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 "${INPUTS}"" 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(); } |
