Skip to content

Specific-Cola/ec-cpp-library

 
 

Repository files navigation

RM EC C++ Library [WIP]

build clang-format Check docs CodeFactor

使用C++编写的电控库,统一所有车的底层代码和少量通用业务代码。目前只支持大疆C板和YCMC-H7A开发板。

项目基于C++17/C11标准,遵守Google C++ Style Guide[中文] 。推荐使用clang-format自动格式化代码。CI系统会检查代码是否符合规范,style check失败可参考action输出结果加以修改。

NOTE: 由于使用了ARM GCC/Clang编译器的一些特性和较新版本的C/C++标准,所以不保证在Keil的AC5/AC6编译器上能够正常编译。

文档

文档可以自行使用Doxygen构建,也可以在这里查看。

doxygen ./Doxyfile

正确构建后,文档会被放在docs/文件夹下。

项目结构/开发进度

打钩表示已完成可以使用,空格表示未完成

  • stm32cube_template/:CI构建用的空白工程

  • examples/:例程

  • unittest/:单元测试

  • src/

    • bsp/:板级支持包

      • common/:各个平台间通用的实现
      • dji_devboard_c/:大疆C板
      • ycmc_h7a/:YCMC-H7A开发板
    • components/:组件,指各种设备的抽象封装

      • motor/:电机
        • dji_motor.cc/.hpp:大疆电机
        • unitree_motor.cc/.h:宇树电机
      • rc/:遥控器/接收机
        • dr16.cc/.h:大疆DR16接收机
      • sensor/:传感器
    • hal/:基于HAL库的进一步封装(计划重构去掉这一部分,并入bsp)

    • modules/:模块,指软件功能模块

      • algorithm/
        • mecanum/:麦轮运动学解算
        • mahony/:Mahony姿态解算
        • pid/:PID控制器
        • utils/:常用工具函数
      • exception/:异常处理
      • pubsub/:发布订阅模块
      • serial_plotter/:串口绘图器

开发环境

以下均为跨平台工具,Windows、Linux上都可用:

使用方法

  1. Clone仓库,把src/文件夹放到某处并添加到编译路径和头文件包含路径中

    若使用CMake构建工程,在CMakeLists.txt中使用add_subdirectory并且链接静态库即可:

    add_subdirectory(<仓库路径>)
    link_libraries(irobotEC)
  2. 在CMakeLists.txt或者工程设置里添加对应开发板芯片的预处理宏定义(一些IDE会自动添加)

    • 大疆C板:#define STM32F407xx
    • YCMC-H7A开发板:#define STM32H723xx
    add_definitions(-DSTM32F407xx)
    # add_definitions(-DSTM32H723xx)
  3. 启用UART、CAN、I2C、SPI的Register Callback功能,在CubeMX中的配置项位置如下图:

  4. 在代码里按需包含头文件(未来计划只用包含一个头文件,目前还没做)

    #include "components/motor/dji_motor.h"
    // #include ...

About

电控C++库

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 98.8%
  • Other 1.2%