├── LICENSE ├── README.md ├── c_config.h ├── cos.h ├── demo └── STM32F407ZGT6_HAL_4WHEEL_MECANUM │ ├── .cproject │ ├── .mxproject │ ├── .project │ ├── .settings │ ├── com.st.stm32cube.ide.mcu.sfrview.prefs │ ├── language.settings.xml │ ├── org.eclipse.cdt.core.prefs │ ├── org.eclipse.ltk.core.refactoring.prefs │ └── stm32cubeide.project.prefs │ ├── CarOS │ ├── c_config.h │ ├── cos.h │ └── src │ │ ├── app │ │ ├── c_app.c │ │ ├── c_app.h │ │ ├── c_builtinapp.c │ │ └── c_builtinapp.h │ │ ├── c_includes.h │ │ ├── c_types.h │ │ ├── car │ │ ├── c_2wheel_balance.c │ │ ├── c_2wheel_balance.h │ │ ├── c_2wheel_differential.c │ │ ├── c_2wheel_differential.h │ │ ├── c_3wheel_omni.c │ │ ├── c_3wheel_omni.h │ │ ├── c_4wheel_differential.c │ │ ├── c_4wheel_differential.h │ │ ├── c_4wheel_mecanum.c │ │ ├── c_4wheel_mecanum.h │ │ ├── c_4wheel_omni.c │ │ ├── c_4wheel_omni.h │ │ ├── c_6wheel_mecanum.c │ │ ├── c_6wheel_mecanum.h │ │ ├── c_akerman.c │ │ ├── c_akerman.h │ │ ├── c_car.c │ │ └── c_car.h │ │ ├── communication │ │ ├── c_command.c │ │ ├── c_command.h │ │ ├── c_io.c │ │ ├── c_io.h │ │ ├── c_pkgproc.c │ │ └── c_pkgproc.h │ │ ├── debug │ │ ├── c_debug.c │ │ └── c_debug.h │ │ ├── memory │ │ ├── c_memory.c │ │ └── c_memory.h │ │ ├── motor │ │ ├── DCmotor │ │ │ ├── c_DCmotor.c │ │ │ ├── c_DCmotor.h │ │ │ ├── controller │ │ │ │ ├── c_controller.c │ │ │ │ └── c_controller.h │ │ │ └── driver │ │ │ │ ├── DCMotor_driver.c │ │ │ │ ├── DCmotor_driver.h │ │ │ │ └── L298N │ │ │ │ ├── L298N_Driver.c │ │ │ │ └── L298N_Driver.h │ │ └── encoder │ │ │ ├── c_encoder.c │ │ │ └── c_encoder.h │ │ └── peri_driver │ │ ├── distance_measure_sensor │ │ └── laser_TF_Luna │ │ │ ├── c_tf_luna.c │ │ │ └── c_tf_luna.h │ │ └── peri_driver.h │ ├── Core │ ├── Inc │ │ ├── FreeRTOSConfig.h │ │ ├── arm_common_tables.h │ │ ├── arm_const_structs.h │ │ ├── arm_math.h │ │ ├── dma.h │ │ ├── gpio.h │ │ ├── main.h │ │ ├── stm32f4xx_hal_conf.h │ │ ├── stm32f4xx_it.h │ │ ├── tim.h │ │ └── usart.h │ ├── Src │ │ ├── dma.c │ │ ├── freertos.c │ │ ├── gpio.c │ │ ├── main.c │ │ ├── stm32f4xx_hal_msp.c │ │ ├── stm32f4xx_it.c │ │ ├── syscalls.c │ │ ├── sysmem.c │ │ ├── system_stm32f4xx.c │ │ ├── tim.c │ │ └── usart.c │ └── Startup │ │ └── startup_stm32f407zgtx.s │ ├── Drivers │ ├── CMSIS │ │ ├── Device │ │ │ └── ST │ │ │ │ └── STM32F4xx │ │ │ │ ├── Include │ │ │ │ ├── stm32f407xx.h │ │ │ │ ├── stm32f4xx.h │ │ │ │ └── system_stm32f4xx.h │ │ │ │ └── LICENSE.txt │ │ ├── Include │ │ │ ├── cmsis_armcc.h │ │ │ ├── cmsis_armclang.h │ │ │ ├── cmsis_compiler.h │ │ │ ├── cmsis_gcc.h │ │ │ ├── cmsis_iccarm.h │ │ │ ├── cmsis_version.h │ │ │ ├── core_armv8mbl.h │ │ │ ├── core_armv8mml.h │ │ │ ├── core_cm0.h │ │ │ ├── core_cm0plus.h │ │ │ ├── core_cm1.h │ │ │ ├── core_cm23.h │ │ │ ├── core_cm3.h │ │ │ ├── core_cm33.h │ │ │ ├── core_cm4.h │ │ │ ├── core_cm7.h │ │ │ ├── core_sc000.h │ │ │ ├── core_sc300.h │ │ │ ├── mpu_armv7.h │ │ │ ├── mpu_armv8.h │ │ │ └── tz_context.h │ │ └── LICENSE.txt │ └── STM32F4xx_HAL_Driver │ │ ├── Inc │ │ ├── Legacy │ │ │ └── stm32_hal_legacy.h │ │ ├── stm32f4xx_hal.h │ │ ├── stm32f4xx_hal_cortex.h │ │ ├── stm32f4xx_hal_def.h │ │ ├── stm32f4xx_hal_dma.h │ │ ├── stm32f4xx_hal_dma_ex.h │ │ ├── stm32f4xx_hal_exti.h │ │ ├── stm32f4xx_hal_flash.h │ │ ├── stm32f4xx_hal_flash_ex.h │ │ ├── stm32f4xx_hal_flash_ramfunc.h │ │ ├── stm32f4xx_hal_gpio.h │ │ ├── stm32f4xx_hal_gpio_ex.h │ │ ├── stm32f4xx_hal_pwr.h │ │ ├── stm32f4xx_hal_pwr_ex.h │ │ ├── stm32f4xx_hal_rcc.h │ │ ├── stm32f4xx_hal_rcc_ex.h │ │ ├── stm32f4xx_hal_tim.h │ │ ├── stm32f4xx_hal_tim_ex.h │ │ ├── stm32f4xx_hal_uart.h │ │ ├── stm32f4xx_ll_bus.h │ │ ├── stm32f4xx_ll_cortex.h │ │ ├── stm32f4xx_ll_dma.h │ │ ├── stm32f4xx_ll_exti.h │ │ ├── stm32f4xx_ll_gpio.h │ │ ├── stm32f4xx_ll_pwr.h │ │ ├── stm32f4xx_ll_rcc.h │ │ ├── stm32f4xx_ll_system.h │ │ ├── stm32f4xx_ll_tim.h │ │ ├── stm32f4xx_ll_usart.h │ │ └── stm32f4xx_ll_utils.h │ │ ├── LICENSE.txt │ │ └── Src │ │ ├── stm32f4xx_hal.c │ │ ├── stm32f4xx_hal_cortex.c │ │ ├── stm32f4xx_hal_dma.c │ │ ├── stm32f4xx_hal_dma_ex.c │ │ ├── stm32f4xx_hal_exti.c │ │ ├── stm32f4xx_hal_flash.c │ │ ├── stm32f4xx_hal_flash_ex.c │ │ ├── stm32f4xx_hal_flash_ramfunc.c │ │ ├── stm32f4xx_hal_gpio.c │ │ ├── stm32f4xx_hal_pwr.c │ │ ├── stm32f4xx_hal_pwr_ex.c │ │ ├── stm32f4xx_hal_rcc.c │ │ ├── stm32f4xx_hal_rcc_ex.c │ │ ├── stm32f4xx_hal_tim.c │ │ ├── stm32f4xx_hal_tim_ex.c │ │ └── stm32f4xx_hal_uart.c │ ├── Middlewares │ └── Third_Party │ │ └── FreeRTOS │ │ └── Source │ │ ├── CMSIS_RTOS │ │ ├── cmsis_os.c │ │ └── cmsis_os.h │ │ ├── LICENSE │ │ ├── croutine.c │ │ ├── event_groups.c │ │ ├── include │ │ ├── FreeRTOS.h │ │ ├── StackMacros.h │ │ ├── atomic.h │ │ ├── croutine.h │ │ ├── deprecated_definitions.h │ │ ├── event_groups.h │ │ ├── list.h │ │ ├── message_buffer.h │ │ ├── mpu_prototypes.h │ │ ├── mpu_wrappers.h │ │ ├── portable.h │ │ ├── projdefs.h │ │ ├── queue.h │ │ ├── semphr.h │ │ ├── stack_macros.h │ │ ├── stream_buffer.h │ │ ├── task.h │ │ └── timers.h │ │ ├── list.c │ │ ├── portable │ │ ├── GCC │ │ │ └── ARM_CM4F │ │ │ │ ├── port.c │ │ │ │ └── portmacro.h │ │ └── MemMang │ │ │ └── heap_4.c │ │ ├── queue.c │ │ ├── stream_buffer.c │ │ ├── tasks.c │ │ └── timers.c │ ├── STM32F407ZGT6_HAL_4WHEEL_MECANUM Debug.launch │ ├── STM32F407ZGT6_HAL_4WHEEL_MECANUM.ioc │ ├── STM32F407ZGT6_HAL_4WHEEL_MECANUM.launch │ ├── STM32F407ZGTX_FLASH.ld │ └── STM32F407ZGTX_RAM.ld ├── docs ├── index.md ├── update.md ├── 串口 │ ├── figure │ │ ├── 001.jpg │ │ └── 002.jpg │ └── uart.md ├── 命令及应用程序 │ └── application.md ├── 浮点运算单元 │ ├── FPU.md │ └── figure │ │ ├── 001.jpg │ │ ├── 002.jpg │ │ ├── 003.jpg │ │ └── 004.jpg ├── 用户指南 │ ├── CarOS-user manual.md │ └── figure │ │ ├── 001.jpg │ │ ├── 002.jpg │ │ ├── 003.jpg │ │ ├── 004.JPG │ │ ├── 005.JPG │ │ ├── 006.JPG │ │ ├── 007.JPG │ │ ├── 008.JPG │ │ ├── 009.jpg │ │ ├── 010.jpg │ │ ├── 011.jpg │ │ ├── 012.jpg │ │ ├── 013.jpg │ │ ├── 014.jpg │ │ ├── 015.jpg │ │ ├── 016.jpg │ │ ├── 017.jpg │ │ ├── 018.jpg │ │ ├── 019.jpg │ │ ├── 020.jpg │ │ └── 021.jpg ├── 电机 │ ├── figure │ │ ├── 001.jpg │ │ ├── 002.jpg │ │ └── 002.png │ └── motor.md ├── 调试 │ └── debug.md ├── 车体 │ ├── 4wheel_mecanum.md │ ├── car.md │ └── figure │ │ ├── 001.jpg │ │ └── 002.jpg └── 通信 │ └── communication.md └── src ├── app ├── c_app.c ├── c_app.h ├── c_builtinapp.c └── c_builtinapp.h ├── c_includes.h ├── c_types.h ├── car ├── c_2wheel_balance.c ├── c_2wheel_balance.h ├── c_2wheel_differential.c ├── c_2wheel_differential.h ├── c_3wheel_omni.c ├── c_3wheel_omni.h ├── c_4wheel_differential.c ├── c_4wheel_differential.h ├── c_4wheel_mecanum.c ├── c_4wheel_mecanum.h ├── c_4wheel_omni.c ├── c_4wheel_omni.h ├── c_6wheel_mecanum.c ├── c_6wheel_mecanum.h ├── c_akerman.c ├── c_akerman.h ├── c_car.c └── c_car.h ├── communication ├── c_command.c ├── c_command.h ├── c_io.c ├── c_io.h ├── c_pkgproc.c └── c_pkgproc.h ├── debug ├── c_debug.c └── c_debug.h ├── memory ├── c_memory.c └── c_memory.h ├── motor ├── DCmotor │ ├── c_DCmotor.c │ ├── c_DCmotor.h │ ├── controller │ │ ├── c_controller.c │ │ └── c_controller.h │ └── driver │ │ ├── DCMotor_driver.c │ │ ├── DCmotor_driver.h │ │ └── L298N │ │ ├── L298N_Driver.c │ │ └── L298N_Driver.h └── encoder │ ├── c_encoder.c │ └── c_encoder.h └── peri_driver ├── distance_measure_sensor └── laser_TF_Luna │ ├── c_tf_luna.c │ └── c_tf_luna.h └── peri_driver.h /README.md: -------------------------------------------------------------------------------- 1 | # CarOS:小车驱动程序及应用程序接口 2 | 3 | ## :book: 简介 4 | 5 | ### 当前版本v1.3.1 6 | 7 | **CarOS是什么** 8 | 9 | CarOS是针对于电赛(使用STM32及MSP432)开发的小车专用的一套底层驱动程序及浅层应用程序接口,能够满足用户在其上开发一些应用程序而减少对于驱动的接触,帮助用户在最短时间内搭建一辆小车。 10 | 11 | **CarOS不是什么** 12 | 13 | CarOS不是操作系统(Operating System),它还需要依赖其他实时操作系统,如FreeRTOS等才能正常发挥作用。在未来会考虑封装FreeRTOS进入CarOS而使CarOS变成基于FreeRTOS的小车操作系统,这也是该项目以OS为名的一个原因。 14 | 15 | ## :rocket: 特性 16 | 17 | **高可移植性** 18 | 19 | 只需配置很少一部分代码即可在STM32或MSP432平台上运行。 20 | 21 | **高可扩展性** 22 | 23 | 可扩展直流电机驱动、直流电机速度环控制算法、车体运动学闭环控制算法,且均留有标准接口和扩展教程。 24 | 25 | **便于调试** 26 | 27 | 自带串口控制台,可使用命令控制小车;自带小车日志记录,可及时了解小车异常情况 28 | ``` 29 | load app "dmesg" 30 | load app "smv" 31 | load app "shmpid" 32 | load app "smpid" 33 | load app "scv" 34 | load app "mpidsa" 35 | load app "pkg" 36 | Console ready. 37 | debug init done. 38 | Left Front Motor initialization done. 39 | Left Front Motor adding PID velocity controller succeed. 40 | Left Front Motor has mounted L298N driver. 41 | Left Rear Motor initialization done. 42 | Left Rear Motor adding PID velocity controller succeed. 43 | Left Rear Motor has mounted L298N driver. 44 | Right Front Motor initialization done. 45 | Right Front Motor adding PID velocity controller succeed. 46 | Right Front Motor has mounted L298N driver. 47 | Right Rear Motor initialization done. 48 | Right Rear Motor adding PID velocity controller succeed. 49 | Right Rear Motor has mounted L298N driver. 50 | car set move towards 0.00degree at speed 40.00cm/s, at angular velocity 0.00rad/s. 51 | car set move towards 10.00degree at speed 20.00cm/s, at angular velocity 4.00rad/s. 52 | ``` 53 | 54 | **模块可拆卸** 55 | 56 | 只需删减部分代码,各模块均可拆卸出来单独使用。 57 | 58 | **注释详尽** 59 | 60 | 代码带有大量注释,便于用户了解实现原理,这也是为了希望用户能多提出代码的弊病和不足之处。 61 | 62 | ## :robot: 开始上手 63 | 64 | [开始上手](https://github.com/Pansamic/CarOS/blob/master/docs/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/CarOS-user%20manual.md) 65 | 66 | ### 帮助 67 | 68 | 对于各个模块的说明及帮助都写在对应模块的文档中了(有一些尚未写完),用户可以查看对应的文档寻找帮助。 69 | 70 | 如有问题或者对CarOS的建议,请联系邮箱`pansamic@foxmail.com` 71 | 72 | 欢迎各位为CarOS添加更多驱动、更多小车模型、更多上层应用程序~~ 73 | 74 | ## :earth_asia: 当前支持 75 | 76 | ### 小车模型 77 | 78 | 1. 4轮麦克纳姆轮小车模型 79 | 80 | ### 电机速度环算法 81 | 82 | 1. PID算法 83 | 84 | ### 直流电机驱动 85 | 86 | 1. L298N模块 87 | 88 | ### 串口命令控制台 89 | 90 | PC机使用串口调试工具向小车发送命令以使小车执行命令相关程序 91 | 92 | ## :bookmark_tabs: 未来计划 93 | 94 | ### v1.4 95 | 96 | 1. 小车模型加入对姿态传感器的通用接口 97 | 2. 增加姿态传感器MPU6050驱动 98 | 3. 增加A4950直流电机驱动 99 | 100 | ### v1.5 101 | 102 | 1. 全面支持MSP432 103 | 2. 增加姿态传感器ICM20640的驱动 104 | 105 | ### v1.6 106 | 1. 增加OpenMV的驱动及少量应用程序 107 | 108 | ### v1.7 109 | 110 | 1. 加入SPI-Flash芯片驱动 111 | 2. 提供将日志存储至SPI-Flash的选项 112 | 113 | ### v2.0 114 | 115 | 1. 封装FreeRTOS 116 | 117 | ## :open_file_folder: 仓库结构 118 | 119 | `CarOS/src`:源代码文件夹,存放了CarOS驱动库。 120 | 121 | `CarOS/docs`:文档文件夹,存放了CarOS的各类文档。 122 | 123 | `CarOS/demo`:样例文件夹,存放了使用CarOS的直接可使用样例。 124 | 125 | ## :calendar: 版本更新记录 126 | 127 | [版本更新记录](https://github.com/Pansamic/CarOS/blob/master/docs/update.md) -------------------------------------------------------------------------------- /cos.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: cos.h 8 | Author: Pansamic 9 | Version: 1.1 10 | Create date: 2022.12.09 11 | Description: the header of all features of CarOS. 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2022.12.10 create v1.0 version. 17 | pansamic 2023.1.3 v1.1 done 18 | *****************************************************************************/ 19 | #ifndef __COS_H_ 20 | #define __COS_H_ 21 | 22 | #ifdef __cplusplus 23 | extern "C" { 24 | #endif 25 | 26 | #include "./src/car/c_car.h" 27 | #include "./src/memory/c_memory.h" 28 | #include "./src/communication/c_io.h" 29 | #include "./src/peri_driver/distance_measure_sensor/laser_TF_Luna/c_tf_luna.h" 30 | #include "./src/peri_driver/peri_driver.h" 31 | 32 | #ifdef __cplusplus 33 | } /*extern "C"*/ 34 | #endif 35 | #endif 36 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | STM32F407ZGT6_HAL_4WHEEL_MECANUM 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.cdt.managedbuilder.core.genmakebuilder 10 | clean,full,incremental, 11 | 12 | 13 | 14 | 15 | org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder 16 | full,incremental, 17 | 18 | 19 | 20 | 21 | 22 | com.st.stm32cube.ide.mcu.MCUProjectNature 23 | com.st.stm32cube.ide.mcu.MCUCubeProjectNature 24 | org.eclipse.cdt.core.cnature 25 | com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature 26 | com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature 27 | com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature 28 | com.st.stm32cube.ide.mcu.MCURootProjectNature 29 | org.eclipse.cdt.managedbuilder.core.managedBuildNature 30 | org.eclipse.cdt.managedbuilder.core.ScannerConfigNature 31 | 32 | 33 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | sfrviewstate={"fFavorites"\:{"fLists"\:{}},"fProperties"\:{"fNodeProperties"\:{}}} 3 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/.settings/language.settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/.settings/org.eclipse.cdt.core.prefs: -------------------------------------------------------------------------------- 1 | doxygen/doxygen_new_line_after_brief=true 2 | doxygen/doxygen_use_brief_tag=false 3 | doxygen/doxygen_use_javadoc_tags=true 4 | doxygen/doxygen_use_pre_tag=false 5 | doxygen/doxygen_use_structural_commands=false 6 | eclipse.preferences.version=1 7 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/.settings/org.eclipse.ltk.core.refactoring.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false 3 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/.settings/stm32cubeide.project.prefs: -------------------------------------------------------------------------------- 1 | 8DF89ED150041C4CBC7CB9A9CAA90856=84C439DA3B66D84CAA3B358788706637 2 | DC22A860405A8BF2F2C095E5B6529F12=84C439DA3B66D84CAA3B358788706637 3 | eclipse.preferences.version=1 4 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/cos.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: cos.h 8 | Author: Pansamic 9 | Version: 1.1 10 | Create date: 2022.12.09 11 | Description: the header of all features of CarOS. 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2022.12.10 create v1.0 version. 17 | pansamic 2023.1.3 v1.1 done 18 | *****************************************************************************/ 19 | #ifndef __COS_H_ 20 | #define __COS_H_ 21 | 22 | #ifdef __cplusplus 23 | extern "C" { 24 | #endif 25 | 26 | #include "./src/car/c_car.h" 27 | #include "./src/memory/c_memory.h" 28 | #include "./src/communication/c_io.h" 29 | #include "./src/peri_driver/distance_measure_sensor/laser_TF_Luna/c_tf_luna.h" 30 | #include "./src/peri_driver/peri_driver.h" 31 | 32 | #ifdef __cplusplus 33 | } /*extern "C"*/ 34 | #endif 35 | #endif 36 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/app/c_app.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_app.c 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.2 11 | Description: This file contains the definition of LoadApp(). 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.2 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifdef __cplusplus 19 | extern "C"{ 20 | #endif 21 | #include "./src/c_includes.h" 22 | #include "./src/app/c_app.h" 23 | #include "./src/debug/c_debug.h" 24 | 25 | 26 | /***************************************************************************************************** 27 | * @name:LoadApp 28 | * @brief:Load application to specified io device from an application list. 29 | * @params: 30 | * 1.ioDevice:CarOS io device, usually '&cosio'. 31 | * 2.AppList:A 'COS_App[]' type of array that contains information of applications. 32 | * 3.AppAmount:The amount of applications in 'AppList'. 33 | * @retval:none 34 | * @author: Wang Geng Jie 35 | *****************************************************************************************************/ 36 | void LoadApp(COS_io *ioDevice, COS_App AppList[], uint8_t AppAmount) 37 | { 38 | uint8_t i; 39 | for(i=0 ; i='a'&&*AppList[i].Name<='z') || (*AppList[i].Name>='A'&&*AppList[i].Name<='Z'))) 43 | { 44 | COS_Logf(err,"read app list error:check 'AppAmount'"); 45 | return ; 46 | } 47 | COS_Logf(info,"load app \"%s\"", AppList[i].Name); 48 | io_AddCmd(ioDevice, AppList[i].Name, AppList[i].ParamsDescription, AppList[i].CmdCallbackFunc); 49 | } 50 | } 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | #ifdef __cplusplus 65 | } 66 | #endif 67 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/app/c_app.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_app.h 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.2 11 | Description: This file describes an simple application model of CarOS and a 12 | function that loads apps to specified io devicce. 13 | Others: none 14 | 15 | History: 16 | 1. 17 | pansamic 2023.1.2 create v0.1 version. 18 | *****************************************************************************/ 19 | #ifndef __C_APP_H__ 20 | #define __C_APP_H__ 21 | #ifdef __cplusplus 22 | extern "C"{ 23 | #endif 24 | #include "./src/communication/c_io.h" 25 | 26 | 27 | /********************************************************************************************** 28 | * * 29 | * TYPEDEF * 30 | * * 31 | **********************************************************************************************/ 32 | typedef struct AppDefinition COS_App; 33 | 34 | 35 | /********************************************************************************************** 36 | * @brief: The description of CarOS application. 37 | * @params: 38 | * 1.Name:The name of this application. 39 | * 2.ParamsDescription:A string that describes the parameters the application need. Each 40 | * parameter is divided ONLY by ','! e.g. "int,float,uint32_t" 41 | * 3.CmdCallbackFunc:A pointer of function. 42 | * */ 43 | struct AppDefinition 44 | { 45 | const char *Name; 46 | const char *ParamsDescription; 47 | void (*CmdCallbackFunc)(uint8_t*); 48 | }; 49 | 50 | 51 | /********************************************************************************************** 52 | * * 53 | * GLOBAL FUNCTION * 54 | * * 55 | **********************************************************************************************/ 56 | void LoadApp(COS_io *ioDevice, COS_App AppList[], uint8_t AppAmount); 57 | 58 | 59 | 60 | 61 | #ifdef __cplusplus 62 | } 63 | #endif 64 | #endif 65 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/app/c_builtinapp.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_biltinapp.h 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.2 11 | Description: This file contains an application list and some definition of 12 | application callback functions. 13 | Others: none 14 | 15 | History: 16 | 1. 17 | pansamic 2023.1.2 create v0.1 version. 18 | *****************************************************************************/ 19 | #ifdef __cplusplus 20 | extern "C"{ 21 | #endif 22 | #include "c_config.h" 23 | #include "./src/debug/c_debug.h" 24 | #include "./src/app/c_app.h" 25 | #include "./src/app/c_builtinapp.h" 26 | #include "./src/car/c_car.h" 27 | 28 | #if LOG_STORAGE 29 | void PrintLogcb (uint8_t* ParamList); 30 | #endif 31 | void PackageModecb (uint8_t *ParamList); 32 | /* stream mode callback function */ 33 | void PackageTest (COS_io* ioDevice, uint8_t* DataPackage); 34 | 35 | COS_App BuiltinAppList[BUILT_IN_APP_AMOUNT]={ 36 | #if LOG_STORAGE 37 | /* print all system log */ 38 | {"dmesg", NULL, PrintLogcb}, 39 | 40 | {"pkg", NULL, PackageModecb} 41 | #endif 42 | }; 43 | 44 | 45 | 46 | #if LOG_STORAGE 47 | void PrintLogcb(uint8_t* ParamList) 48 | { 49 | COS_PrintLog(); 50 | } 51 | #endif 52 | 53 | 54 | void PackageModecb(uint8_t *ParamList) 55 | { 56 | io_PackageMode(&cosio, 1, 4, PackageTest); 57 | } 58 | 59 | 60 | void PackageTest(COS_io* ioDevice, uint8_t* DataPackage) 61 | { 62 | io_SendData(&cosio, DataPackage, 4); 63 | if(*DataPackage == '+') 64 | { 65 | io_CommandMode(&cosio); 66 | } 67 | } 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | #ifdef __cplusplus 78 | } 79 | #endif 80 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/app/c_builtinapp.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_biltinapp.h 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.2 11 | Description: The CarOS built-in applications. These applications generally 12 | fit for every car model and are system-level debug tools. 13 | Others: none 14 | 15 | History: 16 | 1. 17 | pansamic 2023.1.2 create v0.1 version. 18 | *****************************************************************************/ 19 | #ifndef __C_BUILTINAPP_H__ 20 | #define __C_BUILTINAPP_H__ 21 | #ifdef __cplusplus 22 | extern "C"{ 23 | #endif 24 | #include "./src/app/c_app.h" 25 | 26 | #if LOG_STORAGE 27 | #define BUILT_IN_APP_AMOUNT 2 28 | #else 29 | #define BUILT_IN_APP_AMOUNT 0 30 | #endif 31 | /********************************************************************************************** 32 | * * 33 | * EXTERN * 34 | * * 35 | **********************************************************************************************/ 36 | /* only provide a application list */ 37 | extern COS_App BuiltinAppList[BUILT_IN_APP_AMOUNT]; 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | #ifdef __cplusplus 53 | } 54 | #endif 55 | #endif 56 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/c_includes.h: -------------------------------------------------------------------------------- 1 | #ifndef __INCLUDES_H__ 2 | #define __INCLUDES_H__ 3 | #ifdef __cplusplus 4 | extern "C" { 5 | #endif 6 | #include "./c_config.h" 7 | #include "./src/c_types.h" 8 | #if USE_STM32 9 | #if USE_STM32F1 10 | #if USE_HAL_LIB 11 | #include "stm32f1xx_hal.h" 12 | #elif USE_FW_LIB 13 | 14 | #endif/* USE_HAL_LIB */ 15 | #endif/* USE_STM32F1 */ 16 | 17 | #if USE_STM32F4 18 | #if USE_HAL_LIB 19 | #include "stm32f4xx_hal.h" 20 | #elif USE_FW_LIB 21 | 22 | #endif/* USE_HAL_LIB */ 23 | #endif/* USE_STM32F4 */ 24 | 25 | #endif/* USE_STM32 */ 26 | #if USE_MSP432 27 | 28 | #endif 29 | 30 | #ifdef __cplusplus 31 | } 32 | #endif 33 | #endif /* __INCLUDES_H__ */ 34 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/c_types.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_types.h 8 | Author: Pansamic 9 | Version: 1.0 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v1.0 version. 17 | *****************************************************************************/ 18 | #ifndef __C_TYPES_H__ 19 | #define __C_TYPES_H__ 20 | #ifdef __cplusplus 21 | extern "C" { 22 | #endif 23 | 24 | #define LinVelToAngVel(Radius,LinearVel) LinearVel/Radius 25 | #define AngVelToLinVel(Radius,AngularVel) Radius*AngularVel 26 | 27 | /* it is used to describe rotation speed of dc motor, unit:r/s */ 28 | typedef float Angle_t; // unit:rad 29 | typedef float LinVelocity_t; // unit:cm/s 30 | typedef float AngVelocity_t; // unit:rad/s 31 | 32 | 33 | /* Remember that COS_uart is ALWAYS a pointer. 34 | * In HAL lib, it's like '&huart1', etc. 35 | * In FW lib, it's like 'USART1', etc.,because 'USART1' itself is a pointer. 36 | * In MSP432, it's like 'EUSCI_A0_BASE', etc., because 'EUSCI_A0_BASE' itself is a pointer. */ 37 | #if USE_HAL_LIB 38 | #define COS_uart UART_HandleTypeDef* 39 | #elif USE_FW_LIB 40 | #define COS_uart USART_TypeDef* 41 | #elif USE_MSP432 42 | #define COS_uart void* 43 | #endif 44 | 45 | #ifdef __cplusplus 46 | } 47 | #endif 48 | #endif 49 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_2wheel_balance.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_2wheel_balance.c 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifdef _cplusplus 19 | extern "C"{ 20 | #endif 21 | #include "c_config.h" 22 | #if (CAR_TYPE==TWO_WHEEL_BALANCE) 23 | #include 24 | #include "./src/c_types.h" 25 | #include "./src/debug/c_debug.h" 26 | #include "./src/car/c_car.h" 27 | #include "./src/car/c_2wheel_balance.h" 28 | 29 | 30 | COS_App CarAppList[CARAPPAMOUNT]={ 31 | 32 | }; 33 | 34 | CarType_t Car; 35 | 36 | DCMotor LeftMotor; 37 | DCMotor RightMotor; 38 | 39 | 40 | /***************************************************************************************************** 41 | * @name: 42 | * @brief: 43 | * @params: 44 | * @retval:none 45 | * @author: 46 | *****************************************************************************************************/ 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | #endif /* CAR_TYPE==TWO_WHEEL_BALANCE */ 57 | #ifdef _cplusplus 58 | } 59 | #endif 60 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_2wheel_balance.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_2wheel_balance.h 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifndef __C_2WHEEL_BALANCE_H_ 19 | #define __C_2WHEEL_BALANCE_H_ 20 | #ifdef _cplusplus 21 | extern "C"{ 22 | #endif 23 | #include "c_config.h" 24 | #if (CAR_TYPE==TWO_WHEEL_BALANCE) 25 | #include "./src/motor/DCmotor/c_DCMotor.h" 26 | #include "./src/app/c_app.h" 27 | /********************************************************************************************** 28 | * * 29 | * MACROS * 30 | * * 31 | **********************************************************************************************/ 32 | /* It must correspond to the actual quantity */ 33 | #define CARAPPAMOUNT 5 34 | 35 | 36 | /********************************************************************************************** 37 | * * 38 | * TYPEDEF * 39 | * * 40 | **********************************************************************************************/ 41 | /* avoid cross include */ 42 | typedef struct CarDefinition CarType_t; 43 | 44 | 45 | /********************************************************************************************** 46 | * * 47 | * EXTERN * 48 | * * 49 | **********************************************************************************************/ 50 | /* CarType_t instance declaration */ 51 | extern CarType_t Car; 52 | 53 | /* Wheels declaration */ 54 | extern DCMotor LeftMotor; 55 | extern DCMotor RightMotor; 56 | 57 | /* app list based on car type */ 58 | extern COS_App CarAppList[CARAPPAMOUNT]; 59 | 60 | 61 | /********************************************************************************************** 62 | * * 63 | * GLOBAL FUNCTION * 64 | * * 65 | **********************************************************************************************/ 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | #endif /* (CAR_TYPE==TWO_WHEEL_BALANCE) */ 75 | #ifdef _cplusplus 76 | } 77 | #endif 78 | #endif /* __C_2WHEEL_BALANCE_H_ */ 79 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_2wheel_differential.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_2wheel_differential.c 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifdef _cplusplus 19 | extern "C"{ 20 | #endif 21 | #include "c_config.h" 22 | #if (CAR_TYPE==TWO_WHEEL_DIFFERENTIAL) 23 | #include 24 | #include "./src/c_types.h" 25 | #include "./src/debug/c_debug.h" 26 | #include "./src/car/c_car.h" 27 | #include "./src/car/c_2wheel_balance.h" 28 | 29 | 30 | COS_App CarAppList[CARAPPAMOUNT]={ 31 | 32 | }; 33 | 34 | CarType_t Car; 35 | 36 | DCMotor LeftMotor; 37 | DCMotor RightMotor; 38 | 39 | 40 | /***************************************************************************************************** 41 | * @name: 42 | * @brief: 43 | * @params: 44 | * @retval:none 45 | * @author: 46 | *****************************************************************************************************/ 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | #endif /* CAR_TYPE==TWO_WHEEL_DIFFERENTIAL */ 57 | #ifdef _cplusplus 58 | } 59 | #endif 60 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_2wheel_differential.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_2wheel_differential.h 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifndef __C_2WHEEL_DIFFERENTIAL_H_ 19 | #define __C_2WHEEL_DIFFERENTIAL_H_ 20 | #ifdef _cplusplus 21 | extern "C"{ 22 | #endif 23 | #include "c_config.h" 24 | #if (CAR_TYPE==TWO_WHEEL_DIFFERENTIAL) 25 | #include "./src/motor/DCmotor/c_DCMotor.h" 26 | #include "./src/app/c_app.h" 27 | 28 | 29 | /********************************************************************************************** 30 | * * 31 | * MACROS * 32 | * * 33 | **********************************************************************************************/ 34 | /* It must correspond to the actual quantity */ 35 | #define CARAPPAMOUNT 5 36 | 37 | 38 | /********************************************************************************************** 39 | * * 40 | * TYPEDEF * 41 | * * 42 | **********************************************************************************************/ 43 | /* avoid cross include */ 44 | typedef struct CarDefinition CarType_t; 45 | 46 | 47 | /********************************************************************************************** 48 | * * 49 | * EXTERN * 50 | * * 51 | **********************************************************************************************/ 52 | /* CarType_t instance declaration */ 53 | extern CarType_t Car; 54 | 55 | /* Wheels declaration */ 56 | extern DCMotor LeftMotor; 57 | extern DCMotor RightMotor; 58 | 59 | /* app list based on car type */ 60 | extern COS_App CarAppList[CARAPPAMOUNT]; 61 | 62 | 63 | 64 | /********************************************************************************************** 65 | * * 66 | * GLOBAL FUNCTION * 67 | * * 68 | **********************************************************************************************/ 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | #endif /* (CAR_TYPE==TWO_WHEEL_DIFFERENTIAL) */ 78 | #ifdef _cplusplus 79 | } 80 | #endif 81 | #endif /* __C_2WHEEL_DIFFRENTIAL_H_ */ 82 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_3wheel_omni.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_3wheel_omni.c 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifdef _cplusplus 19 | extern "C"{ 20 | #endif 21 | #include "c_config.h" 22 | #if (CAR_TYPE==THREE_WHEEL_OMNI) 23 | #include 24 | #include "./src/c_types.h" 25 | #include "./src/debug/c_debug.h" 26 | #include "./src/car/c_car.h" 27 | #include "./src/car/c_3wheel_omni.h" 28 | 29 | 30 | COS_App CarAppList[CARAPPAMOUNT]={ 31 | 32 | }; 33 | 34 | CarType_t Car; 35 | 36 | DCMotor LeftMotor; 37 | DCMotor RightMotor; 38 | 39 | 40 | /***************************************************************************************************** 41 | * @name: 42 | * @brief: 43 | * @params: 44 | * @retval:none 45 | * @author: 46 | *****************************************************************************************************/ 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | #endif /* CAR_TYPE==THREE_WHEEL_OMNI */ 57 | #ifdef _cplusplus 58 | } 59 | #endif 60 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_3wheel_omni.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_3wheel_omni.h 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifndef __C_3WHEEL_OMNI_H_ 19 | #define __C_3WHEEL_OMNI_H_ 20 | #ifdef _cplusplus 21 | extern "C"{ 22 | #endif 23 | #include "c_config.h" 24 | #if (CAR_TYPE==THREE_WHEEL_OMNI) 25 | #include "./src/motor/DCmotor/c_DCMotor.h" 26 | #include "./src/app/c_app.h" 27 | 28 | /********************************************************************************************** 29 | * * 30 | * MACROS * 31 | * * 32 | **********************************************************************************************/ 33 | /* It must correspond to the actual quantity */ 34 | #define CARAPPAMOUNT 5 35 | 36 | 37 | /********************************************************************************************** 38 | * * 39 | * TYPEDEF * 40 | * * 41 | **********************************************************************************************/ 42 | /* avoid cross include */ 43 | typedef struct CarDefinition CarType_t; 44 | 45 | 46 | /********************************************************************************************** 47 | * * 48 | * EXTERN * 49 | * * 50 | **********************************************************************************************/ 51 | /* CarType_t instance declaration */ 52 | extern CarType_t Car; 53 | 54 | /* Wheels declaration */ 55 | extern DCMotor LeftMotor; 56 | extern DCMotor RightMotor; 57 | 58 | /* app list based on car type */ 59 | extern COS_App CarAppList[CARAPPAMOUNT]; 60 | 61 | 62 | 63 | /********************************************************************************************** 64 | * * 65 | * GLOBAL FUNCTION * 66 | * * 67 | **********************************************************************************************/ 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | #endif /* (CAR_TYPE==THREE_WHEEL_OMNI) */ 76 | #ifdef _cplusplus 77 | } 78 | #endif 79 | #endif /* __C_3WHEEL_OMNI_H_ */ 80 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_4wheel_differential.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_4wheel_differential.c 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifdef _cplusplus 19 | extern "C"{ 20 | #endif 21 | #include "c_config.h" 22 | #if (CAR_TYPE==FOUR_WHEEL_DIFFERENTIAL) 23 | #include 24 | #include "./src/c_types.h" 25 | #include "./src/debug/c_debug.h" 26 | #include "./src/car/c_car.h" 27 | #include "./src/car/c_4wheel_differential.h" 28 | 29 | 30 | COS_App CarAppList[CARAPPAMOUNT]={ 31 | 32 | }; 33 | 34 | CarType_t Car; 35 | 36 | DCMotor LeftFrontMotor; 37 | DCMotor LeftRearMotor; 38 | DCMotor RightFrontMotor; 39 | DCMotor RightRearMotor; 40 | 41 | 42 | /***************************************************************************************************** 43 | * @name: 44 | * @brief: 45 | * @params: 46 | * @retval:none 47 | * @author: 48 | *****************************************************************************************************/ 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | #endif /* CAR_TYPE==FOUR_WHEEL_DIFFERENTIAL */ 59 | #ifdef _cplusplus 60 | } 61 | #endif 62 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_4wheel_differential.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_4wheel_differential.h 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifndef __C_4WHEEL_DIFFERENTIAL_H_ 19 | #define __C_4WHEEL_DIFFERENTIAL_H_ 20 | #ifdef _cplusplus 21 | extern "C"{ 22 | #endif 23 | #include "c_config.h" 24 | #if (CAR_TYPE==FOUR_WHEEL_DIFFERENTIAL) 25 | #include "./src/motor/DCmotor/c_DCMotor.h" 26 | #include "./src/app/c_app.h" 27 | 28 | /********************************************************************************************** 29 | * * 30 | * MACROS * 31 | * * 32 | **********************************************************************************************/ 33 | /* It must correspond to the actual quantity */ 34 | #define CARAPPAMOUNT 5 35 | 36 | 37 | /********************************************************************************************** 38 | * * 39 | * TYPEDEF * 40 | * * 41 | **********************************************************************************************/ 42 | /* avoid cross include */ 43 | typedef struct CarDefinition CarType_t; 44 | 45 | 46 | /********************************************************************************************** 47 | * * 48 | * EXTERN * 49 | * * 50 | **********************************************************************************************/ 51 | /* CarType_t instance declaration */ 52 | extern CarType_t Car; 53 | 54 | /* Wheels declaration */ 55 | extern DCMotor LeftFrontMotor; 56 | extern DCMotor LeftRearMotor; 57 | extern DCMotor RightFrontMotor; 58 | extern DCMotor RightRearMotor; 59 | 60 | /* app list based on car type */ 61 | extern COS_App CarAppList[CARAPPAMOUNT]; 62 | 63 | /********************************************************************************************** 64 | * * 65 | * GLOBAL FUNCTION * 66 | * * 67 | **********************************************************************************************/ 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | #endif /* (CAR_TYPE==FOUR_WHEEL_DIFFERENTIAL) */ 79 | #ifdef _cplusplus 80 | } 81 | #endif 82 | #endif /* __C_4WHEEL_DIFFERENTIAL_H_ */ 83 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_4wheel_omni.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_4wheel_omni.c 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifdef _cplusplus 19 | extern "C"{ 20 | #endif 21 | #include "c_config.h" 22 | #if (CAR_TYPE==FOUR_WHEEL_OMNI) 23 | #include 24 | #include "./src/c_types.h" 25 | #include "./src/debug/c_debug.h" 26 | #include "./src/car/c_car.h" 27 | #include "./src/car/c_4wheel_omni.h" 28 | 29 | 30 | COS_App CarAppList[CARAPPAMOUNT]={ 31 | 32 | }; 33 | 34 | CarType_t Car; 35 | 36 | DCMotor FrontMotor; 37 | DCMotor BehindMotor; 38 | DCMotor LeftMotor; 39 | DCMotor RightMotor; 40 | 41 | 42 | /***************************************************************************************************** 43 | * @name: 44 | * @brief: 45 | * @params: 46 | * @retval:none 47 | * @author: 48 | *****************************************************************************************************/ 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | #endif /* CAR_TYPE==FOUR_WHEEL_OMNI */ 59 | #ifdef _cplusplus 60 | } 61 | #endif 62 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_4wheel_omni.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_4wheel_omni.h 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifndef __C_4WHEEL_OMNI_H_ 19 | #define __C_4WHEEL_OMNI_H_ 20 | #ifdef _cplusplus 21 | extern "C"{ 22 | #endif 23 | #include "c_config.h" 24 | #if (CAR_TYPE==FOUR_WHEEL_OMNI) 25 | #include "./src/motor/DCmotor/c_DCMotor.h" 26 | #include "./src/app/c_app.h" 27 | 28 | 29 | /********************************************************************************************** 30 | * * 31 | * MACROS * 32 | * * 33 | **********************************************************************************************/ 34 | /* It must correspond to the actual quantity */ 35 | #define CARAPPAMOUNT 5 36 | 37 | 38 | /********************************************************************************************** 39 | * * 40 | * TYPEDEF * 41 | * * 42 | **********************************************************************************************/ 43 | /* avoid cross include */ 44 | typedef struct CarDefinition CarType_t; 45 | 46 | 47 | 48 | /********************************************************************************************** 49 | * * 50 | * EXTERN * 51 | * * 52 | **********************************************************************************************/ 53 | /* CarType_t instance declaration */ 54 | extern CarType_t Car; 55 | 56 | /* Wheels declaration */ 57 | extern DCMotor FrontMotor; 58 | extern DCMotor BehindMotor; 59 | extern DCMotor LeftMotor; 60 | extern DCMotor RightMotor; 61 | /* app list based on car type */ 62 | extern COS_App CarAppList[CARAPPAMOUNT]; 63 | 64 | /********************************************************************************************** 65 | * * 66 | * GLOBAL FUNCTION * 67 | * * 68 | **********************************************************************************************/ 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | #endif /* (CAR_TYPE==FOUR_WHEEL_OMNI) */ 80 | #ifdef _cplusplus 81 | } 82 | #endif 83 | #endif /* __C_4WHEEL_OMNI_H_ */ 84 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_6wheel_mecanum.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_6wheel_mecanum.c 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifdef _cplusplus 19 | extern "C"{ 20 | #endif 21 | #include "c_config.h" 22 | #if (CAR_TYPE==SIX_WHEEL_MECANUM) 23 | #include 24 | #include "./src/c_types.h" 25 | #include "./src/debug/c_debug.h" 26 | #include "./src/car/c_car.h" 27 | #include "./src/car/c_6wheel_mecanum.h" 28 | 29 | 30 | COS_App CarAppList[CARAPPAMOUNT]={ 31 | 32 | }; 33 | 34 | CarType_t Car; 35 | 36 | DCMotor LeftFrontMotor; 37 | DCMotor LeftMidMotor; 38 | DCMotor LeftRearMotor; 39 | DCMotor RightFrontMotor; 40 | DCMotor RightMidMotor; 41 | DCMotor RightRearMotor; 42 | 43 | 44 | /***************************************************************************************************** 45 | * @name: 46 | * @brief: 47 | * @params: 48 | * @retval:none 49 | * @author: 50 | *****************************************************************************************************/ 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | #endif /* CAR_TYPE==SIX_WHEEL_MECANUM */ 61 | #ifdef _cplusplus 62 | } 63 | #endif 64 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_6wheel_mecanum.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_6wheel_mecanum.h 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifndef __C_6WHEEL_MECANUM_H_ 19 | #define __C_6WHEEL_MECANUM_H_ 20 | #ifdef _cplusplus 21 | extern "C"{ 22 | #endif 23 | #include "c_config.h" 24 | #if (CAR_TYPE==SIX_WHEEL_MECANUM) 25 | #include "./src/motor/DCmotor/c_DCMotor.h" 26 | #include "./src/app/c_app.h" 27 | 28 | 29 | /********************************************************************************************** 30 | * * 31 | * MACROS * 32 | * * 33 | **********************************************************************************************/ 34 | /* It must correspond to the actual quantity */ 35 | #define CARAPPAMOUNT 5 36 | 37 | 38 | /********************************************************************************************** 39 | * * 40 | * TYPEDEF * 41 | * * 42 | **********************************************************************************************/ 43 | /* avoid cross include */ 44 | typedef struct CarDefinition CarType_t; 45 | 46 | 47 | /********************************************************************************************** 48 | * * 49 | * EXTERN * 50 | * * 51 | **********************************************************************************************/ 52 | /* CarType_t instance declaration */ 53 | extern CarType_t Car; 54 | 55 | /* Wheels declaration */ 56 | extern DCMotor LeftFrontMotor; 57 | extern DCMotor LeftMidMotor; 58 | extern DCMotor LeftRearMotor; 59 | extern DCMotor RightFrontMotor; 60 | extern DCMotor RightMidMotor; 61 | extern DCMotor RightRearMotor; 62 | 63 | /* app list based on car type */ 64 | extern COS_App CarAppList[CARAPPAMOUNT]; 65 | 66 | /********************************************************************************************** 67 | * * 68 | * GLOBAL FUNCTION * 69 | * * 70 | **********************************************************************************************/ 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | #endif /* (CAR_TYPE==SIX_WHEEL_MECANUM) */ 82 | #ifdef _cplusplus 83 | } 84 | #endif 85 | #endif /* __C_6WHEEL_MECANUM_H_ */ 86 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_akerman.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_akerman.c 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifdef _cplusplus 19 | extern "C"{ 20 | #endif 21 | #include "c_config.h" 22 | #if (CAR_TYPE==AKERMAN) 23 | #include 24 | #include "./src/c_types.h" 25 | #include "./src/debug/c_debug.h" 26 | #include "./src/car/c_car.h" 27 | #include "./src/car/c_akerman.h" 28 | 29 | 30 | COS_App CarAppList[CARAPPAMOUNT]={ 31 | 32 | }; 33 | 34 | CarType_t Car; 35 | 36 | DCMotor LeftMotor; 37 | DCMotor RightMotor; 38 | 39 | 40 | /***************************************************************************************************** 41 | * @name: 42 | * @brief: 43 | * @params: 44 | * @retval:none 45 | * @author: 46 | *****************************************************************************************************/ 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | #endif /* CAR_TYPE==AKERMAN */ 57 | #ifdef _cplusplus 58 | } 59 | #endif 60 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_akerman.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_akerman.h 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifndef __C_AKERMAN_H_ 19 | #define __C_AKERMAN_H_ 20 | #ifdef _cplusplus 21 | extern "C"{ 22 | #endif 23 | #include "c_config.h" 24 | #if (CAR_TYPE==AKERMAN) 25 | #include "./src/motor/DCmotor/c_DCMotor.h" 26 | #include "./src/app/c_app.h" 27 | 28 | 29 | /********************************************************************************************** 30 | * * 31 | * MACROS * 32 | * * 33 | **********************************************************************************************/ 34 | /* It must correspond to the actual quantity */ 35 | #define CARAPPAMOUNT 5 36 | 37 | 38 | /********************************************************************************************** 39 | * * 40 | * TYPEDEF * 41 | * * 42 | **********************************************************************************************/ 43 | /* avoid cross include */ 44 | typedef struct CarDefinition CarType_t; 45 | 46 | 47 | /********************************************************************************************** 48 | * * 49 | * EXTERN * 50 | * * 51 | **********************************************************************************************/ 52 | /* CarType_t instance declaration */ 53 | extern CarType_t Car; 54 | 55 | /* Wheels declaration */ 56 | extern DCMotor LeftMotor; 57 | extern DCMotor RightMotor; 58 | 59 | /* app list based on car type */ 60 | extern COS_App CarAppList[CARAPPAMOUNT]; 61 | 62 | /********************************************************************************************** 63 | * * 64 | * GLOBAL FUNCTION * 65 | * * 66 | **********************************************************************************************/ 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | #endif /* (CAR_TYPE==AKERMAN) */ 78 | #ifdef _cplusplus 79 | } 80 | #endif 81 | #endif /* __C_AKERMAN_H_ */ 82 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_car.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_car.c 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2022.12.10 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2022.12.10 create v0.1 version. 17 | *****************************************************************************/ 18 | #include 19 | #include "./src/car/c_car.h" 20 | #include "./src/debug/c_debug.h" 21 | #include "./src/communication/c_io.h" 22 | 23 | void CarKernelInit() 24 | { 25 | cosioInit(); 26 | COS_DebugInit(); 27 | } 28 | 29 | 30 | 31 | 32 | /***************************************************************************************************** 33 | * @name: 34 | * @brief: 35 | * @params: 36 | * @retval:none 37 | * @author: Wang Geng Jie 38 | *****************************************************************************************************/ 39 | 40 | 41 | /***************************************************************************************************** 42 | * @name: 43 | * @brief: 44 | * @params: 45 | * @retval:none 46 | * @author: Wang Geng Jie 47 | *****************************************************************************************************/ 48 | 49 | 50 | /***************************************************************************************************** 51 | * @name: 52 | * @brief: 53 | * @params: 54 | * @retval:none 55 | * @author: Wang Geng Jie 56 | *****************************************************************************************************/ 57 | 58 | 59 | /***************************************************************************************************** 60 | * @name: 61 | * @brief: 62 | * @params: 63 | * @retval:none 64 | * @author: Wang Geng Jie 65 | *****************************************************************************************************/ 66 | 67 | 68 | /***************************************************************************************************** 69 | * @name: 70 | * @brief: 71 | * @params: 72 | * @retval:none 73 | * @author: Wang Geng Jie 74 | *****************************************************************************************************/ 75 | 76 | 77 | /***************************************************************************************************** 78 | * @name: 79 | * @brief: 80 | * @params: 81 | * @retval:none 82 | * @author: Wang Geng Jie 83 | *****************************************************************************************************/ 84 | 85 | 86 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/car/c_car.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_car.h 8 | Author: Pansamic 9 | Version: 0.1 10 | Create date: 2022.12.10 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2022.12.10 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifndef __C_CAR_H__ 19 | #define __C_CAR_H__ 20 | #include "./src/c_includes.h" 21 | #include "./src/motor/DCmotor/c_DCmotor.h" 22 | #include "./src/car/c_4wheel_mecanum.h" 23 | 24 | /********************************************************************************************** 25 | * * 26 | * MACROS * 27 | * * 28 | **********************************************************************************************/ 29 | 30 | /********************************************************************************************** 31 | * * 32 | * TYPEDEF * 33 | * * 34 | **********************************************************************************************/ 35 | 36 | 37 | /********************************************************************************************** 38 | * * 39 | * EXTERN * 40 | * * 41 | **********************************************************************************************/ 42 | 43 | 44 | /********************************************************************************************** 45 | * * 46 | * GLOBAL FUNCTION * 47 | * * 48 | **********************************************************************************************/ 49 | void CarKernelInit ( ); 50 | 51 | #endif /*__C_CAR_H__*/ 52 | 53 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/memory/c_memory.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_memory.h 8 | Author: Pansamic 9 | Version: 0.3 10 | Create date: 2022.12.20 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2022.12.20 create v0.1 version. 17 | *****************************************************************************/ 18 | #ifndef __MEMORY_H 19 | #define __MEMORY_H 20 | #include "./src/c_includes.h" 21 | #ifndef NULL 22 | #define NULL 0 23 | #endif 24 | 25 | 26 | 27 | //内存管理控制器 28 | struct _m_mallco_dev 29 | { 30 | void (*init)(void); //初始化 31 | uint8_t (*perused)(void); //内存使用率 32 | uint8_t *membasex; //内存池,管理2个区域的内存 33 | uint16_t *memmapx; //内存管理状态表 34 | uint8_t memrdyx; //内存管理是否就绪 35 | }; 36 | extern struct _m_mallco_dev mallco_dev; //在mallco.c里面定义 ;;这里进行外部声明; 37 | 38 | 39 | 40 | void Mem_Init (void); //内存管理初始化函数(外/内部调用) 41 | uint8_t Mem_GetUsedRate (void); //获得内存使用率(外/内部调用) 42 | void cos_free (void *ptr); //内存释放(外部调用) 43 | void *cos_malloc (uint32_t size); //内存分配(外部调用) 44 | void *cos_realloc (void *ptr,uint32_t size); //重新分配内存(外部调用) 45 | #endif 46 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/motor/DCmotor/controller/c_controller.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_controller.c 8 | Author: Pansamic 9 | Version: 1.0 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v1.0 version. 17 | *****************************************************************************/ 18 | #ifdef __cplusplus 19 | extern "C" { 20 | #endif 21 | #include "./src/debug/c_debug.h" 22 | #include "./src/motor/DCmotor/controller/c_controller.h" 23 | 24 | 25 | 26 | /***************************************************************************************************** 27 | * @name: 28 | * @brief: 29 | * @params: 30 | * @retval:none 31 | * @author: Wang Geng Jie 32 | *****************************************************************************************************/ 33 | void PID_Init(PID_t *PID_instance, float Kp, float Ki, float Kd) 34 | { 35 | /* PID speed controller */ 36 | COS_assert(Kp,warning,"found Kp=0 when initialize PID model."); 37 | COS_assert(Ki,warning,"found Ki=0 when initialize PID model."); 38 | COS_assert(Kd,warning,"found Kd=0 when initialize PID model."); 39 | 40 | PID_instance->Identifier = CONTROLLER_PID; 41 | 42 | PID_instance->BeforeLastVelocityBias = 0; 43 | PID_instance->CurrentVelocityBias = 0; 44 | PID_instance->LastVelocityBias = 0; 45 | 46 | PID_instance->FeedBack = 0; 47 | PID_instance->InputVal = 0; 48 | PID_instance->OutputVal = 0; 49 | 50 | PID_instance->Kp = Kp; 51 | PID_instance->Ki = Ki; 52 | PID_instance->Kd = Kd; 53 | } 54 | 55 | 56 | 57 | /***************************************************************************************************** 58 | * @name: 59 | * @brief: 60 | * @params: 61 | * @retval:none 62 | * @author: Wang Geng Jie 63 | *****************************************************************************************************/ 64 | void PID_Update(void *PID_instance, AngVelocity_t Input, AngVelocity_t Feedback) 65 | { 66 | PID_t *PID_Temp = (PID_t*)PID_instance; 67 | PID_Temp->CurrentVelocityBias = Input - Feedback; 68 | PID_Temp->OutputVal += ((PID_Temp->Kp) *(PID_Temp->CurrentVelocityBias-PID_Temp->LastVelocityBias))+ 69 | ((PID_Temp->Ki) *(PID_Temp->CurrentVelocityBias))+ 70 | ((PID_Temp->Kd) *(PID_Temp->CurrentVelocityBias-2*PID_Temp->LastVelocityBias+PID_Temp->BeforeLastVelocityBias)); 71 | PID_Temp->BeforeLastVelocityBias = PID_Temp->LastVelocityBias; 72 | PID_Temp->LastVelocityBias = PID_Temp->CurrentVelocityBias; 73 | } 74 | 75 | 76 | /***************************************************************************************************** 77 | * @name: 78 | * @brief: 79 | * @params: 80 | * @retval:none 81 | * @author: Wang Geng Jie 82 | *****************************************************************************************************/ 83 | void PID_GetOutVal(void *PID_instance, AngVelocity_t *OutputDst) 84 | { 85 | *OutputDst = ((PID_t*)PID_instance)->OutputVal; 86 | } 87 | 88 | 89 | 90 | 91 | 92 | 93 | #ifdef __cplusplus 94 | } 95 | #endif 96 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/motor/DCmotor/controller/c_controller.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT 3 | UNDER THE TERMS OF THE GNU GPLV3 AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. 4 | 5 | Copyright (C), 2022-2023, pansamic(Wang GengJie) pansamic@foxmail.com 6 | 7 | Filename: c_controller.h 8 | Author: Pansamic 9 | Version: 1.0 10 | Create date: 2023.1.3 11 | Description: 12 | Others: none 13 | 14 | History: 15 | 1. 16 | pansamic 2023.1.3 create v1.0 version. 17 | *****************************************************************************/ 18 | #ifndef __C_CONTROLLER_H__ 19 | #define __C_CONTROLLER_H__ 20 | #ifdef __cplusplus 21 | extern "C" { 22 | #endif 23 | #include "./src/c_includes.h" 24 | 25 | /********************************************************************************************** 26 | * * 27 | * MACROS * 28 | * * 29 | **********************************************************************************************/ 30 | #define CONTROLLER_NONE 0 31 | #define CONTROLLER_PID 1 32 | 33 | 34 | /********************************************************************************************** 35 | * * 36 | * TYPEDEF * 37 | * * 38 | **********************************************************************************************/ 39 | /******************************************************** 40 | * @brief: 41 | * @params: 42 | * 1.Identifier:All controller have, used to identify which controller it is. 43 | * 2.Kp: 44 | * */ 45 | typedef struct PIDControllerDefinition 46 | { 47 | uint8_t Identifier; 48 | float Kp; 49 | float Ki; 50 | float Kd; 51 | AngVelocity_t CurrentVelocityBias; 52 | AngVelocity_t LastVelocityBias; 53 | AngVelocity_t BeforeLastVelocityBias; 54 | AngVelocity_t InputVal; 55 | AngVelocity_t OutputVal; 56 | AngVelocity_t FeedBack; 57 | 58 | }PID_t; 59 | 60 | 61 | /********************************************************************************************** 62 | * * 63 | * GLOBAL FUNCTION * 64 | * * 65 | **********************************************************************************************/ 66 | /* PID controller related */ 67 | void PID_Init ( PID_t *PID_instance, float Kp, float Ki, float Kd); 68 | void PID_Update ( void *PID_instance, AngVelocity_t Input, AngVelocity_t Feedback); 69 | void PID_GetOutVal ( void *PID_instance, AngVelocity_t *OutputDst ); 70 | 71 | 72 | 73 | 74 | #ifdef __cplusplus 75 | } 76 | #endif 77 | #endif /* __C_CONTROLLER_H__ */ 78 | -------------------------------------------------------------------------------- /demo/STM32F407ZGT6_HAL_4WHEEL_MECANUM/CarOS/src/motor/DCmotor/driver/DCMotor_driver.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | Copyright (C), 2022, pansamic(王耕杰 Wang GengJie) pansamic@foxmail.com 3 | FileName: DCmotor_driver.c 4 | Author: pansamic 5 | Version: v0.0 6 | Date: 2023.1.3 7 | Description: 8 | 9 | History: 10 |