增加了文档,修改通信协议,更新了平衡底盘的VMC映射和五连杆解算,修复了双板通信数据结构步对齐的错误

This commit is contained in:
NeoZng
2023-04-14 18:17:46 +08:00
parent 681dce3c90
commit 9e364cbaaa
14 changed files with 225 additions and 97 deletions

View File

@@ -24,6 +24,7 @@
> ***强烈推荐使用VSCode进行开发Ozone进行调试。***
VSCode可通过Cortex-Debug利用OpenOCD进行调试jlink/stlink/dap-link都支持具体的使用方法和环境配置教程在[VSCode+Ozone使用方法](./VSCode+Ozone使用方法.md)中。**请使用UTF-8编码查看\&编辑此项目**。
**此外,本项目中使用到的物理变量值均采用标准单位制**若有特殊需求可以通过module层的`general_def.h`添加物理量转换关系的宏。
- **分层**
@@ -165,11 +166,11 @@ Module层主要存放的是类型定义和实例指针数组在该层没有
务必为模块添加说明文档和使用范例,以及其他需要注意的事项(如果有)。
> **待优化**
> **面向对象小指南**
>
> 由于C语言没有对象的概念对于需要使用通信的module在其.c文件下都需要保存每个实例的指针在收到消息时遍历所有实例指针找到收到消息的实例。这种处理方式可能会导致实时性下降CAN接收时要遍历所有注册了CAN的实例进入module层还需要一次遍历。用C++则可以将对象的this指针和模块的回调函数进行绑定生成一个可调用对象然后再进行CAN的注册使得其不需要module层的遍历。
> 由于C语言没有对象的概念对于需要使用通信的module在其.c文件下都需要保存每个实例的指针在收到消息时(发生回调)遍历所有实例指针,找到收到消息的实例。这种处理方式可能会导致实时性下降,例如CAN接收时要遍历所有注册了CAN的实例进入module层还需要一次遍历。用C++则可以将对象的this指针和模块的回调函数进行绑定生成一个可调用对象然后再进行CAN的注册使得其不需要module层的遍历。
>
> 后续考虑在CAN instance中加入一个额外的`void*`域成员成员变量其内容为module层实例的地址。这样CAN收到消息时只需要遍历所有CAN instance对于相同的模块可以在其回调函数内部获取CAN instance的`void*`指针并通过强制类型转换cast成模块的实例结构体指针类型从而访问特定的模块。
> 考虑在实例中加入一个额外的`void*`域成员成员变量其内容为module层实例的地址。这样CAN收到消息时只需要遍历所有CAN instance对于相同的模块可以在其回调函数内部获取CAN instance的`void*`指针并通过强制类型转换cast成模块的实例结构体指针类型从而访问特定的模块。
> 这实际上是保存“对象”的parent pointer使得实例可以访问拥有自己的实例访问自己的父亲。和回调函数配合就可以防止交叉包含并为底层访问上层内容提供支持。
## APP层(application)
@@ -208,6 +209,7 @@ ROOT:.
│ VSCode+Ozone使用方法.md # 开发环境配置和前置知识介绍
│ 修改HAL配置时文件目录的更改.md # 重新配置CubeMX时的步骤和注意事项
│ 必须做&禁止做.md # 开发必看,规范和要求
| 如何定位bug.md # 开发必看,快速定位bug并进行修复.还提供了一些debug典例
|
├─.vscode
│ launch.json # 调试的配置文件
@@ -217,7 +219,12 @@ ROOT:.
├─assets # 说明文档的图片
├─application # 应用层
├─bsp # 板级支持包
─modules # 模块层
─modules # 模块层
|
├─Src #hal生成的外设初始化源文件
├─Inc #hal生成的外设初始化头文件
├─Drivers #hal driver和cmsis drivers
└─Middlewares # STusb ext , rtos , segger rtt等
```
## BSP/Module/Application介绍
@@ -232,7 +239,7 @@ ROOT:.
### 运行任务
![image-20221201144336613](assets/image-20221201144336613.png)
![image-20230413195155471](assets/image-20230413195155471.png)
### 初始化流程