From 894ba8c0d31359e689778f65fecaaf8bab90e2f1 Mon Sep 17 00:00:00 2001 From: Ramy Wahib Date: Sat, 13 Jun 2026 16:26:20 -0400 Subject: [PATCH] rebasing --- embedded/STM32/app/src/main.cpp | 47 +++++++++++++++++++++++++++++++++ embedded/STM32/platformio.ini | 7 +++-- 2 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 embedded/STM32/app/src/main.cpp diff --git a/embedded/STM32/app/src/main.cpp b/embedded/STM32/app/src/main.cpp new file mode 100644 index 00000000..9c9281c5 --- /dev/null +++ b/embedded/STM32/app/src/main.cpp @@ -0,0 +1,47 @@ +#include + +// SENSOR +Encoder sensor = Encoder(2, 3, 2048); +void doA(){sensor.handleA();} +void doB(){sensor.handleB();} + +// DRIVER +BLDCDriver3PWM driver = BLDCDriver3PWM(9, 5, 6, 8); + +// CURRENT SENSE (Optional) +InlineCurrentSense current_sense = InlineCurrentSense(0.01, 50, A0, A2); + +// MOTOR +BLDCMotor motor = BLDCMotor(11); + +// USER INTERFACE +Commander commander = Commander(Serial); +void onMotor(char* cmd){ commander.motor(&motor, cmd); } + +void setup() { + Serial.begin(115200); + + sensor.init(); + sensor.enableInterrupts(doA, doB); + + driver.voltage_power_supply = 12; + driver.init(); + + current_sense.linkDriver(&driver); + current_sense.init(); + + motor.linkSensor(&sensor); + motor.linkDriver(&driver); + motor.linkCurrentSense(¤t_sense); + motor.init(); + motor.initFOC(); + + commander.add('M', onMotor, "motor"); + Serial.println("Motor ready! Type 'M' for motor commands"); +} + +void loop() { + motor.loopFOC(); + motor.move(motor.target); + commander.run(); +} \ No newline at end of file diff --git a/embedded/STM32/platformio.ini b/embedded/STM32/platformio.ini index 024b6f0e..021d9975 100644 --- a/embedded/STM32/platformio.ini +++ b/embedded/STM32/platformio.ini @@ -65,15 +65,18 @@ build_flags = [env:app] platform = ststm32 +lib_deps = + simplefoc/SimpleFOCDrivers@^1.0.8 + askuric/Simple FOC@^2.3.4 board = nucleo_g474re framework = stm32cube build_src_filter = +<../app/> -<*> board_build.ldscript = $PROJECT_DIR/app/src/linkerscript.ld extra_scripts = pre:rename_bin.py linker_flags.py -build_flags = +build_flags = -mfpu=fpv4-sp-d16 -mfloat-abi=hard -Wl,-Map,app.map -Ilib/FreeRTOS-Kernel/include - -Ilib/FreeRTOS-Kernel/FreeRTOS-Port + -Ilib/FreeRTOS-Kernel/FreeRTOS-Port \ No newline at end of file