From ec510adb0fa901a9c7c3b922077a2f3ecfcedb65 Mon Sep 17 00:00:00 2001 From: LeonardoBizzoni Date: Sat, 29 Nov 2025 09:45:17 +0100 Subject: [PATCH] Squashed commit of the following: commit cfb39438ee9b2f50d06a6d132ae30b90cb3dd389 Author: LeonardoBizzoni Date: Sat Nov 29 09:42:06 2025 +0100 switched to Giuseppe Caliaro IOC commit 74f1e3203a403d5e1779c5842609b9d54b94e69f Author: LeonardoBizzoni Date: Sat Nov 29 09:33:34 2025 +0100 LEDs commit d82c5a547bd87fb30b0e219c329944b69375f9dd Author: LeonardoBizzoni Date: Fri Nov 28 15:24:45 2025 +0100 p3dx -> fmw commit c929e327706c9a50f90245cdabe1661f91541c2c Author: LeonardoBizzoni Date: Sat Nov 22 11:33:08 2025 +0100 Message sender program commit 61ee56b1bf16a052c626c4ea981d37b0870bc9bc Author: LeonardoBizzoni Date: Fri Nov 21 14:32:34 2025 +0100 Renamed otto -> p3dx commit ecf53ecbbbb03a0eeb764fd9d24af3083c34cc87 Author: LeonardoBizzoni Date: Fri Oct 24 15:37:57 2025 +0200 New communication protocol draft --- otto_controller/.mxproject | 35 - .../.settings/stm32cubeide.project.prefs | 3 - .../Core/Inc/communication/otto_messages.h | 54 - otto_controller/Core/Inc/control/encoder.h | 26 - .../Core/Inc/control/motor_controller.h | 28 - otto_controller/Core/Inc/control/odometry.h | 36 - otto_controller/Core/Inc/control/pid.h | 32 - otto_controller/Core/Inc/crc.h | 52 - otto_controller/Core/Inc/dma.h | 52 - otto_controller/Core/Inc/gpio.h | 49 - otto_controller/Core/Inc/main.h | 112 - otto_controller/Core/Inc/tim.h | 60 - otto_controller/Core/Inc/usart.h | 52 - otto_controller/Core/Src/control.c | 105 - otto_controller/Core/Src/crc.c | 92 - otto_controller/Core/Src/dma.c | 50 - otto_controller/Core/Src/gpio.c | 114 - otto_controller/Core/Src/main.c | 450 - otto_controller/Core/Src/stm32f7xx_hal_msp.c | 86 - otto_controller/Core/Src/tim.c | 406 - otto_controller/Core/Src/usart.c | 164 - otto_controller/otto_controller.ioc | 312 - .../.cproject | 6 +- pioneer_controller/.mxproject | 25 + .../.project | 2 +- .../com.st.stm32cube.ide.mcu.sfrview.prefs | 1 + .../.settings/language.settings.xml | 5 +- .../org.eclipse.cdt.codan.core.prefs | 0 .../.settings/org.eclipse.cdt.core.prefs | 0 .../.settings/org.eclipse.cdt.ui.prefs | 0 .../.settings/org.eclipse.core.runtime.prefs | 0 .../.settings/stm32cubeide.project.prefs | 3 + .../Core/Inc/firmware/fmw_core.h | 82 + .../Core/Inc/firmware/fmw_inc.h | 7 + .../Core/Inc/firmware/fmw_messages.h | 104 + pioneer_controller/Core/Inc/main.h | 198 + .../Core/Inc/stm32f7xx_hal_conf.h | 108 +- .../Core/Inc/stm32f7xx_it.h | 11 +- .../Core/Src/firmware/fwm_core.c | 151 + pioneer_controller/Core/Src/main.c | 970 + .../Core/Src/stm32f7xx_hal_msp.c | 540 + .../Core/Src/stm32f7xx_it.c | 77 +- .../Core/Src/syscalls.c | 0 .../Core/Src/sysmem.c | 0 .../Core/Src/system_stm32f7xx.c | 0 .../Core/Startup/startup_stm32f767zitx.s | 0 .../Device/ST/STM32F7xx/Include/stm32f767xx.h | 37884 ++++++++-------- .../Device/ST/STM32F7xx/Include/stm32f7xx.h | 493 +- .../ST/STM32F7xx/Include/system_stm32f7xx.h | 228 +- .../CMSIS/Device/ST/STM32F7xx/LICENSE.txt | 6 + .../CMSIS/Device/ST/STM32F7xx/License.md | 83 + .../Drivers/CMSIS/Include/cmsis_armcc.h | 0 .../Drivers/CMSIS/Include/cmsis_armclang.h | 0 .../Drivers/CMSIS/Include/cmsis_compiler.h | 0 .../Drivers/CMSIS/Include/cmsis_gcc.h | 0 .../Drivers/CMSIS/Include/cmsis_iccarm.h | 0 .../Drivers/CMSIS/Include/cmsis_version.h | 0 .../Drivers/CMSIS/Include/core_armv8mbl.h | 0 .../Drivers/CMSIS/Include/core_armv8mml.h | 0 .../Drivers/CMSIS/Include/core_cm0.h | 0 .../Drivers/CMSIS/Include/core_cm0plus.h | 0 .../Drivers/CMSIS/Include/core_cm1.h | 0 .../Drivers/CMSIS/Include/core_cm23.h | 0 .../Drivers/CMSIS/Include/core_cm3.h | 0 .../Drivers/CMSIS/Include/core_cm33.h | 0 .../Drivers/CMSIS/Include/core_cm4.h | 0 .../Drivers/CMSIS/Include/core_cm7.h | 0 .../Drivers/CMSIS/Include/core_sc000.h | 0 .../Drivers/CMSIS/Include/core_sc300.h | 0 .../Drivers/CMSIS/Include/mpu_armv7.h | 0 .../Drivers/CMSIS/Include/mpu_armv8.h | 0 .../Drivers/CMSIS/Include/tz_context.h | 0 pioneer_controller/Drivers/CMSIS/LICENSE.txt | 201 + .../Inc/Legacy/stm32_hal_legacy.h | 8178 ++-- .../STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h | 551 +- .../Inc/stm32f7xx_hal_adc.h | 957 + .../Inc/stm32f7xx_hal_adc_ex.h | 354 + .../Inc/stm32f7xx_hal_cortex.h | 812 +- .../Inc/stm32f7xx_hal_crc.h | 685 +- .../Inc/stm32f7xx_hal_crc_ex.h | 303 +- .../Inc/stm32f7xx_hal_def.h | 439 +- .../Inc/stm32f7xx_hal_dma.h | 1496 +- .../Inc/stm32f7xx_hal_dma_ex.h | 368 +- .../Inc/stm32f7xx_hal_exti.h | 636 +- .../Inc/stm32f7xx_hal_flash.h | 833 +- .../Inc/stm32f7xx_hal_flash_ex.h | 1397 +- .../Inc/stm32f7xx_hal_gpio.h | 632 +- .../Inc/stm32f7xx_hal_gpio_ex.h | 1314 +- .../Inc/stm32f7xx_hal_i2c.h | 1647 +- .../Inc/stm32f7xx_hal_i2c_ex.h | 435 +- .../Inc/stm32f7xx_hal_pwr.h | 806 +- .../Inc/stm32f7xx_hal_pwr_ex.h | 522 +- .../Inc/stm32f7xx_hal_rcc.h | 2617 +- .../Inc/stm32f7xx_hal_rcc_ex.h | 7079 +-- .../Inc/stm32f7xx_hal_tim.h | 4797 +- .../Inc/stm32f7xx_hal_tim_ex.h | 722 +- .../Inc/stm32f7xx_hal_uart.h | 3292 +- .../Inc/stm32f7xx_hal_uart_ex.h | 862 +- .../Inc/stm32f7xx_ll_adc.h | 4730 ++ .../Inc/stm32f7xx_ll_bus.h | 1973 + .../Inc/stm32f7xx_ll_cortex.h | 639 + .../Inc/stm32f7xx_ll_crc.h | 461 + .../Inc/stm32f7xx_ll_dma.h | 2891 ++ .../Inc/stm32f7xx_ll_exti.h | 948 + .../Inc/stm32f7xx_ll_gpio.h | 981 + .../Inc/stm32f7xx_ll_pwr.h | 1016 + .../Inc/stm32f7xx_ll_rcc.h | 5170 +++ .../Inc/stm32f7xx_ll_system.h | 1018 + .../Inc/stm32f7xx_ll_tim.h | 4737 ++ .../Inc/stm32f7xx_ll_usart.h | 3804 ++ .../Inc/stm32f7xx_ll_utils.h | 304 + .../Drivers/STM32F7xx_HAL_Driver/LICENSE.txt | 6 + .../Drivers/STM32F7xx_HAL_Driver/License.md | 3 + .../STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c | 1240 +- .../Src/stm32f7xx_hal_adc.c | 2115 + .../Src/stm32f7xx_hal_adc_ex.c | 1070 + .../Src/stm32f7xx_hal_cortex.c | 1034 +- .../Src/stm32f7xx_hal_crc.c | 1038 +- .../Src/stm32f7xx_hal_crc_ex.c | 455 +- .../Src/stm32f7xx_hal_dma.c | 2619 +- .../Src/stm32f7xx_hal_dma_ex.c | 618 +- .../Src/stm32f7xx_hal_exti.c | 1106 +- .../Src/stm32f7xx_hal_flash.c | 1647 +- .../Src/stm32f7xx_hal_flash_ex.c | 2241 +- .../Src/stm32f7xx_hal_gpio.c | 1059 +- .../Src/stm32f7xx_hal_i2c.c | 14267 +++--- .../Src/stm32f7xx_hal_i2c_ex.c | 528 +- .../Src/stm32f7xx_hal_pwr.c | 1199 +- .../Src/stm32f7xx_hal_pwr_ex.c | 1106 +- .../Src/stm32f7xx_hal_rcc.c | 2481 +- .../Src/stm32f7xx_hal_rcc_ex.c | 3549 +- .../Src/stm32f7xx_hal_tim.c | 15583 +++---- .../Src/stm32f7xx_hal_tim_ex.c | 5135 +-- .../Src/stm32f7xx_hal_uart.c | 8092 ++-- .../Src/stm32f7xx_hal_uart_ex.c | 1563 +- .../STM32F767ZITX_FLASH.ld | 4 +- .../STM32F767ZITX_RAM.ld | 0 pioneer_controller/pioneer_controller.ioc | 367 + pioneer_workstation/Makefile | 16 + pioneer_workstation/src/main.c | 115 + 140 files changed, 110025 insertions(+), 74192 deletions(-) delete mode 100644 otto_controller/.mxproject delete mode 100644 otto_controller/.settings/stm32cubeide.project.prefs delete mode 100644 otto_controller/Core/Inc/communication/otto_messages.h delete mode 100644 otto_controller/Core/Inc/control/encoder.h delete mode 100644 otto_controller/Core/Inc/control/motor_controller.h delete mode 100644 otto_controller/Core/Inc/control/odometry.h delete mode 100644 otto_controller/Core/Inc/control/pid.h delete mode 100644 otto_controller/Core/Inc/crc.h delete mode 100644 otto_controller/Core/Inc/dma.h delete mode 100644 otto_controller/Core/Inc/gpio.h delete mode 100644 otto_controller/Core/Inc/main.h delete mode 100644 otto_controller/Core/Inc/tim.h delete mode 100644 otto_controller/Core/Inc/usart.h delete mode 100644 otto_controller/Core/Src/control.c delete mode 100644 otto_controller/Core/Src/crc.c delete mode 100644 otto_controller/Core/Src/dma.c delete mode 100644 otto_controller/Core/Src/gpio.c delete mode 100644 otto_controller/Core/Src/main.c delete mode 100644 otto_controller/Core/Src/stm32f7xx_hal_msp.c delete mode 100644 otto_controller/Core/Src/tim.c delete mode 100644 otto_controller/Core/Src/usart.c delete mode 100644 otto_controller/otto_controller.ioc rename {otto_controller => pioneer_controller}/.cproject (98%) create mode 100644 pioneer_controller/.mxproject rename {otto_controller => pioneer_controller}/.project (99%) rename {otto_controller => pioneer_controller}/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs (68%) rename {otto_controller => pioneer_controller}/.settings/language.settings.xml (84%) rename {otto_controller => pioneer_controller}/.settings/org.eclipse.cdt.codan.core.prefs (100%) rename {otto_controller => pioneer_controller}/.settings/org.eclipse.cdt.core.prefs (100%) rename {otto_controller => pioneer_controller}/.settings/org.eclipse.cdt.ui.prefs (100%) rename {otto_controller => pioneer_controller}/.settings/org.eclipse.core.runtime.prefs (100%) create mode 100644 pioneer_controller/.settings/stm32cubeide.project.prefs create mode 100644 pioneer_controller/Core/Inc/firmware/fmw_core.h create mode 100644 pioneer_controller/Core/Inc/firmware/fmw_inc.h create mode 100644 pioneer_controller/Core/Inc/firmware/fmw_messages.h create mode 100644 pioneer_controller/Core/Inc/main.h rename {otto_controller => pioneer_controller}/Core/Inc/stm32f7xx_hal_conf.h (84%) rename {otto_controller => pioneer_controller}/Core/Inc/stm32f7xx_it.h (86%) create mode 100644 pioneer_controller/Core/Src/firmware/fwm_core.c create mode 100644 pioneer_controller/Core/Src/main.c create mode 100644 pioneer_controller/Core/Src/stm32f7xx_hal_msp.c rename {otto_controller => pioneer_controller}/Core/Src/stm32f7xx_it.c (76%) rename {otto_controller => pioneer_controller}/Core/Src/syscalls.c (100%) rename {otto_controller => pioneer_controller}/Core/Src/sysmem.c (100%) rename {otto_controller => pioneer_controller}/Core/Src/system_stm32f7xx.c (100%) rename {otto_controller => pioneer_controller}/Core/Startup/startup_stm32f767zitx.s (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h (98%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h (65%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h (51%) create mode 100644 pioneer_controller/Drivers/CMSIS/Device/ST/STM32F7xx/LICENSE.txt create mode 100644 pioneer_controller/Drivers/CMSIS/Device/ST/STM32F7xx/License.md rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/cmsis_armcc.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/cmsis_armclang.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/cmsis_compiler.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/cmsis_gcc.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/cmsis_iccarm.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/cmsis_version.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/core_armv8mbl.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/core_armv8mml.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/core_cm0.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/core_cm0plus.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/core_cm1.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/core_cm23.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/core_cm3.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/core_cm33.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/core_cm4.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/core_cm7.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/core_sc000.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/core_sc300.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/mpu_armv7.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/mpu_armv8.h (100%) rename {otto_controller => pioneer_controller}/Drivers/CMSIS/Include/tz_context.h (100%) create mode 100644 pioneer_controller/Drivers/CMSIS/LICENSE.txt rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h (84%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h (93%) create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h (95%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_crc.h (81%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_crc_ex.h (87%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h (91%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h (96%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h (91%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h (94%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h (94%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h (96%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h (67%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h (90%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h (85%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h (87%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h (94%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h (93%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h (96%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h (98%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h (93%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h (86%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart.h (95%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart_ex.h (95%) create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_adc.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_crc.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/LICENSE.txt create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/License.md rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c (91%) create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c create mode 100644 pioneer_controller/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c (87%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_crc.c (92%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_crc_ex.c (78%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c (95%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c (92%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c (90%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c (94%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c (96%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c (80%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c (76%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c (89%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c (95%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c (94%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c (95%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c (97%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c (88%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c (87%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c (86%) rename {otto_controller => pioneer_controller}/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.c (85%) rename {otto_controller => pioneer_controller}/STM32F767ZITX_FLASH.ld (98%) rename {otto_controller => pioneer_controller}/STM32F767ZITX_RAM.ld (100%) create mode 100644 pioneer_controller/pioneer_controller.ioc create mode 100644 pioneer_workstation/Makefile create mode 100644 pioneer_workstation/src/main.c diff --git a/otto_controller/.mxproject b/otto_controller/.mxproject deleted file mode 100644 index dc1939a..0000000 --- a/otto_controller/.mxproject +++ /dev/null @@ -1,35 +0,0 @@ -[PreviousLibFiles] -LibFiles=Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_crc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_crc_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart_ex.h;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_crc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_crc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.c;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_crc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_crc_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart_ex.h;Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h;Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h;Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h;Drivers/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.c;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/tz_context.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/mpu_armv8.h; - -[PreviousUsedCubeIDEFiles] -SourceFiles=Core/Src/main.c;Core/Src/gpio.c;Core/Src/crc.c;Core/Src/dma.c;Core/Src/tim.c;Core/Src/usart.c;Core/Src/stm32f7xx_it.c;Core/Src/stm32f7xx_hal_msp.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_crc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_crc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.c;Drivers/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.c;Core/Src/system_stm32f7xx.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_crc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_crc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.c;Drivers/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.c;Core/Src/system_stm32f7xx.c;;; -HeaderPath=Drivers/STM32F7xx_HAL_Driver/Inc;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy;Drivers/CMSIS/Device/ST/STM32F7xx/Include;Drivers/CMSIS/Include;Core/Inc; -CDefines=USE_HAL_DRIVER;STM32F767xx;USE_HAL_DRIVER;USE_HAL_DRIVER; - -[PreviousGenFiles] -AdvancedFolderStructure=true -HeaderFileListSize=8 -HeaderFiles#0=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Inc/gpio.h -HeaderFiles#1=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Inc/crc.h -HeaderFiles#2=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Inc/dma.h -HeaderFiles#3=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Inc/tim.h -HeaderFiles#4=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Inc/usart.h -HeaderFiles#5=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Inc/stm32f7xx_it.h -HeaderFiles#6=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Inc/stm32f7xx_hal_conf.h -HeaderFiles#7=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Inc/main.h -HeaderFolderListSize=1 -HeaderPath#0=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Inc -HeaderFiles=; -SourceFileListSize=8 -SourceFiles#0=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Src/gpio.c -SourceFiles#1=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Src/crc.c -SourceFiles#2=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Src/dma.c -SourceFiles#3=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Src/tim.c -SourceFiles#4=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Src/usart.c -SourceFiles#5=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Src/stm32f7xx_it.c -SourceFiles#6=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Src/stm32f7xx_hal_msp.c -SourceFiles#7=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Src/main.c -SourceFolderListSize=1 -SourcePath#0=/home/fdila/repos/lavoro/otto_stm32/otto_controller/Core/Src -SourceFiles=; - diff --git a/otto_controller/.settings/stm32cubeide.project.prefs b/otto_controller/.settings/stm32cubeide.project.prefs deleted file mode 100644 index 943e9ec..0000000 --- a/otto_controller/.settings/stm32cubeide.project.prefs +++ /dev/null @@ -1,3 +0,0 @@ -8DF89ED150041C4CBC7CB9A9CAA90856=AE0564D014D0FF6F8CDA67667BE5E95D -DC22A860405A8BF2F2C095E5B6529F12=AE0564D014D0FF6F8CDA67667BE5E95D -eclipse.preferences.version=1 diff --git a/otto_controller/Core/Inc/communication/otto_messages.h b/otto_controller/Core/Inc/communication/otto_messages.h deleted file mode 100644 index 51db7db..0000000 --- a/otto_controller/Core/Inc/communication/otto_messages.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * otto_messages.h - * - * Created on: Aug 5, 2021 - * Author: fdila - */ - -#ifndef INC_COMMUNICATION_OTTO_MESSAGES_H_ -#define INC_COMMUNICATION_OTTO_MESSAGES_H_ - -typedef struct { - // NOTE(lb): Why do we need to receive the wheels circumference and baseline? - // Also why BOTH wheels circumference? Aren't they always the same? - // Same for ticksXrevolution, we should already know all of this stuff. - // Even if this has to run on different devices its weird not to - // use compile time constants. - uint32_t ticks_per_revolution; // x4 resolution - float baseline; // in meters - float left_wheel_circumference; // in meters - float right_wheel_circumference; // in meters - - PidConstants pid_ks_left; - PidConstants pid_ks_right; - PidConstants pid_ks_cross; - - // NOTE(lb): must be either the last or the first parameter - // to skip it during CRC validation - uint32_t crc; -} ConfigMessage; - -typedef struct { - float linear_velocity; - float angular_velocity; - uint32_t crc; -} VelocityMessage; - -typedef uint16_t MessageStatusCode; -enum { - MessageStatusCode_Waiting4Config = 0, - MessageStatusCode_Running = 1, - MessageStatusCode_Error_Config = 2, - MessageStatusCode_Error_Velocity = 3, - MessageStatusCode_Fault_HBridge = 4, -}; - -typedef struct { - MessageStatusCode status; - uint16_t delta_millis; - int32_t left_ticks; - int32_t right_ticks; - uint32_t crc; -} StatusMessage; - -#endif /* INC_COMMUNICATION_OTTO_MESSAGES_H_ */ diff --git a/otto_controller/Core/Inc/control/encoder.h b/otto_controller/Core/Inc/control/encoder.h deleted file mode 100644 index 349c744..0000000 --- a/otto_controller/Core/Inc/control/encoder.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef ENCODER_H -#define ENCODER_H - -#include "main.h" - -typedef struct { - TIM_HandleTypeDef *timer; - uint32_t previous_millis; - uint32_t current_millis; - int32_t ticks; //if negative the wheel is going backwards - int32_t ticks_per_revolution; - float wheel_circumference; -} Encoder; - -void encoder_init(Encoder *encoders); -void encoder_update(Encoder *encoder); -float encoder_linear_velocity(Encoder *encoder); - -void encoder_count_reset(Encoder *encoder); -int encoder_count_get(Encoder *encoder); - -float meters_from_ticks(float encoder_ticks, - float wheel_circumference, - float ticks_per_revolution); - -#endif diff --git a/otto_controller/Core/Inc/control/motor_controller.h b/otto_controller/Core/Inc/control/motor_controller.h deleted file mode 100644 index 3bf6270..0000000 --- a/otto_controller/Core/Inc/control/motor_controller.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef MOTOR_CONTROLLER_H -#define MOTOR_CONTROLLER_H - -#include "main.h" - -// TODO(lb): reorder after C++ removal to avoid padding -typedef struct { - GPIO_TypeDef *sleep_gpio_port; - uint16_t sleep_pin; - GPIO_TypeDef *dir_gpio_port; - uint16_t dir_pin; - TIM_HandleTypeDef *pwm_timer; - uint32_t pwm_channel; - int32_t max_dutycycle; -} MotorController; - -typedef uint8_t MotorDirection; -enum { - MotorDirection_Backward = 0, - MotorDirection_Forward, -}; - -void motorcontroller_init(MotorController *motors); -void motorcontroller_speed_set(MotorController *motor, int32_t duty_cycle); -void motorcontroller_brake(MotorController *motor); -void motorcontroller_coast(MotorController * motor); - -#endif diff --git a/otto_controller/Core/Inc/control/odometry.h b/otto_controller/Core/Inc/control/odometry.h deleted file mode 100644 index 462c705..0000000 --- a/otto_controller/Core/Inc/control/odometry.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef ODOMETRY_H -#define ODOMETRY_H - -typedef struct { - union { - struct { - float right; - float left; - } setpoint; - float setpoints[2]; - struct { - float right; - float left; - } velocity; - float velocites[2]; - }; - - float linear_velocity; - float angular_velocity; - float baseline; -} Odometry; - -void odometry_setpoint_from_cmdvel(Odometry *odom, float linear_vel, - float angular_vel); - -#if 0 -class Odometry { - // NOTE(lb): can i delete this? - void FromWheelVelToOdom(float left_wheel_vel, float right_wheel_vel){ - linear_velocity_ = (left_wheel_vel + right_wheel_vel)/2; - angular_velocity_ = (right_wheel_vel - left_wheel_vel)/baseline_; - } -}; -#endif - -#endif diff --git a/otto_controller/Core/Inc/control/pid.h b/otto_controller/Core/Inc/control/pid.h deleted file mode 100644 index cfadaec..0000000 --- a/otto_controller/Core/Inc/control/pid.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef PID_H -#define PID_H - -typedef union { - struct { - float proportional; - float integral; - float derivative; - }; - struct { - float kp; - float ki; - float kd; - }; - float values[3]; -} PidConstants; - -typedef struct { - PidConstants ks; - float error; - float setpoint; - - //needed for integrative term - float error_sum; - - //needed for derivative term - float previous_error; -} Pid; - -int32_t pid_update(Pid *pid, float measure); - -#endif diff --git a/otto_controller/Core/Inc/crc.h b/otto_controller/Core/Inc/crc.h deleted file mode 100644 index b67dac5..0000000 --- a/otto_controller/Core/Inc/crc.h +++ /dev/null @@ -1,52 +0,0 @@ -/** - ****************************************************************************** - * @file crc.h - * @brief This file contains all the function prototypes for - * the crc.c file - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2021 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __CRC_H__ -#define __CRC_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "main.h" - -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -extern CRC_HandleTypeDef hcrc; - -/* USER CODE BEGIN Private defines */ - -/* USER CODE END Private defines */ - -void MX_CRC_Init(void); - -/* USER CODE BEGIN Prototypes */ - -/* USER CODE END Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif /* __CRC_H__ */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/otto_controller/Core/Inc/dma.h b/otto_controller/Core/Inc/dma.h deleted file mode 100644 index 052393e..0000000 --- a/otto_controller/Core/Inc/dma.h +++ /dev/null @@ -1,52 +0,0 @@ -/** - ****************************************************************************** - * @file dma.h - * @brief This file contains all the function prototypes for - * the dma.c file - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2021 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __DMA_H__ -#define __DMA_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "main.h" - -/* DMA memory to memory transfer handles -------------------------------------*/ - -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -/* USER CODE BEGIN Private defines */ - -/* USER CODE END Private defines */ - -void MX_DMA_Init(void); - -/* USER CODE BEGIN Prototypes */ - -/* USER CODE END Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif /* __DMA_H__ */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/otto_controller/Core/Inc/gpio.h b/otto_controller/Core/Inc/gpio.h deleted file mode 100644 index 5dd191b..0000000 --- a/otto_controller/Core/Inc/gpio.h +++ /dev/null @@ -1,49 +0,0 @@ -/** - ****************************************************************************** - * @file gpio.h - * @brief This file contains all the function prototypes for - * the gpio.c file - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2021 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __GPIO_H__ -#define __GPIO_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "main.h" - -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -/* USER CODE BEGIN Private defines */ - -/* USER CODE END Private defines */ - -void MX_GPIO_Init(void); - -/* USER CODE BEGIN Prototypes */ - -/* USER CODE END Prototypes */ - -#ifdef __cplusplus -} -#endif -#endif /*__ GPIO_H__ */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/otto_controller/Core/Inc/main.h b/otto_controller/Core/Inc/main.h deleted file mode 100644 index 94ab0f0..0000000 --- a/otto_controller/Core/Inc/main.h +++ /dev/null @@ -1,112 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : main.h - * @brief : Header for main.c file. - * This file contains the common defines of the application. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2019 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __MAIN_H -#define __MAIN_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f7xx_hal.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -/* Exported types ------------------------------------------------------------*/ -/* USER CODE BEGIN ET */ - -/* USER CODE END ET */ - -/* Exported constants --------------------------------------------------------*/ -/* USER CODE BEGIN EC */ - -extern int32_t pid_max; -extern int32_t pid_min; - -/* USER CODE END EC */ - -/* Exported macro ------------------------------------------------------------*/ -/* USER CODE BEGIN EM */ -#define ABS(a) ((a) >= 0 ? (a) : (-(a))) -#define MAX(a, b) ((a) >= (b) ? (a) : (b)) -#define MIN(a, b) ((a) <= (b) ? (a) : (b)) -#define CLAMP_TOP(a, b) MIN((a), (b)) -#define CLAMP_BOT(a, b) MAX((a), (b)) -#define CLAMP(v, min, max) CLAMP_BOT(CLAMP_TOP(v, max), min) - -#define ARRLENGHT(ARR) (sizeof((ARR)) / sizeof(*(ARR))) -/* USER CODE END EM */ - -/* Exported functions prototypes ---------------------------------------------*/ -void Error_Handler(void); - -/* USER CODE BEGIN EFP */ - -/* USER CODE END EFP */ - -/* Private defines -----------------------------------------------------------*/ -#define user_button_Pin GPIO_PIN_13 -#define user_button_GPIO_Port GPIOC -#define user_button_EXTI_IRQn EXTI15_10_IRQn -#define current2_Pin GPIO_PIN_0 -#define current2_GPIO_Port GPIOC -#define encoder_dx1_Pin GPIO_PIN_0 -#define encoder_dx1_GPIO_Port GPIOA -#define encoder_dx2_Pin GPIO_PIN_1 -#define encoder_dx2_GPIO_Port GPIOA -#define current1_Pin GPIO_PIN_3 -#define current1_GPIO_Port GPIOA -#define encoder_sx1_Pin GPIO_PIN_5 -#define encoder_sx1_GPIO_Port GPIOA -#define fault2_Pin GPIO_PIN_6 -#define fault2_GPIO_Port GPIOA -#define dir2_Pin GPIO_PIN_12 -#define dir2_GPIO_Port GPIOF -#define dir1_Pin GPIO_PIN_13 -#define dir1_GPIO_Port GPIOF -#define sleep2_Pin GPIO_PIN_14 -#define sleep2_GPIO_Port GPIOF -#define sleep1_Pin GPIO_PIN_15 -#define sleep1_GPIO_Port GPIOF -#define fault1_Pin GPIO_PIN_9 -#define fault1_GPIO_Port GPIOE -#define pwm2_Pin GPIO_PIN_14 -#define pwm2_GPIO_Port GPIOD -#define pwm1_Pin GPIO_PIN_15 -#define pwm1_GPIO_Port GPIOD -#define encoder_sx2_Pin GPIO_PIN_3 -#define encoder_sx2_GPIO_Port GPIOB -/* USER CODE BEGIN Private defines */ - -/* USER CODE END Private defines */ - -#ifdef __cplusplus -} -#endif - -#endif /* __MAIN_H */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/otto_controller/Core/Inc/tim.h b/otto_controller/Core/Inc/tim.h deleted file mode 100644 index b1d24e4..0000000 --- a/otto_controller/Core/Inc/tim.h +++ /dev/null @@ -1,60 +0,0 @@ -/** - ****************************************************************************** - * @file tim.h - * @brief This file contains all the function prototypes for - * the tim.c file - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2021 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __TIM_H__ -#define __TIM_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "main.h" - -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -extern TIM_HandleTypeDef htim2; -extern TIM_HandleTypeDef htim4; -extern TIM_HandleTypeDef htim5; -extern TIM_HandleTypeDef htim6; - -/* USER CODE BEGIN Private defines */ - -/* USER CODE END Private defines */ - -void MX_TIM2_Init(void); -void MX_TIM4_Init(void); -void MX_TIM5_Init(void); -void MX_TIM6_Init(void); - -void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); - -/* USER CODE BEGIN Prototypes */ - -/* USER CODE END Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif /* __TIM_H__ */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/otto_controller/Core/Inc/usart.h b/otto_controller/Core/Inc/usart.h deleted file mode 100644 index f4035c7..0000000 --- a/otto_controller/Core/Inc/usart.h +++ /dev/null @@ -1,52 +0,0 @@ -/** - ****************************************************************************** - * @file usart.h - * @brief This file contains all the function prototypes for - * the usart.c file - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2021 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USART_H__ -#define __USART_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "main.h" - -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -extern UART_HandleTypeDef huart6; - -/* USER CODE BEGIN Private defines */ - -/* USER CODE END Private defines */ - -void MX_USART6_UART_Init(void); - -/* USER CODE BEGIN Prototypes */ - -/* USER CODE END Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USART_H__ */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/otto_controller/Core/Src/control.c b/otto_controller/Core/Src/control.c deleted file mode 100644 index 52dd753..0000000 --- a/otto_controller/Core/Src/control.c +++ /dev/null @@ -1,105 +0,0 @@ -#include "control/encoder.h" -#include "control/odometry.h" -#include "control/motor_controller.h" -#include "control/pid.h" - -// NOTE(lb): this assumes `motors` initialized and with 2 elements -void motorcontroller_init(MotorController *motors) { - HAL_TIM_PWM_Start(motors[0].pwm_timer, motors[0].pwm_channel); - motors[0].max_dutycycle = motors[0].pwm_timer->Instance->ARR; - - HAL_TIM_PWM_Start(motors[1].pwm_timer, motors[1].pwm_channel); - motors[1].max_dutycycle = motors[1].pwm_timer->Instance->ARR; -} - -// TODO(lb): just pass the direction yourself and work with abs values -void motorcontroller_speed_set(MotorController *motor, int32_t duty_cycle) { - HAL_GPIO_WritePin(motor->dir_gpio_port, motor->dir_pin, - (GPIO_PinState) (duty_cycle >= 0 - ? MotorDirection_Forward - : MotorDirection_Backward)); - duty_cycle = CLAMP_TOP(ABS(duty_cycle), motor->max_dutycycle); - __HAL_TIM_SET_COMPARE(motor->pwm_timer, motor->pwm_channel, duty_cycle); - HAL_GPIO_WritePin(motor->sleep_gpio_port, motor->sleep_pin, GPIO_PIN_SET); -} - -void motorcontroller_brake(MotorController *motor) { - HAL_GPIO_WritePin(motor->sleep_gpio_port, motor->sleep_pin, GPIO_PIN_SET); - __HAL_TIM_SET_COMPARE(motor->pwm_timer, motor->pwm_channel, 0); -} - -void motorcontroller_coast(MotorController * motor) { - HAL_GPIO_WritePin(motor->sleep_gpio_port, motor->sleep_pin, GPIO_PIN_RESET); -} - -// NOTE(lb): this assumes `encoders` initialized and with 2 elements -void encoder_init(Encoder *encoders) { - HAL_TIM_Encoder_Start(encoders[0].timer, TIM_CHANNEL_ALL); - encoder_count_reset(&encoders[0]); - encoders[0].previous_millis = 0; - encoders[0].current_millis = HAL_GetTick(); - - HAL_TIM_Encoder_Start(encoders[1].timer, TIM_CHANNEL_ALL); - encoder_count_reset(&encoders[1]); - encoders[1].previous_millis = 0; - encoders[1].current_millis = HAL_GetTick(); -} - -void encoder_count_reset(Encoder *encoder) { - //set counter to half its maximum value - __HAL_TIM_SET_COUNTER(encoder->timer, (encoder->timer->Init.Period / 2)); -} - -int encoder_count_get(Encoder *encoder) { - int count = (int)__HAL_TIM_GET_COUNTER(encoder->timer) - - (encoder->timer->Init.Period / 2); - return count; -} - -void encoder_update(Encoder *encoder) { - encoder->previous_millis = encoder->current_millis; - encoder->current_millis = HAL_GetTick(); - encoder->ticks = encoder_count_get(encoder); - encoder_count_reset(encoder); -} - -float encoder_linear_velocity(Encoder *encoder) { - float meters = meters_from_ticks(encoder->ticks, - encoder->wheel_circumference, - encoder->ticks_per_revolution); - float deltatime = encoder->current_millis - encoder->previous_millis; - float linear_velocity = deltatime ? (meters / (deltatime / 1000.f)) : 0.f; - return linear_velocity; -} - -void odometry_setpoint_from_cmdvel(Odometry *odom, float linear_vel, - float angular_vel) { - odom->setpoint.left = linear_vel - (odom->baseline * angular_vel) / 2; - odom->setpoint.right = linear_vel + (odom->baseline * angular_vel) / 2; -} - -int32_t pid_update(Pid *pid, float measure) { - pid->error = pid->setpoint - measure; - - float output = pid->error * pid->ks.proportional; - - //integral term without windup - pid->error_sum += pid->error; - output += pid->error_sum * pid->ks.integral; - - output += (pid->error - pid->previous_error) * pid->ks.derivative; - pid->previous_error = pid->error; - - // anti windup - pid->error_sum -= pid->error; - int32_t integer_output = CLAMP(((int32_t)output), pid_min, pid_max); - return integer_output; -} - - -float meters_from_ticks(float encoder_ticks, - float wheel_circumference, - float ticks_per_revolution) { - float meters = (encoder_ticks * wheel_circumference) / ticks_per_revolution; - return meters; -} diff --git a/otto_controller/Core/Src/crc.c b/otto_controller/Core/Src/crc.c deleted file mode 100644 index 1817e8d..0000000 --- a/otto_controller/Core/Src/crc.c +++ /dev/null @@ -1,92 +0,0 @@ -/** - ****************************************************************************** - * @file crc.c - * @brief This file provides code for the configuration - * of the CRC instances. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2021 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "crc.h" - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -CRC_HandleTypeDef hcrc; - -/* CRC init function */ -void MX_CRC_Init(void) -{ - - /* USER CODE BEGIN CRC_Init 0 */ - - /* USER CODE END CRC_Init 0 */ - - /* USER CODE BEGIN CRC_Init 1 */ - - /* USER CODE END CRC_Init 1 */ - hcrc.Instance = CRC; - hcrc.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_ENABLE; - hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_ENABLE; - hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE; - hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE; - hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_BYTES; - if (HAL_CRC_Init(&hcrc) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN CRC_Init 2 */ - - /* USER CODE END CRC_Init 2 */ - -} - -void HAL_CRC_MspInit(CRC_HandleTypeDef* crcHandle) -{ - - if(crcHandle->Instance==CRC) - { - /* USER CODE BEGIN CRC_MspInit 0 */ - - /* USER CODE END CRC_MspInit 0 */ - /* CRC clock enable */ - __HAL_RCC_CRC_CLK_ENABLE(); - /* USER CODE BEGIN CRC_MspInit 1 */ - - /* USER CODE END CRC_MspInit 1 */ - } -} - -void HAL_CRC_MspDeInit(CRC_HandleTypeDef* crcHandle) -{ - - if(crcHandle->Instance==CRC) - { - /* USER CODE BEGIN CRC_MspDeInit 0 */ - - /* USER CODE END CRC_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_CRC_CLK_DISABLE(); - /* USER CODE BEGIN CRC_MspDeInit 1 */ - - /* USER CODE END CRC_MspDeInit 1 */ - } -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/otto_controller/Core/Src/dma.c b/otto_controller/Core/Src/dma.c deleted file mode 100644 index 88aa8a7..0000000 --- a/otto_controller/Core/Src/dma.c +++ /dev/null @@ -1,50 +0,0 @@ -/** - ****************************************************************************** - * @file dma.c - * @brief This file provides code for the configuration - * of all the requested memory to memory DMA transfers. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2021 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "dma.h" - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/*----------------------------------------------------------------------------*/ -/* Configure DMA */ -/*----------------------------------------------------------------------------*/ - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ - -/** - * Enable DMA controller clock - */ -void MX_DMA_Init(void) -{ - - /* DMA controller clock enable */ - __HAL_RCC_DMA2_CLK_ENABLE(); - -} - -/* USER CODE BEGIN 2 */ - -/* USER CODE END 2 */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/otto_controller/Core/Src/gpio.c b/otto_controller/Core/Src/gpio.c deleted file mode 100644 index 4a8aff8..0000000 --- a/otto_controller/Core/Src/gpio.c +++ /dev/null @@ -1,114 +0,0 @@ -/** - ****************************************************************************** - * @file gpio.c - * @brief This file provides code for the configuration - * of all used GPIO pins. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2021 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "gpio.h" - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/*----------------------------------------------------------------------------*/ -/* Configure GPIO */ -/*----------------------------------------------------------------------------*/ -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ - -/** Configure pins as - * Analog - * Input - * Output - * EVENT_OUT - * EXTI -*/ -void MX_GPIO_Init(void) -{ - - GPIO_InitTypeDef GPIO_InitStruct = {0}; - - /* GPIO Ports Clock Enable */ - __HAL_RCC_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOF_CLK_ENABLE(); - __HAL_RCC_GPIOE_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOF, dir2_Pin|dir1_Pin, GPIO_PIN_RESET); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOF, sleep2_Pin|sleep1_Pin, GPIO_PIN_SET); - - /*Configure GPIO pin : PtPin */ - GPIO_InitStruct.Pin = user_button_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(user_button_GPIO_Port, &GPIO_InitStruct); - - /*Configure GPIO pin : PtPin */ - GPIO_InitStruct.Pin = current2_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(current2_GPIO_Port, &GPIO_InitStruct); - - /*Configure GPIO pin : PtPin */ - GPIO_InitStruct.Pin = current1_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(current1_GPIO_Port, &GPIO_InitStruct); - - /*Configure GPIO pin : PtPin */ - GPIO_InitStruct.Pin = fault2_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; - GPIO_InitStruct.Pull = GPIO_PULLUP; - HAL_GPIO_Init(fault2_GPIO_Port, &GPIO_InitStruct); - - /*Configure GPIO pins : PFPin PFPin */ - GPIO_InitStruct.Pin = dir2_Pin|dir1_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); - - /*Configure GPIO pins : PFPin PFPin */ - GPIO_InitStruct.Pin = sleep2_Pin|sleep1_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_PULLUP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); - - /*Configure GPIO pin : PtPin */ - GPIO_InitStruct.Pin = fault1_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; - GPIO_InitStruct.Pull = GPIO_PULLUP; - HAL_GPIO_Init(fault1_GPIO_Port, &GPIO_InitStruct); - - /* EXTI interrupt init*/ - HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); - -} - -/* USER CODE BEGIN 2 */ - -/* USER CODE END 2 */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/otto_controller/Core/Src/main.c b/otto_controller/Core/Src/main.c deleted file mode 100644 index 27bc556..0000000 --- a/otto_controller/Core/Src/main.c +++ /dev/null @@ -1,450 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : main.c - * @brief : Main program body - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2019 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ -/* USER CODE END Header */ -/* Includes ------------------------------------------------------------------*/ -#include "main.h" -#include "crc.h" -#include "dma.h" -#include "tim.h" -#include "usart.h" -#include "gpio.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -#include // memcpy - -#include "control/encoder.h" -#include "control/odometry.h" -#include "control/motor_controller.h" -#include "control/pid.h" - -#include "communication/otto_messages.h" - -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN PTD */ - -/* USER CODE END PTD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ - -static union { - Encoder values[2]; - struct { - Encoder right; - Encoder left; - }; -} encoders = { - .right = { - .timer = &htim5, - }, - .left = { - .timer = &htim2, - }, -}; - -Odometry odom = {0}; - -Pid pid_left = {0}; -Pid pid_right = {0}; -Pid pid_cross = {0}; - -int32_t pid_max = 0; -int32_t pid_min = 0; - -static union { - MotorController values[2]; - struct { - MotorController right; - MotorController left; - }; -} motors = { - .right = { - .sleep_gpio_port = sleep1_GPIO_Port, - .sleep_pin = sleep1_Pin, - .dir_gpio_port = dir1_GPIO_Port, - .dir_pin = dir1_Pin, - .pwm_timer = &htim4, - .pwm_channel = TIM_CHANNEL_4, - }, - .left = { - .sleep_gpio_port = sleep2_GPIO_Port, - .sleep_pin = sleep2_Pin, - .dir_gpio_port = dir2_GPIO_Port, - .dir_pin = dir2_Pin, - .pwm_timer = &htim4, - .pwm_channel = TIM_CHANNEL_3, - }, -}; - -//Communication -ConfigMessage config_msg; -VelocityMessage vel_msg; -StatusMessage status_msg; - -volatile int32_t left_ticks; -volatile int32_t right_ticks; -volatile float previous_tx_millis; -volatile uint8_t tx_done_flag = 1; -volatile MessageStatusCode otto_status = MessageStatusCode_Waiting4Config; - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_NVIC_Init(void); -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ -/* USER CODE END 0 */ - -/** - * @brief The application entry point. - * @retval int - */ -int main(void) { - /* USER CODE BEGIN 1 */ - /* USER CODE END 1 */ - - /* MCU Configuration--------------------------------------------------------*/ - - /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ - HAL_Init(); - - /* USER CODE BEGIN Init */ - - /* USER CODE END Init */ - - /* Configure the system clock */ - SystemClock_Config(); - - /* USER CODE BEGIN SysInit */ - - /* USER CODE END SysInit */ - - /* Initialize all configured peripherals */ - MX_GPIO_Init(); - MX_DMA_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - MX_TIM5_Init(); - MX_USART6_UART_Init(); - MX_TIM6_Init(); - MX_CRC_Init(); - - /* Initialize interrupts */ - MX_NVIC_Init(); - /* USER CODE BEGIN 2 */ - - // NOTE(lb): timeout is in milliseconds - // wait for config - HAL_StatusTypeDef config_status = - HAL_UART_Receive(&huart6, (uint8_t*)&config_msg, - sizeof config_msg, 60 * 1000); // 60sec - uint32_t config_crc = - HAL_CRC_Calculate(&hcrc, (uint32_t*)&config_msg, - (sizeof config_msg) - (sizeof config_msg.crc)); - if (config_crc != config_msg.crc || config_status != HAL_OK) { - status_msg.status = MessageStatusCode_Error_Config; - status_msg.crc = - HAL_CRC_Calculate(&hcrc, (uint32_t*)&status_msg, sizeof(status_msg) - 4); - for (;;) { - HAL_UART_Transmit(&huart6, (uint8_t*)&status_msg, - sizeof(status_msg), 1000); // 1sec - } - } - - // ====================================================================== - // NOTE(lb): all of this should be transformed in compile time constants - odom.baseline = config_msg.baseline; - encoders.left.wheel_circumference = config_msg.left_wheel_circumference; - encoders.left.ticks_per_revolution = config_msg.ticks_per_revolution; - encoders.right.wheel_circumference = config_msg.right_wheel_circumference; - encoders.right.ticks_per_revolution = config_msg.ticks_per_revolution; - - // NOTE(lb): maybe even this but i'm not sure. And at this point - // i'm not even sure that there is a need for a config message. - memcpy(&pid_left.ks, &config_msg.pid_ks_left, sizeof pid_left.ks); - memcpy(&pid_right.ks, &config_msg.pid_ks_right, sizeof pid_right.ks); - memcpy(&pid_cross.ks, &config_msg.pid_ks_cross, sizeof pid_cross.ks); - // ====================================================================== - - encoder_init(encoders.values); - motorcontroller_init(motors.values); - - //right and left motors have the same parameters - pid_max = (int32_t)htim4.Instance->ARR; - pid_min = -pid_max; - - motorcontroller_brake(&motors.left); - motorcontroller_brake(&motors.right); - - //Enables TIM6 interrupt (used for PID control) - HAL_TIM_Base_Start_IT(&htim6); - - //Enables UART RX interrupt - HAL_UART_Receive_DMA(&huart6, (uint8_t*) &vel_msg, 12); - - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) { - /* USER CODE END WHILE */ - - /* USER CODE BEGIN 3 */ - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) { - RCC_OscInitTypeDef RCC_OscInitStruct = { 0 }; - RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 }; - RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 }; - - /** Configure the main internal regulator output voltage - */ - __HAL_RCC_PWR_CLK_ENABLE(); - __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); - /** Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; - RCC_OscInitStruct.PLL.PLLM = 8; - RCC_OscInitStruct.PLL.PLLN = 216; - RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; - RCC_OscInitStruct.PLL.PLLQ = 2; - RCC_OscInitStruct.PLL.PLLR = 2; - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { - Error_Handler(); - } - /** Activate the Over-Drive mode - */ - if (HAL_PWREx_EnableOverDrive() != HAL_OK) { - Error_Handler(); - } - /** Initializes the CPU, AHB and APB buses clocks - */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK - | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_7) != HAL_OK) { - Error_Handler(); - } - PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART6; - PeriphClkInitStruct.Usart6ClockSelection = RCC_USART6CLKSOURCE_PCLK2; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { - Error_Handler(); - } -} - -/** - * @brief NVIC Configuration. - * @retval None - */ -static void MX_NVIC_Init(void) { - /* TIM6_DAC_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 1, 2); - HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn); - /* USART6_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(USART6_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(USART6_IRQn); - /* DMA2_Stream6_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn); - /* DMA2_Stream1_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn); -} - -/* USER CODE BEGIN 4 */ -void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { - - //TIMER 100Hz PID control - - //accumulate ticks for transmission - left_ticks += encoder_count_get(&encoders.left); - right_ticks += encoder_count_get(&encoders.right); - - //PID control - encoder_update(&encoders.left); - float left_velocity = encoder_linear_velocity(&encoders.left); - int left_dutycycle = pid_update(&pid_left, left_velocity); - - encoder_update(&encoders.right); - float right_velocity = encoder_linear_velocity(&encoders.right); - int right_dutycycle = pid_update(&pid_right, right_velocity); - - float difference = left_velocity - right_velocity; - int cross_dutycycle = pid_update(&pid_cross, difference); - - left_dutycycle += cross_dutycycle; - right_dutycycle -= cross_dutycycle; - - motorcontroller_speed_set(&motors.left, left_dutycycle); - motorcontroller_speed_set(&motors.right, right_dutycycle); -} - -uint8_t porcoddio = 0; // NOTE(lb): LOL -void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle) { - /* - * Manage received message - */ - - uint32_t crc_rx = HAL_CRC_Calculate(&hcrc, (uint32_t*) &vel_msg, 8); - - float linear_velocity; - float angular_velocity; - - if (crc_rx == vel_msg.crc) { - linear_velocity = vel_msg.linear_velocity; - angular_velocity = vel_msg.angular_velocity; - otto_status = MessageStatusCode_Running; - } else { - linear_velocity = 0; - angular_velocity = 0; - otto_status = MessageStatusCode_Error_Velocity; - } - - odometry_setpoint_from_cmdvel(&odom, linear_velocity, angular_velocity); - float left_setpoint = odom.velocity.left; - float right_setpoint = odom.velocity.right; - - pid_left.setpoint = left_setpoint; - pid_right.setpoint = right_setpoint; - - float cross_setpoint = left_setpoint - right_setpoint; - pid_cross.setpoint = cross_setpoint; - - /* - * Manage new transmission - */ - - int32_t left_ticks_tx = left_ticks + encoder_count_get(&encoders.left); - int32_t right_ticks_tx = right_ticks + encoder_count_get(&encoders.right); - - status_msg.left_ticks = left_ticks_tx; - status_msg.right_ticks = right_ticks_tx; - - left_ticks = 0; - right_ticks = 0; - - float current_tx_millis = HAL_GetTick(); - status_msg.delta_millis = current_tx_millis - previous_tx_millis; - previous_tx_millis = current_tx_millis; - - status_msg.status = otto_status; - - uint32_t crc_tx = HAL_CRC_Calculate(&hcrc, (uint32_t*) &status_msg, 12); - - status_msg.crc = crc_tx; - - if (tx_done_flag) { - HAL_UART_Transmit_DMA(&huart6, (uint8_t*) &status_msg, sizeof(status_msg)); - tx_done_flag = 0; - } - - HAL_UART_Receive_DMA(&huart6, (uint8_t*) &vel_msg, sizeof(vel_msg)); -} - - -void HAL_UART_TxCpltCallback(UART_HandleTypeDef *UartHandle) { - tx_done_flag = 1; -} - -uint8_t uart_err = 0; -void HAL_UART_ErrorCallback(UART_HandleTypeDef *UartHandle) { - uart_err += 1; -} - -void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { - //Blue user button on the NUCLEO board - switch (GPIO_Pin) { - case user_button_Pin: { - //TODO ci può servire il bottone blu? - } break; - case fault1_Pin: - case fault2_Pin: { - motorcontroller_brake(&motors.left); - motorcontroller_brake(&motors.right); - //stop TIM6 interrupt (used for PID control) - HAL_TIM_Base_Stop_IT(&htim6); - otto_status = MessageStatusCode_Fault_HBridge; - } break; - } -} -/* USER CODE END 4 */ - -/** - * @brief This function is executed in case of error occurrence. - * @retval None - */ -void Error_Handler(void) { - /* USER CODE BEGIN Error_Handler_Debug */ - /* User can add his own implementation to report the HAL error return state */ - - /* USER CODE END Error_Handler_Debug */ -} - -#ifdef USE_FULL_ASSERT -/** - * @brief Reports the name of the source file and the source line number - * where the assert_param error has occurred. - * @param file: pointer to the source file name - * @param line: assert_param error line source number - * @retval None - */ -void assert_failed(uint8_t *file, uint32_t line) -{ - /* USER CODE BEGIN 6 */ - /* User can add his own implementation to report the file name and line number, - tex: printf("Wrong parameduty_cycleters value: file %s on line %d\r\n", file, line) */ - /* USER CODE END 6 */ -} -#endif /* USE_FULL_ASSERT */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/otto_controller/Core/Src/stm32f7xx_hal_msp.c b/otto_controller/Core/Src/stm32f7xx_hal_msp.c deleted file mode 100644 index 6242137..0000000 --- a/otto_controller/Core/Src/stm32f7xx_hal_msp.c +++ /dev/null @@ -1,86 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * File Name : stm32f7xx_hal_msp.c - * Description : This file provides code for the MSP Initialization - * and de-Initialization codes. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2019 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Includes ------------------------------------------------------------------*/ -#include "main.h" -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN Define */ - -/* USER CODE END Define */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN Macro */ - -/* USER CODE END Macro */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* External functions --------------------------------------------------------*/ -/* USER CODE BEGIN ExternalFunctions */ - -/* USER CODE END ExternalFunctions */ - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ -/** - * Initializes the Global MSP. - */ -void HAL_MspInit(void) -{ - /* USER CODE BEGIN MspInit 0 */ - - /* USER CODE END MspInit 0 */ - - __HAL_RCC_PWR_CLK_ENABLE(); - __HAL_RCC_SYSCFG_CLK_ENABLE(); - - HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_2); - - /* System interrupt init*/ - - /* USER CODE BEGIN MspInit 1 */ - - /* USER CODE END MspInit 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/otto_controller/Core/Src/tim.c b/otto_controller/Core/Src/tim.c deleted file mode 100644 index c7051c1..0000000 --- a/otto_controller/Core/Src/tim.c +++ /dev/null @@ -1,406 +0,0 @@ -/** - ****************************************************************************** - * @file tim.c - * @brief This file provides code for the configuration - * of the TIM instances. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2021 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "tim.h" - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim4; -TIM_HandleTypeDef htim5; -TIM_HandleTypeDef htim6; - -/* TIM2 init function */ -void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_Encoder_InitTypeDef sConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 4294967295; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - sConfig.EncoderMode = TIM_ENCODERMODE_TI12; - sConfig.IC1Polarity = TIM_ICPOLARITY_RISING; - sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI; - sConfig.IC1Prescaler = TIM_ICPSC_DIV1; - sConfig.IC1Filter = 0; - sConfig.IC2Polarity = TIM_ICPOLARITY_RISING; - sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI; - sConfig.IC2Prescaler = TIM_ICPSC_DIV1; - sConfig.IC2Filter = 0; - if (HAL_TIM_Encoder_Init(&htim2, &sConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - -} -/* TIM4 init function */ -void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 5399; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 0; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} -/* TIM5 init function */ -void MX_TIM5_Init(void) -{ - - /* USER CODE BEGIN TIM5_Init 0 */ - - /* USER CODE END TIM5_Init 0 */ - - TIM_Encoder_InitTypeDef sConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM5_Init 1 */ - - /* USER CODE END TIM5_Init 1 */ - htim5.Instance = TIM5; - htim5.Init.Prescaler = 0; - htim5.Init.CounterMode = TIM_COUNTERMODE_UP; - htim5.Init.Period = 4294967295; - htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim5.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - sConfig.EncoderMode = TIM_ENCODERMODE_TI12; - sConfig.IC1Polarity = TIM_ICPOLARITY_RISING; - sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI; - sConfig.IC1Prescaler = TIM_ICPSC_DIV1; - sConfig.IC1Filter = 0; - sConfig.IC2Polarity = TIM_ICPOLARITY_RISING; - sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI; - sConfig.IC2Prescaler = TIM_ICPSC_DIV1; - sConfig.IC2Filter = 0; - if (HAL_TIM_Encoder_Init(&htim5, &sConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM5_Init 2 */ - - /* USER CODE END TIM5_Init 2 */ - -} -/* TIM6 init function */ -void MX_TIM6_Init(void) -{ - - /* USER CODE BEGIN TIM6_Init 0 */ - - /* USER CODE END TIM6_Init 0 */ - - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM6_Init 1 */ - - /* USER CODE END TIM6_Init 1 */ - htim6.Instance = TIM6; - htim6.Init.Prescaler = 9999; - htim6.Init.CounterMode = TIM_COUNTERMODE_UP; - htim6.Init.Period = 107; - htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim6) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM6_Init 2 */ - - /* USER CODE END TIM6_Init 2 */ - -} - -void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* tim_encoderHandle) -{ - - GPIO_InitTypeDef GPIO_InitStruct = {0}; - if(tim_encoderHandle->Instance==TIM2) - { - /* USER CODE BEGIN TIM2_MspInit 0 */ - - /* USER CODE END TIM2_MspInit 0 */ - /* TIM2 clock enable */ - __HAL_RCC_TIM2_CLK_ENABLE(); - - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - /**TIM2 GPIO Configuration - PA5 ------> TIM2_CH1 - PB3 ------> TIM2_CH2 - */ - GPIO_InitStruct.Pin = encoder_sx1_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStruct.Alternate = GPIO_AF1_TIM2; - HAL_GPIO_Init(encoder_sx1_GPIO_Port, &GPIO_InitStruct); - - GPIO_InitStruct.Pin = encoder_sx2_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStruct.Alternate = GPIO_AF1_TIM2; - HAL_GPIO_Init(encoder_sx2_GPIO_Port, &GPIO_InitStruct); - - /* USER CODE BEGIN TIM2_MspInit 1 */ - - /* USER CODE END TIM2_MspInit 1 */ - } - else if(tim_encoderHandle->Instance==TIM5) - { - /* USER CODE BEGIN TIM5_MspInit 0 */ - - /* USER CODE END TIM5_MspInit 0 */ - /* TIM5 clock enable */ - __HAL_RCC_TIM5_CLK_ENABLE(); - - __HAL_RCC_GPIOA_CLK_ENABLE(); - /**TIM5 GPIO Configuration - PA0/WKUP ------> TIM5_CH1 - PA1 ------> TIM5_CH2 - */ - GPIO_InitStruct.Pin = encoder_dx1_Pin|encoder_dx2_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStruct.Alternate = GPIO_AF2_TIM5; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /* USER CODE BEGIN TIM5_MspInit 1 */ - - /* USER CODE END TIM5_MspInit 1 */ - } -} - -void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) -{ - - if(tim_baseHandle->Instance==TIM4) - { - /* USER CODE BEGIN TIM4_MspInit 0 */ - - /* USER CODE END TIM4_MspInit 0 */ - /* TIM4 clock enable */ - __HAL_RCC_TIM4_CLK_ENABLE(); - /* USER CODE BEGIN TIM4_MspInit 1 */ - - /* USER CODE END TIM4_MspInit 1 */ - } - else if(tim_baseHandle->Instance==TIM6) - { - /* USER CODE BEGIN TIM6_MspInit 0 */ - - /* USER CODE END TIM6_MspInit 0 */ - /* TIM6 clock enable */ - __HAL_RCC_TIM6_CLK_ENABLE(); - /* USER CODE BEGIN TIM6_MspInit 1 */ - - /* USER CODE END TIM6_MspInit 1 */ - } -} -void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) -{ - - GPIO_InitTypeDef GPIO_InitStruct = {0}; - if(timHandle->Instance==TIM4) - { - /* USER CODE BEGIN TIM4_MspPostInit 0 */ - - /* USER CODE END TIM4_MspPostInit 0 */ - - __HAL_RCC_GPIOD_CLK_ENABLE(); - /**TIM4 GPIO Configuration - PD14 ------> TIM4_CH3 - PD15 ------> TIM4_CH4 - */ - GPIO_InitStruct.Pin = pwm2_Pin|pwm1_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStruct.Alternate = GPIO_AF2_TIM4; - HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - - /* USER CODE BEGIN TIM4_MspPostInit 1 */ - - /* USER CODE END TIM4_MspPostInit 1 */ - } - -} - -void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef* tim_encoderHandle) -{ - - if(tim_encoderHandle->Instance==TIM2) - { - /* USER CODE BEGIN TIM2_MspDeInit 0 */ - - /* USER CODE END TIM2_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_TIM2_CLK_DISABLE(); - - /**TIM2 GPIO Configuration - PA5 ------> TIM2_CH1 - PB3 ------> TIM2_CH2 - */ - HAL_GPIO_DeInit(encoder_sx1_GPIO_Port, encoder_sx1_Pin); - - HAL_GPIO_DeInit(encoder_sx2_GPIO_Port, encoder_sx2_Pin); - - /* USER CODE BEGIN TIM2_MspDeInit 1 */ - - /* USER CODE END TIM2_MspDeInit 1 */ - } - else if(tim_encoderHandle->Instance==TIM5) - { - /* USER CODE BEGIN TIM5_MspDeInit 0 */ - - /* USER CODE END TIM5_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_TIM5_CLK_DISABLE(); - - /**TIM5 GPIO Configuration - PA0/WKUP ------> TIM5_CH1 - PA1 ------> TIM5_CH2 - */ - HAL_GPIO_DeInit(GPIOA, encoder_dx1_Pin|encoder_dx2_Pin); - - /* USER CODE BEGIN TIM5_MspDeInit 1 */ - - /* USER CODE END TIM5_MspDeInit 1 */ - } -} - -void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) -{ - - if(tim_baseHandle->Instance==TIM4) - { - /* USER CODE BEGIN TIM4_MspDeInit 0 */ - - /* USER CODE END TIM4_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_TIM4_CLK_DISABLE(); - /* USER CODE BEGIN TIM4_MspDeInit 1 */ - - /* USER CODE END TIM4_MspDeInit 1 */ - } - else if(tim_baseHandle->Instance==TIM6) - { - /* USER CODE BEGIN TIM6_MspDeInit 0 */ - - /* USER CODE END TIM6_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_TIM6_CLK_DISABLE(); - - /* TIM6 interrupt Deinit */ - HAL_NVIC_DisableIRQ(TIM6_DAC_IRQn); - /* USER CODE BEGIN TIM6_MspDeInit 1 */ - - /* USER CODE END TIM6_MspDeInit 1 */ - } -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/otto_controller/Core/Src/usart.c b/otto_controller/Core/Src/usart.c deleted file mode 100644 index ea5bd0b..0000000 --- a/otto_controller/Core/Src/usart.c +++ /dev/null @@ -1,164 +0,0 @@ -/** - ****************************************************************************** - * @file usart.c - * @brief This file provides code for the configuration - * of the USART instances. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2021 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "usart.h" - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -UART_HandleTypeDef huart6; -DMA_HandleTypeDef hdma_usart6_tx; -DMA_HandleTypeDef hdma_usart6_rx; - -/* USART6 init function */ - -void MX_USART6_UART_Init(void) -{ - - /* USER CODE BEGIN USART6_Init 0 */ - - /* USER CODE END USART6_Init 0 */ - - /* USER CODE BEGIN USART6_Init 1 */ - - /* USER CODE END USART6_Init 1 */ - huart6.Instance = USART6; - huart6.Init.BaudRate = 115200; - huart6.Init.WordLength = UART_WORDLENGTH_8B; - huart6.Init.StopBits = UART_STOPBITS_1; - huart6.Init.Parity = UART_PARITY_NONE; - huart6.Init.Mode = UART_MODE_TX_RX; - huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE; - huart6.Init.OverSampling = UART_OVERSAMPLING_16; - huart6.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - huart6.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_DMADISABLEONERROR_INIT; - huart6.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR; - if (HAL_UART_Init(&huart6) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN USART6_Init 2 */ - - /* USER CODE END USART6_Init 2 */ - -} - -void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) -{ - - GPIO_InitTypeDef GPIO_InitStruct = {0}; - if(uartHandle->Instance==USART6) - { - /* USER CODE BEGIN USART6_MspInit 0 */ - - /* USER CODE END USART6_MspInit 0 */ - /* USART6 clock enable */ - __HAL_RCC_USART6_CLK_ENABLE(); - - __HAL_RCC_GPIOC_CLK_ENABLE(); - /**USART6 GPIO Configuration - PC6 ------> USART6_TX - PC7 ------> USART6_RX - */ - GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStruct.Alternate = GPIO_AF8_USART6; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - - /* USART6 DMA Init */ - /* USART6_TX Init */ - hdma_usart6_tx.Instance = DMA2_Stream6; - hdma_usart6_tx.Init.Channel = DMA_CHANNEL_5; - hdma_usart6_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; - hdma_usart6_tx.Init.PeriphInc = DMA_PINC_DISABLE; - hdma_usart6_tx.Init.MemInc = DMA_MINC_ENABLE; - hdma_usart6_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - hdma_usart6_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - hdma_usart6_tx.Init.Mode = DMA_NORMAL; - hdma_usart6_tx.Init.Priority = DMA_PRIORITY_LOW; - hdma_usart6_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - if (HAL_DMA_Init(&hdma_usart6_tx) != HAL_OK) - { - Error_Handler(); - } - - __HAL_LINKDMA(uartHandle,hdmatx,hdma_usart6_tx); - - /* USART6_RX Init */ - hdma_usart6_rx.Instance = DMA2_Stream1; - hdma_usart6_rx.Init.Channel = DMA_CHANNEL_5; - hdma_usart6_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; - hdma_usart6_rx.Init.PeriphInc = DMA_PINC_DISABLE; - hdma_usart6_rx.Init.MemInc = DMA_MINC_ENABLE; - hdma_usart6_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - hdma_usart6_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - hdma_usart6_rx.Init.Mode = DMA_NORMAL; - hdma_usart6_rx.Init.Priority = DMA_PRIORITY_LOW; - hdma_usart6_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - if (HAL_DMA_Init(&hdma_usart6_rx) != HAL_OK) - { - Error_Handler(); - } - - __HAL_LINKDMA(uartHandle,hdmarx,hdma_usart6_rx); - - /* USER CODE BEGIN USART6_MspInit 1 */ - - /* USER CODE END USART6_MspInit 1 */ - } -} - -void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) -{ - - if(uartHandle->Instance==USART6) - { - /* USER CODE BEGIN USART6_MspDeInit 0 */ - - /* USER CODE END USART6_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_USART6_CLK_DISABLE(); - - /**USART6 GPIO Configuration - PC6 ------> USART6_TX - PC7 ------> USART6_RX - */ - HAL_GPIO_DeInit(GPIOC, GPIO_PIN_6|GPIO_PIN_7); - - /* USART6 DMA DeInit */ - HAL_DMA_DeInit(uartHandle->hdmatx); - HAL_DMA_DeInit(uartHandle->hdmarx); - - /* USART6 interrupt Deinit */ - HAL_NVIC_DisableIRQ(USART6_IRQn); - /* USER CODE BEGIN USART6_MspDeInit 1 */ - - /* USER CODE END USART6_MspDeInit 1 */ - } -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/otto_controller/otto_controller.ioc b/otto_controller/otto_controller.ioc deleted file mode 100644 index 07e97bc..0000000 --- a/otto_controller/otto_controller.ioc +++ /dev/null @@ -1,312 +0,0 @@ -#MicroXplorer Configuration settings - do not modify -CORTEX_M7.ART_ACCLERATOR_ENABLE=0 -CORTEX_M7.CPU_DCache=Disabled -CORTEX_M7.CPU_ICache=Disabled -CORTEX_M7.IPParameters=CPU_ICache,CPU_DCache,PREFETCH_ENABLE,ART_ACCLERATOR_ENABLE -CORTEX_M7.PREFETCH_ENABLE=0 -Dma.Request0=USART6_TX -Dma.Request1=USART6_RX -Dma.RequestsNb=2 -Dma.USART6_RX.1.Direction=DMA_PERIPH_TO_MEMORY -Dma.USART6_RX.1.FIFOMode=DMA_FIFOMODE_DISABLE -Dma.USART6_RX.1.Instance=DMA2_Stream1 -Dma.USART6_RX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE -Dma.USART6_RX.1.MemInc=DMA_MINC_ENABLE -Dma.USART6_RX.1.Mode=DMA_NORMAL -Dma.USART6_RX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE -Dma.USART6_RX.1.PeriphInc=DMA_PINC_DISABLE -Dma.USART6_RX.1.Priority=DMA_PRIORITY_LOW -Dma.USART6_RX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode -Dma.USART6_TX.0.Direction=DMA_MEMORY_TO_PERIPH -Dma.USART6_TX.0.FIFOMode=DMA_FIFOMODE_DISABLE -Dma.USART6_TX.0.Instance=DMA2_Stream6 -Dma.USART6_TX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE -Dma.USART6_TX.0.MemInc=DMA_MINC_ENABLE -Dma.USART6_TX.0.Mode=DMA_NORMAL -Dma.USART6_TX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE -Dma.USART6_TX.0.PeriphInc=DMA_PINC_DISABLE -Dma.USART6_TX.0.Priority=DMA_PRIORITY_LOW -Dma.USART6_TX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode -File.Version=6 -GPIO.groupedBy=Group By Peripherals -KeepUserPlacement=false -Mcu.Family=STM32F7 -Mcu.IP0=CORTEX_M7 -Mcu.IP1=CRC -Mcu.IP10=USART6 -Mcu.IP2=DMA -Mcu.IP3=NVIC -Mcu.IP4=RCC -Mcu.IP5=SYS -Mcu.IP6=TIM2 -Mcu.IP7=TIM4 -Mcu.IP8=TIM5 -Mcu.IP9=TIM6 -Mcu.IPNb=11 -Mcu.Name=STM32F767ZITx -Mcu.Package=LQFP144 -Mcu.Pin0=PC13 -Mcu.Pin1=PC0 -Mcu.Pin10=PF15 -Mcu.Pin11=PE9 -Mcu.Pin12=PD14 -Mcu.Pin13=PD15 -Mcu.Pin14=PC6 -Mcu.Pin15=PC7 -Mcu.Pin16=PA13 -Mcu.Pin17=PA14 -Mcu.Pin18=PB3 -Mcu.Pin19=VP_CRC_VS_CRC -Mcu.Pin2=PA0/WKUP -Mcu.Pin20=VP_SYS_VS_Systick -Mcu.Pin21=VP_TIM4_VS_ClockSourceINT -Mcu.Pin22=VP_TIM6_VS_ClockSourceINT -Mcu.Pin3=PA1 -Mcu.Pin4=PA3 -Mcu.Pin5=PA5 -Mcu.Pin6=PA6 -Mcu.Pin7=PF12 -Mcu.Pin8=PF13 -Mcu.Pin9=PF14 -Mcu.PinsNb=23 -Mcu.ThirdPartyNb=0 -Mcu.UserConstants= -Mcu.UserName=STM32F767ZITx -MxCube.Version=6.3.0 -MxDb.Version=DB.6.0.30 -NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.DMA2_Stream1_IRQn=true\:0\:0\:false\:true\:true\:4\:false\:true -NVIC.DMA2_Stream6_IRQn=true\:0\:0\:false\:true\:true\:3\:false\:true -NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.EXTI15_10_IRQn=true\:0\:0\:false\:false\:true\:true\:true -NVIC.ForceEnableDMAVector=true -NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.PriorityGroup=NVIC_PRIORITYGROUP_2 -NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true -NVIC.TIM6_DAC_IRQn=true\:1\:2\:true\:true\:true\:1\:true\:true -NVIC.USART6_IRQn=true\:0\:0\:true\:true\:true\:2\:true\:true -NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false -PA0/WKUP.GPIOParameters=GPIO_Label -PA0/WKUP.GPIO_Label=encoder_dx1 -PA0/WKUP.Locked=true -PA0/WKUP.Signal=S_TIM5_CH1 -PA1.GPIOParameters=GPIO_Label -PA1.GPIO_Label=encoder_dx2 -PA1.Locked=true -PA1.Signal=S_TIM5_CH2 -PA13.Mode=Serial_Wire -PA13.Signal=SYS_JTMS-SWDIO -PA14.Mode=Serial_Wire -PA14.Signal=SYS_JTCK-SWCLK -PA3.GPIOParameters=GPIO_Label -PA3.GPIO_Label=current1 -PA3.Locked=true -PA3.Signal=GPIO_Analog -PA5.GPIOParameters=GPIO_Label -PA5.GPIO_Label=encoder_sx1 -PA5.Locked=true -PA5.Signal=S_TIM2_CH1_ETR -PA6.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI -PA6.GPIO_Label=fault2 -PA6.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING -PA6.GPIO_PuPd=GPIO_PULLUP -PA6.Locked=true -PA6.Signal=GPXTI6 -PB3.GPIOParameters=GPIO_Label -PB3.GPIO_Label=encoder_sx2 -PB3.Locked=true -PB3.Signal=S_TIM2_CH2 -PC0.GPIOParameters=GPIO_Label -PC0.GPIO_Label=current2 -PC0.Locked=true -PC0.Signal=GPIO_Analog -PC13.GPIOParameters=GPIO_Label -PC13.GPIO_Label=user_button -PC13.Locked=true -PC13.Signal=GPXTI13 -PC6.GPIOParameters=GPIO_Speed -PC6.GPIO_Speed=GPIO_SPEED_FREQ_LOW -PC6.Mode=Asynchronous -PC6.Signal=USART6_TX -PC7.GPIOParameters=GPIO_Speed -PC7.GPIO_Speed=GPIO_SPEED_FREQ_LOW -PC7.Mode=Asynchronous -PC7.Signal=USART6_RX -PD14.GPIOParameters=GPIO_Label -PD14.GPIO_Label=pwm2 -PD14.Locked=true -PD14.Signal=S_TIM4_CH3 -PD15.GPIOParameters=GPIO_Label -PD15.GPIO_Label=pwm1 -PD15.Locked=true -PD15.Signal=S_TIM4_CH4 -PE9.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI -PE9.GPIO_Label=fault1 -PE9.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING -PE9.GPIO_PuPd=GPIO_PULLUP -PE9.Locked=true -PE9.Signal=GPXTI9 -PF12.GPIOParameters=GPIO_Label -PF12.GPIO_Label=dir2 -PF12.Locked=true -PF12.Signal=GPIO_Output -PF13.GPIOParameters=GPIO_Label -PF13.GPIO_Label=dir1 -PF13.Locked=true -PF13.Signal=GPIO_Output -PF14.GPIOParameters=PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP -PF14.GPIO_Label=sleep2 -PF14.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_PP -PF14.GPIO_PuPd=GPIO_PULLUP -PF14.Locked=true -PF14.PinState=GPIO_PIN_SET -PF14.Signal=GPIO_Output -PF15.GPIOParameters=PinState,GPIO_PuPd,GPIO_Label -PF15.GPIO_Label=sleep1 -PF15.GPIO_PuPd=GPIO_PULLUP -PF15.Locked=true -PF15.PinState=GPIO_PIN_SET -PF15.Signal=GPIO_Output -PinOutPanel.RotationAngle=0 -ProjectManager.AskForMigrate=true -ProjectManager.BackupPrevious=false -ProjectManager.CompilerOptimize=6 -ProjectManager.ComputerToolchain=false -ProjectManager.CoupleFile=true -ProjectManager.CustomerFirmwarePackage= -ProjectManager.DefaultFWLocation=true -ProjectManager.DeletePrevious=true -ProjectManager.DeviceId=STM32F767ZITx -ProjectManager.FirmwarePackage=STM32Cube FW_F7 V1.16.1 -ProjectManager.FreePins=false -ProjectManager.HalAssertFull=false -ProjectManager.HeapSize=0x200 -ProjectManager.KeepUserCode=true -ProjectManager.LastFirmware=true -ProjectManager.LibraryCopy=1 -ProjectManager.MainLocation=Core/Src -ProjectManager.NoMain=false -ProjectManager.PreviousToolchain=STM32CubeIDE -ProjectManager.ProjectBuild=false -ProjectManager.ProjectFileName=otto_controller.ioc -ProjectManager.ProjectName=otto_controller -ProjectManager.RegisterCallBack= -ProjectManager.StackSize=0x400 -ProjectManager.TargetToolchain=STM32CubeIDE -ProjectManager.ToolChainLocation= -ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_TIM2_Init-TIM2-false-HAL-true,5-MX_TIM4_Init-TIM4-false-HAL-true,6-MX_TIM5_Init-TIM5-false-HAL-true,7-MX_USART6_UART_Init-USART6-false-HAL-true,8-MX_TIM6_Init-TIM6-false-HAL-true,9-MX_CRC_Init-CRC-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true -RCC.AHBFreq_Value=216000000 -RCC.APB1CLKDivider=RCC_HCLK_DIV4 -RCC.APB1Freq_Value=54000000 -RCC.APB1TimFreq_Value=108000000 -RCC.APB2CLKDivider=RCC_HCLK_DIV2 -RCC.APB2Freq_Value=108000000 -RCC.APB2TimFreq_Value=216000000 -RCC.CECFreq_Value=32786.88524590164 -RCC.CortexFreq_Value=216000000 -RCC.DFSDMAudioFreq_Value=192000000 -RCC.DFSDMFreq_Value=108000000 -RCC.EthernetFreq_Value=216000000 -RCC.FCLKCortexFreq_Value=216000000 -RCC.FamilyName=M -RCC.HCLKFreq_Value=216000000 -RCC.HSE_VALUE=25000000 -RCC.HSI_VALUE=16000000 -RCC.I2C1Freq_Value=54000000 -RCC.I2C2Freq_Value=54000000 -RCC.I2C3Freq_Value=54000000 -RCC.I2C4Freq_Value=54000000 -RCC.I2SFreq_Value=192000000 -RCC.IPParameters=AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CECFreq_Value,CortexFreq_Value,DFSDMAudioFreq_Value,DFSDMFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2C4Freq_Value,I2SFreq_Value,LCDTFTFreq_Value,LPTIM1Freq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLI2SPCLKFreq_Value,PLLI2SQCLKFreq_Value,PLLI2SRCLKFreq_Value,PLLI2SRoutputFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLQoutputFreq_Value,PLLRFreq_Value,PLLSAIPCLKFreq_Value,PLLSAIQCLKFreq_Value,PLLSAIRCLKFreq_Value,PLLSAIoutputFreq_Value,RNGFreq_Value,SAI1Freq_Value,SAI2Freq_Value,SDMMC2Freq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,UART5Freq_Value,UART7Freq_Value,UART8Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USART6Freq_Value,USBFreq_Value,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value -RCC.LCDTFTFreq_Value=96000000 -RCC.LPTIM1Freq_Value=54000000 -RCC.LSE_VALUE=32768 -RCC.LSI_VALUE=32000 -RCC.MCO2PinFreq_Value=216000000 -RCC.PLLCLKFreq_Value=216000000 -RCC.PLLI2SPCLKFreq_Value=192000000 -RCC.PLLI2SQCLKFreq_Value=192000000 -RCC.PLLI2SRCLKFreq_Value=192000000 -RCC.PLLI2SRoutputFreq_Value=192000000 -RCC.PLLM=8 -RCC.PLLN=216 -RCC.PLLQCLKFreq_Value=216000000 -RCC.PLLQoutputFreq_Value=216000000 -RCC.PLLRFreq_Value=216000000 -RCC.PLLSAIPCLKFreq_Value=192000000 -RCC.PLLSAIQCLKFreq_Value=192000000 -RCC.PLLSAIRCLKFreq_Value=192000000 -RCC.PLLSAIoutputFreq_Value=192000000 -RCC.RNGFreq_Value=216000000 -RCC.SAI1Freq_Value=192000000 -RCC.SAI2Freq_Value=192000000 -RCC.SDMMC2Freq_Value=216000000 -RCC.SDMMCFreq_Value=216000000 -RCC.SPDIFRXFreq_Value=192000000 -RCC.SYSCLKFreq_VALUE=216000000 -RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK -RCC.UART4Freq_Value=54000000 -RCC.UART5Freq_Value=54000000 -RCC.UART7Freq_Value=54000000 -RCC.UART8Freq_Value=54000000 -RCC.USART1Freq_Value=108000000 -RCC.USART2Freq_Value=54000000 -RCC.USART3Freq_Value=54000000 -RCC.USART6Freq_Value=108000000 -RCC.USBFreq_Value=216000000 -RCC.VCOI2SOutputFreq_Value=384000000 -RCC.VCOInputFreq_Value=2000000 -RCC.VCOOutputFreq_Value=432000000 -RCC.VCOSAIOutputFreq_Value=384000000 -SH.GPXTI13.0=GPIO_EXTI13 -SH.GPXTI13.ConfNb=1 -SH.GPXTI6.0=GPIO_EXTI6 -SH.GPXTI6.ConfNb=1 -SH.GPXTI9.0=GPIO_EXTI9 -SH.GPXTI9.ConfNb=1 -SH.S_TIM2_CH1_ETR.0=TIM2_CH1,Encoder_Interface -SH.S_TIM2_CH1_ETR.ConfNb=1 -SH.S_TIM2_CH2.0=TIM2_CH2,Encoder_Interface -SH.S_TIM2_CH2.ConfNb=1 -SH.S_TIM4_CH3.0=TIM4_CH3,PWM Generation3 CH3 -SH.S_TIM4_CH3.ConfNb=1 -SH.S_TIM4_CH4.0=TIM4_CH4,PWM Generation4 CH4 -SH.S_TIM4_CH4.ConfNb=1 -SH.S_TIM5_CH1.0=TIM5_CH1,Encoder_Interface -SH.S_TIM5_CH1.ConfNb=1 -SH.S_TIM5_CH2.0=TIM5_CH2,Encoder_Interface -SH.S_TIM5_CH2.ConfNb=1 -TIM2.EncoderMode=TIM_ENCODERMODE_TI12 -TIM2.IPParameters=Period,EncoderMode -TIM2.Period=4294967295 -TIM4.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 -TIM4.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 -TIM4.IPParameters=Channel-PWM Generation4 CH4,Channel-PWM Generation3 CH3,Period -TIM4.Period=5399 -TIM5.EncoderMode=TIM_ENCODERMODE_TI12 -TIM5.IPParameters=Period,EncoderMode -TIM5.Period=4294967295 -TIM6.IPParameters=Prescaler,Period -TIM6.Period=107 -TIM6.Prescaler=9999 -USART6.BaudRate=115200 -USART6.DMADisableonRxErrorParam=ADVFEATURE_DMA_DISABLEONRXERROR -USART6.IPParameters=VirtualMode-Asynchronous,WordLength,Parity,BaudRate,DMADisableonRxErrorParam -USART6.Parity=PARITY_NONE -USART6.VirtualMode-Asynchronous=VM_ASYNC -USART6.WordLength=WORDLENGTH_8B -VP_CRC_VS_CRC.Mode=CRC_Activate -VP_CRC_VS_CRC.Signal=CRC_VS_CRC -VP_SYS_VS_Systick.Mode=SysTick -VP_SYS_VS_Systick.Signal=SYS_VS_Systick -VP_TIM4_VS_ClockSourceINT.Mode=Internal -VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT -VP_TIM6_VS_ClockSourceINT.Mode=Enable_Timer -VP_TIM6_VS_ClockSourceINT.Signal=TIM6_VS_ClockSourceINT -board=custom -isbadioc=false diff --git a/otto_controller/.cproject b/pioneer_controller/.cproject similarity index 98% rename from otto_controller/.cproject rename to pioneer_controller/.cproject index beb71ee..d280970 100644 --- a/otto_controller/.cproject +++ b/pioneer_controller/.cproject @@ -25,7 +25,8 @@