update doc

This commit is contained in:
NeoZng
2022-11-13 21:46:52 +08:00
parent c4dfe8e60b
commit 9908dfd015
19 changed files with 117 additions and 18 deletions

View File

@@ -33,7 +33,7 @@
- TODO
1. 增加SPI和I^2^C的BSP模组以便支持IST384磁力计和Oled显示屏等。
2. 增加segger RTT log的支持方便调试和日志记录
1. 增加和module层的deteck_task配合的蜂鸣器和led闪烁配置。
- 主要功能:实现映射功能。
- 在本框架中BSP层与cube高度耦合对该层的修改往往需要使用cube重新生成工程。该层也是唯一允许直接出现stm32HAL库函数的代码层**在非BSP层编写代码时如需使用HAL_...函数请思考是否有同功能的BSP_...函数**。
- 最简单的(如gpio)仅是对HAL库函数的封装。较为复杂的则会进行一定程度的处理(如can)
@@ -49,11 +49,13 @@
- TODO
1. 添加pub-sub订阅-发布消息机制)的支持,以进一步隔离不同的模块完成封装。
2. 增加错误检测模块(官方例程中的`deteck_task`)。
3. 增加和PC通信协议的支持
4. 增加超级电容模块
5. 增加舵机模块
6. 增加单点激光模块
2. 增加模块离线/错误检测模块(官方例程中的`deteck_task`)。
3. 增加超级电容模块
4. 增加步进电机模块
5. 增加双板CAN通信模块
6. 增加裁判系统接收、多机通信、UI绘制模块
7. 增加舵机模块
8. 增加单点激光模块
- 主要功能:实现对设备的封装
@@ -88,8 +90,9 @@ Module层主要存放的是类型定义和实例指针数组在该层没有
- TODO
1. 完成麦克纳姆轮/全向轮底盘的功能
2. 完成发射模块
3. 完成云台控制模块
2. 完成发射应用
3. 完成云台控制应用
4. 增加机器人整车控制应用
- 主要功能:实现机器人的控制
在完成BSP层和Module层后如果在APP层没有控制代码则代码并无实际功能。换言之BSP层与Module层的存在是为了APP层更简单、更合理、更易于扩展和移植。本框架的初始目标即是实现在APP层仅需思考逻辑并用无关硬件的C语言代码实现即可完成整个机器人的控制。所有需要使用的模块和算法都在Module层提供。
@@ -116,7 +119,10 @@ ROOT:.
|
├─.vscode
│ launch.json # 用于VSCode插件CORTEX-DEBUG调试的配置文件
| task.json # 启动编译的任务配置文件
├─assets # markdown存放图片和外链文件夹
|
├─application # 应用层,包括底盘控制,云台控制和发射控制
│ chassis.c
│ chassis.h
@@ -127,6 +133,8 @@ ROOT:.
│ shoot.c
│ shoot.h
│ shoot.md
| robot_cmd.c
| robot_cmd.h
├─bsp # 板级支持包,提供对硬件的封装,将接口暴露给module层
│ bsp.md
@@ -223,6 +231,27 @@ ROOT:.
super_cap.h
```
## BSP和模块介绍
## BSP/Module/Application介绍
在对应模块和板级支持包文件夹下。
在对应应用、模块和板级支持包文件夹下。
## 整体架构
### 软件分层
![image-20221113211942850](assets\framework.png)
### 运行任务
![image-20221113212616636](assets\image-20221113212616636.png)
### 初始化流程
~~~mermaid
graph TD
HAL库初始化 --> BSP初始化 --> Application初始化 --> app调用其拥有模块的初始化 --> 启动操作系统
~~~
**注意,应用初始化不得放入其对应任务中,即使是在死循环前,否则可能导致一些需要定时器的任务初始化异常**
APP会调用其所有的模块的初始化函数注册函数这是因为本框架的设计思想是任何模块在被注册构造/初始化)之前,都是不存在的,当且仅当定义了一个模块结构体(也称实例)的时候,才有一个实体的概念。