From 60540437fb8740a8461149612d86cdc925a61bd3 Mon Sep 17 00:00:00 2001 From: ayabusa Date: Sun, 31 Mar 2024 21:05:08 +0200 Subject: [PATCH] clean up --- numworks_port/Makefile | 1 + numworks_port/build/Laplace/gpio_helper.o | Bin 0 -> 5604 bytes numworks_port/build/Laplace/laplace.o | Bin 0 -> 2368 bytes numworks_port/build/Laplace/led.o | Bin 5068 -> 4176 bytes numworks_port/build/info_headers.o | Bin 11580 -> 9104 bytes numworks_port/build/main.bin | Bin 66304 -> 66805 bytes numworks_port/build/main.elf | Bin 87284 -> 275616 bytes numworks_port/build/main.o | Bin 0 -> 2336 bytes numworks_port/build/start_handler.o | Bin 6448 -> 4600 bytes numworks_port/build/vector_table.o | Bin 2544 -> 2488 bytes numworks_port/src/Laplace/gpio_helper.c | 84 +++++++++++++++++++ numworks_port/src/Laplace/gpio_helper.h | 22 +++++ numworks_port/src/Laplace/laplace.c | 7 ++ numworks_port/src/Laplace/laplace.h | 15 ++++ numworks_port/src/Laplace/{led.cpp => led.c} | 34 ++------ numworks_port/src/Laplace/led.h | 1 + numworks_port/src/info_headers.cpp | 2 +- numworks_port/src/main.c | 8 ++ numworks_port/src/main.h | 15 ++++ numworks_port/src/start_handler.cpp | 24 ++---- 20 files changed, 167 insertions(+), 46 deletions(-) create mode 100644 numworks_port/build/Laplace/gpio_helper.o create mode 100644 numworks_port/build/Laplace/laplace.o create mode 100644 numworks_port/build/main.o create mode 100644 numworks_port/src/Laplace/gpio_helper.c create mode 100644 numworks_port/src/Laplace/gpio_helper.h create mode 100644 numworks_port/src/Laplace/laplace.c create mode 100644 numworks_port/src/Laplace/laplace.h rename numworks_port/src/Laplace/{led.cpp => led.c} (51%) create mode 100644 numworks_port/src/main.c create mode 100644 numworks_port/src/main.h diff --git a/numworks_port/Makefile b/numworks_port/Makefile index cce2ae8..1e1ca64 100644 --- a/numworks_port/Makefile +++ b/numworks_port/Makefile @@ -87,5 +87,6 @@ $(BUILD_DIR)/$(TARGET).bin: $(BUILD_DIR)/$(TARGET).elf .PHONY: clean clean: rm -f $(BUILD_DIR)/*.o + rm -f $(BUILD_DIR)/Laplace/*.o rm -f $(BUILD_DIR)/$(TARGET).elf rm -f $(BUILD_DIR)/$(TARGET).bin \ No newline at end of file diff --git a/numworks_port/build/Laplace/gpio_helper.o b/numworks_port/build/Laplace/gpio_helper.o new file mode 100644 index 0000000000000000000000000000000000000000..5e119b80713dd96cfdcdbae532c878b319c2cb70 GIT binary patch literal 5604 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 literal 0 HcmV?d00001 diff --git a/numworks_port/build/Laplace/led.o b/numworks_port/build/Laplace/led.o index 1951be54e8b1cb12468307f2bcb12862a00fab1c..6284c5539b2b0ef408aceed1f119977b0c054081 100644 GIT binary patch literal 4176 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 Q2lc*$xO`VB0hQi=0Cw*>yZ`_I literal 11580 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 Ux>%a-Bm3{x8$(=vbr!vU0p{h6O8@`> diff --git a/numworks_port/build/main.bin b/numworks_port/build/main.bin index 423b97fb77d88d53565b6adfb3d1194379cf2ca6..ba87df02f0d362b509db57513a46a24dc23cb77b 100755 GIT binary patch delta 1014 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 literal 87284 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 JI}&lW_}`jJ2fhFR diff --git a/numworks_port/build/main.o b/numworks_port/build/main.o new file mode 100644 index 0000000000000000000000000000000000000000..9b45cec0981edc7353dec2e37b1ed21c131d7a21 GIT binary patch literal 2336 zcma)7&2Jk;6o0epwcR*2Nt)1vAXp%URAJY4Xk#_V5GS-nf>fvyQW1w}?2JEPcWrjp zfuIU{LBNG$#ep+|6Bjrl5bA%xnLh#v2_z)K@2z*7O%Z}8jeqZZ-n^N&{_xtX*M$(I zNzgi-O3>yLi*-4Hby}qJboV>@=H&OkPK3?B^uyin--k7qc;v+6z}a2o_$^ToEu?6O z{I_5Y!}^&aXI+JpQMC3ML~(<`DEye%3T1|3;TM3Jvj#zofC2={eT^THgYzV__=3c| zxL7$~GApZN8>_1e~E-Chrsr(~oq*^b{Cjhmfe7_0XjzX7=m zxjQ<#;zT3ou)f6_Zzy9&wg=5<*p0g*sN(+EZv$o6={IHQA2pQYZ*Z9H^lYc=t0To4e<5 z@7!9$xqRv0yNRot#X12AGVWAn%d`wx6W@HRQvBHXOti{)bgeoRQlYUVo&jq$t~vXZ zFBkUD88gL&+@e?#7tCd`A|4T|;<5ab$>Y@7CYV*_=+~31)jT_Kcxh(V3@Jx=y&1}8 zY6OZfEHGnBi<#HyWdgU-$-;?EhbWT#t_7Je=V5NzOQV3U!kB+ zpyT>@igbND;B^dGx{tNXOiJ3u??&@%%0sZ3NlDvoLeB16!)CfKd_KLe0?&i4*@j^T4N^&q^dlR##c*PRr#-%q$u?x`m2_bC*aaQXv& z&uS+i@5}TNR<^#EGw0>6i>~h;c--v>kkA^0O)UWRUX0jkO1I%R2PMBjosav;d+N8s Z&V6je-vCWIANMKicN_J6shxn@?{5xO7kB^w literal 0 HcmV?d00001 diff --git a/numworks_port/build/start_handler.o b/numworks_port/build/start_handler.o index abcdf0d5d5ddbde3f283141cb06d8c919a765a75..5ffb6102af33a626cfe1c302131cc72bd754aaef 100644 GIT binary patch literal 4600 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 delta 655 zcmZ8ezi-n(6n{G%3bzzvmQ=(PoA*vFZrAu*L(^|MmYDsE%zpMc813KIh}6YQ`dF)<+V&UFVk>Avs1@80|Fbnm_W(>`Vr)80;fAx{PX zK!GSoAU#BwynwJEQe3hCBIV}<2~nZ#`yC*3v@Vnef~u7fJGgZL127bA3WJgF2xOG5 zBGJ^x{DYyStEhrGskCj(CN7femTk(`RVz1+_uT;5s+qUUC9`cWJ9US@lJ2->36`C6 zz3!mPm~g_44@&VIni$A%oBx)IjmLqX^yBTs+lhkGJ`gy?#KhXSxGdE~8n>9Am zh!2=(+3fctf8PsxXKis1xol?jFpPGY7atVSt2#UTza=zWe54n6J0Xw)hP1j?yvvW2 zB7dssr|*;%vaX{nA&4nSCcvePFK2v3@Cd*}mUlDW%6Lz(1rVkAX-$1jq%oC$)aFRS zPZayLo}<@PfDNA4r)h+r{6fflL(h?4+|vtK_EIlU6Gz%gPd;Hs2Q!&}!;UTvWQ|i} fn!drPl2)u3Ir5p`GYa%81*oRlF=|Kr#2EhzOTu&J diff --git a/numworks_port/src/Laplace/gpio_helper.c b/numworks_port/src/Laplace/gpio_helper.c new file mode 100644 index 0000000..7211792 --- /dev/null +++ b/numworks_port/src/Laplace/gpio_helper.c @@ -0,0 +1,84 @@ +#include "gpio_helper.h" + +uint8_t GPIOA_state = 0; +uint8_t GPIOB_state = 0; +uint8_t GPIOC_state = 0; +uint8_t GPIOD_state = 0; +uint8_t GPIOE_state = 0; + +void set_output_pin(uint8_t gpio_x, uint8_t pin, bool state){ + switch (gpio_x) + { + case GPIO_A: + if(state){ + GPIOA_state |= (1 << pin); + }else{ + GPIOA_state &= ~(1 << pin); + } + GPIOA->ODR = GPIOA_state; + break; + + case GPIO_B: + if(state){ + GPIOB_state |= (1 << pin); + }else{ + GPIOB_state &= ~(1 << pin); + } + GPIOB->ODR = GPIOB_state; + break; + + case GPIO_C: + if(state){ + GPIOC_state |= (1 << pin); + }else{ + GPIOC_state &= ~(1 << pin); + } + GPIOC->ODR = GPIOC_state; + break; + + case GPIO_D: + if(state){ + GPIOD_state |= (1 << pin); + }else{ + GPIOD_state &= ~(1 << pin); + } + GPIOD->ODR = GPIOD_state; + break; + + case GPIO_E: + if(state){ + GPIOE_state |= (1 << pin); + }else{ + GPIOE_state &= ~(1 << pin); + } + GPIOE->ODR = GPIOE_state; + break; + + default: + break; + } +} + +void enable_gpio_x_rcc(uint8_t gpio_x){ + switch (gpio_x) + { + case GPIO_A: + RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ; + break; + case GPIO_B: + RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN ; + break; + case GPIO_C: + RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN ; + break; + case GPIO_D: + RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN ; + break; + case GPIO_E: + RCC->AHB1ENR |= RCC_AHB1ENR_GPIOEEN ; + break; + + default: + break; + } +} \ No newline at end of file diff --git a/numworks_port/src/Laplace/gpio_helper.h b/numworks_port/src/Laplace/gpio_helper.h new file mode 100644 index 0000000..4f73d94 --- /dev/null +++ b/numworks_port/src/Laplace/gpio_helper.h @@ -0,0 +1,22 @@ +/** @file gpio_helper.h + * + * @brief Control all the GPIO + * + */ + +#ifndef GPIO_HELPER_H +#define GPIO_HELPER_H + +#include "stdbool.h" +#include "../device/stm32f730xx.h" + +#define GPIO_A 0 +#define GPIO_B 1 +#define GPIO_C 2 +#define GPIO_D 3 +#define GPIO_E 4 + +void set_output_pin(uint8_t gpio_x, uint8_t pin, bool state); +void enable_gpio_x_rcc(uint8_t gpio_x); + +#endif \ No newline at end of file diff --git a/numworks_port/src/Laplace/laplace.c b/numworks_port/src/Laplace/laplace.c new file mode 100644 index 0000000..4edfdd9 --- /dev/null +++ b/numworks_port/src/Laplace/laplace.c @@ -0,0 +1,7 @@ +#include "laplace.h" + +void laplace_init(){ + // Enable the GPIO peripheral in RCC. + enable_gpio_x_rcc(GPIO_B); + led_init(); +} \ No newline at end of file diff --git a/numworks_port/src/Laplace/laplace.h b/numworks_port/src/Laplace/laplace.h new file mode 100644 index 0000000..d775efb --- /dev/null +++ b/numworks_port/src/Laplace/laplace.h @@ -0,0 +1,15 @@ +/** @file laplace.h + * + * @brief Global function of Laplace + * + */ + +#ifndef LAPLACE_H +#define LAPLACE_H + +#include "gpio_helper.h" +#include "led.h" + +void laplace_init(); + +#endif \ No newline at end of file diff --git a/numworks_port/src/Laplace/led.cpp b/numworks_port/src/Laplace/led.c similarity index 51% rename from numworks_port/src/Laplace/led.cpp rename to numworks_port/src/Laplace/led.c index 3d2f664..db8ac59 100644 --- a/numworks_port/src/Laplace/led.cpp +++ b/numworks_port/src/Laplace/led.c @@ -1,7 +1,7 @@ #include "led.h" -// Variable to store the current state of LEDs -uint8_t led_state = 0; +// GPIOB for all the leds +uint8_t gpio_b = GPIO_B; void led_init(){ // It should be set to push-pull low-speed output. @@ -23,37 +23,19 @@ void led_init(){ } void set_led_red(bool state){ - if(state){ - led_state |= (1 << RED_LED_PIN); - }else{ - led_state &= ~(1 << RED_LED_PIN); - } - GPIOB->ODR = led_state; + set_output_pin(gpio_b, RED_LED_PIN, state); } void set_led_green(bool state){ - if(state){ - led_state |= (1 << GREEN_LED_PIN); - }else{ - led_state &= ~(1 << GREEN_LED_PIN); - } - GPIOB->ODR = led_state; + set_output_pin(gpio_b, GREEN_LED_PIN, state); } void set_led_blue(bool state){ - if(state){ - led_state |= (1 << BLUE_LED_PIN); - }else{ - led_state &= ~(1 << BLUE_LED_PIN); - } - GPIOB->ODR = led_state; + set_output_pin(gpio_b, BLUE_LED_PIN, state); } void set_led_all(bool state){ - if(state){ - led_state = (1 << RED_LED_PIN) | (1 << GREEN_LED_PIN) | (1 << BLUE_LED_PIN); - }else{ - led_state = 0; - } - GPIOB->ODR = led_state; + set_output_pin(gpio_b, RED_LED_PIN, state); + set_output_pin(gpio_b, GREEN_LED_PIN, state); + set_output_pin(gpio_b, BLUE_LED_PIN, state); } \ No newline at end of file diff --git a/numworks_port/src/Laplace/led.h b/numworks_port/src/Laplace/led.h index 60b22d2..2be3080 100644 --- a/numworks_port/src/Laplace/led.h +++ b/numworks_port/src/Laplace/led.h @@ -13,6 +13,7 @@ #include #include "../device/stm32f730xx.h" +#include "gpio_helper.h" void led_init(); void set_led_red(bool state); diff --git a/numworks_port/src/info_headers.cpp b/numworks_port/src/info_headers.cpp index a5537ec..f57cdcd 100644 --- a/numworks_port/src/info_headers.cpp +++ b/numworks_port/src/info_headers.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #define byte4 0xFF, 0xFF, 0xFF, 0xFF diff --git a/numworks_port/src/main.c b/numworks_port/src/main.c new file mode 100644 index 0000000..47c2a0f --- /dev/null +++ b/numworks_port/src/main.c @@ -0,0 +1,8 @@ +#include "main.h" + +// this is our main function, I separated it from the c++ code because I don't like this language +main_entry(){ + // init all the peripherals + laplace_init(); + set_led_all(true); +} \ No newline at end of file diff --git a/numworks_port/src/main.h b/numworks_port/src/main.h new file mode 100644 index 0000000..6d4e8bf --- /dev/null +++ b/numworks_port/src/main.h @@ -0,0 +1,15 @@ +/** @file led.h + * + * @brief Control the led + * + */ + +#ifndef MAIN_H +#define MAIN_H + +#include "Laplace/laplace.h" +#include "Laplace/led.h" + +void main_entry(); + +#endif \ No newline at end of file diff --git a/numworks_port/src/start_handler.cpp b/numworks_port/src/start_handler.cpp index 8f5e097..7fa1004 100644 --- a/numworks_port/src/start_handler.cpp +++ b/numworks_port/src/start_handler.cpp @@ -2,7 +2,9 @@ #include #include #include "device/stm32f730xx.h" -#include "Laplace/led.h" +extern "C" { + #include "main.h" +} //#define LED_PIN (4) // PB0 @@ -58,22 +60,6 @@ void __attribute__((noinline)) start() { size_t bssSectionLength = (&_bss_section_end_ram - &_bss_section_start_ram); memset_custom(&_bss_section_start_ram, 0, bssSectionLength); - // Enable the GPIO peripheral in RCC. - RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN ; - led_init(); - set_led_green(true); - set_led_red(true); - /* - // B0 is connected to the LED. - // It should be set to push-pull low-speed output. - GPIOB->MODER &= ~(0x3 << (LED_PIN*2)); - GPIOB->MODER |= (0x1 << (LED_PIN*2)); - GPIOB->OTYPER &= ~(1 << LED_PIN); - - GPIOB->ODR = (1 << LED_PIN); - */ - while (0) - { - // code - } + main_entry(); + } \ No newline at end of file