ACE Embedded Common Framework 电控通用框架,hal库only
首次使用需要clone大的仓库到你的工程,然后更新子模块,在keil添加好路径即可。
git clone https://github.com/DGUT-ACE-EMBEDDED/ACE-ECF.git
cd /ACE-ECF
git submodule update --init --recursive --remote
在Inc里面,会有个Config,用于动态调整你的配置
目标:完成所有Bsp编写,完成Control、Algorithm大部分
上线日期:目前打算寒假留校前出,为了能够更好的准备这赛季的代码通用适配
目标:适配ROS、C++面向对象的转移、优化细节、补充更多电控能操作的挽救措施(比如钩子函数)等等
上线日期:2023暑假猛肝
- Bsp
- Dr16
- Can
- Canfifo(是上面can的基础)
- Referee
- Usb_cdc
- Buzzer
- Motor_Encoder
- Control
- Referee (不知道怎么命名,就是裁判系统解码)
- (不知道怎么命名,就是板间通讯,不过这个建议就分兵种吧
- (遥控器数据处理,不知道你们有没有,工程有
- Algorithm
- PID
- fifo(这边可能用的是官方开源的,到时候你们可能要做一下适配或者直接cv官方
- filter(可以再细分,看你们意愿
- maths
第一个版本还是以C板为开发板,具体配置看各个功能的readme
注意!我们开发都是以子模块写完之后,push,之后在到大的仓库去更新子模块,再push,不会在大的仓库上改的。
子模块设置(Git Submodule操作)_代码托管 CodeHub_用户指南_云端仓库管理_仓库管理_华为云 (huaweicloud.com)
Git submodule 子模块的管理和使用 - 简书 (jianshu.com)
更新子模块只需两步。
- 子模块本地文件更新(子模块的main分支要先更新),
git submodule update --remote --recursive
- 子模块本地更新到云端,在github desktop 中commit、push
以Bsp为例,可以看我们大的文件夹ECF里有个ECF_BspConfig.h,这个是对我们bsp的配置文件
配置文件可以参考各大框架(比如说FreeRTOS、hal库、espidf
这里我以espidf的为例
这是他们的sdkconfig.h文件,命名规范是前面Config,后面就是具体的宏定义了。
具体到各个板间支持,比如说dr16,第一个就是全局开关,同时可以判断这个功能有没有开启
如果定义为0则.c下面的全无
第二个是各个板子的串口有差异,需要定义串口的句柄
我的c文件里就直接用宏定义了
还有其他类型的宏定义
其余的你们可以自己发挥,C和C++也不一样,可以参考其他大学开源或者开源库
- Inc是头文件
- Src是源文件
- README 文件介绍
- ChangeLog 更新日志
C的大致包含:
-
Doxygen文档说明
-
#ifndef __文件名字大写_H #define __文件名字大写_H
-
包含其他头文件include
-
宏定义
-
数据结构部分
比如结构体、枚举、变量等等
-
函数声明(不知道为什么别人喜欢加extern,我们也加
-
Doxygen文档说明
-
包含其他头文件include或者各种声明
-
宏定义
-
数据结构部分
比如变量等等的声明
-
函数
-
反正按平时喜欢那种就差不多了
各个模块关系平行,每个模块的说明都从一个二号标题开始
需要包含的内容:
- 如何使用此模块?
- 开启什么什么外设,cube那边怎么设置,包含截图
- 如果需要扔进it中断什么的,也说明
- 该模块的宏定义如何设置?
- 结构体介绍
- 函数介绍,如何使用?
- 版本更新后如何迁移?(你们有可能改函数名或者结构体的嘛
- 未完待续(你们补充捏,到时候改一下merge就行
各个模块关系平行,每个模块的说明都从一个二号标题开始
需要包含的内容:
- 三号标题日期 + 待办事项复选框
- 已经修复的bug复选框
- 我感觉我这个逻辑可能有点问题,到时候再改
example:
/************************** Dongguan-University of Technology -ACE**************************
* @file bsp_can_fifo.h
* @brief
* @author pansyhou侯文辉 ([email protected])
* @version 1.0
* @date 2022-07-24
*
*
* @history
* <table>
* Date Version Author Description
* 2022-07-24 1.0 侯文辉
* @verbatim
* ==============================================================================
* 文件内容捏 可以做介绍,函数、结构体那些、如何使用、如何理解
* ==============================================================================
* @endverbatim
************************** Dongguan-University of Technology -ACE***************************/
vscode doxygen配置文件(以我为例
"doxdocgen.c.firstLine": "/************************** Dongguan-University of Technology -ACE**************************",
"doxdocgen.c.lastLine": "************************** Dongguan-University of Technology -ACE***************************/",
"doxdocgen.generic.authorEmail": "[email protected]",
"doxdocgen.generic.authorName": "pansyhou侯文辉",
// Doxygen documentation generator set
// 文件注释:自定义模块,这里我添加一个修改日志
"doxdocgen.file.customTag": [
"@history",
"<table>",
"Date Version Author Description",
"{date} 1.0 侯文辉 ",
"@verbatim ",
"==============================================================================",
"==============================================================================",
"@endverbatim",
],
// 文件注释的组成及其排序
"doxdocgen.file.fileOrder": [
"file", // @file
"brief", // @brief 简介
"author", // 作者
"version", // 版本
"date", // 日期
"empty", // 空行
"empty",
"custom" // 自定义
],
// 下面时设置上面标签tag的具体信息
"doxdocgen.file.fileTemplate": "@file {name}",
"doxdocgen.file.versionTag": "@version 1.0",
"doxdocgen.generic.authorTag": "@author {author} ({email})",
// 日期格式与模板
"doxdocgen.generic.dateFormat": "YYYY-MM-DD",
"doxdocgen.generic.dateTemplate": "@date {date}",
其实按我们平时正常来就好,有问题就下个版本大改
主要在函数和变量命名规范上。
函数能学hal库的学hal库
HAL_GPIO_功能....
大概是以ECF+外设+功能
很好的问题
你先下好github desktop
然后clone你要编写的子仓库
改完之后,理论上应该是push?我也没试过多人协作,先试试呗
然后我这边merge还是怎样就能更新了。
目前是由我pansy来负责大版本的更新,其实你们也可以自己在子模块慢慢写。
我们开发的时候尽量看一些开源,不要自己硬想,比如有我们的robomaster icra的,还有官方standrobot,里面都很值得参考一下的。
主要开发分支都在main,后期出V1之后会单独把V1开出来一个新的分支,后面要是V1分支有问题那就在那小修小补出V1.1之类的补丁版本,分出来后记得发布一次release。