MRobot/开发要求.md
2025-05-24 15:33:24 +08:00

106 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 嵌入式 代码
## 软件功能介绍
中心思想:
- 利用好RTOS和中断释放CPU性能保证实时性。
- 一个项目适配不同型号的机器人和不同的操作手。
减少维护的工作量,减少出错的可能性。
## 依赖&环境
- Windows平台下用CubeMX生成项目然后用Keil uvesrion进行编辑、烧写和调试。
## 使用说明
- 环境安装
- [MDK-ARM](https://www.keil.com/) (必备)
- [STM32CubeMX](https://www.st.com/zh/development-tools/stm32cubemx.html) (可选)
- 针对不同板子需要到不同的CubeMX工程文件DevA.ioc、DevC.ioc
- 可选利用CubeMX生成对应的外设初始化代码和Keil工程文件。忽略CAN总线相关错误。
- 每次生成代码后请利用Git丢弃Middlewares文件夹中的所有改变。原因如下。
1. 使用了AC6与CubeMX默认不匹配会影响到FreeRTOS的移植。
2. 使用了比CubeMX更新的FreeRTOS版本降版本会导致部分代码无法编译。
- 因为已经生成过Keil工程文件所以只会覆盖以前生成的代码而不会影响手写的代码。
- 每次生成代码后请在HAL_InitTick函数中添加uwTickPrio = TickPriority;
- 打开MDK-ARM中的DevC.uvprojx即可进行编辑、烧写或调试。
- Keil工程中有两个Target其中Debug用来调试不包含编译器优化等DevC/DevA用来编译输出最终固件。
## 文件目录结构&文件用途说明
| 文件夹 | 来源 | 内容 |
| ---- | ---- | ---- |
| Core | CubeMX | 包含核心代码,外设初始化,系统初始化等 |
| Doc | 开发者 | 文档 |
| Drivers | CubeMX | CMSIS相关库、STM32 HAL |
| Image | 开发者 | 图片 |
| MDK-ARM | CubeMX | Keil uversion 项目相关文件 |
| Middlewares | 开发者 / CubeMX | 中间件 |
| USB_DEVICE | CubeMX | USB相关文件 |
| User | 开发者 | 手动编写的代码 |
| Utils | 开发者 | 使用到的工具如CubeMonitor, Matlab |
| User内 | 内容 |
| ---- | ---- |
| bsp | 文件夹内包含开发板信息基于STM32 HAL对板载的外设进行控制|
| component | 包含各种组件,自成一体,相互依赖,但不依赖于其他文件夹|
| device | 独立于开发板的设备依赖于HAL和bsp|
| module | 对机器人各模块的抽象,各模块一起组成机器人|
| task | 独立的任务module的运行容器也包含通信、姿态解算等 |
## 系统介绍
### 硬件系统框图
| ![步兵嵌入式硬件框图](./Image/步兵嵌入式硬件框图.png?raw=true "步兵嵌入式硬件框图") |
|:--:|
| *步兵嵌入式硬件框图* |
### 软件流程图
| ![步兵嵌入式硬件框图](./Image/嵌入式程序流程图.png?raw=true "步兵嵌入式硬件框图") |
|:--:|
| *步兵嵌入式硬件框图* |
| ![嵌入式程序结构图](./Image/嵌入式程序结构图.png?raw=true "嵌入式程序结构图") |
|:--:|
| *嵌入式程序结构图* |
## 原理介绍
### 云台控制原理
| ![云台控制原理与PX类似](./Image/云台控制原理.png?raw=true "嵌入式程序结构图") |
|:--:|
| *云台控制原理与PX类似* |
### 其他参考文献
- 软件架构参考[PX4 Architectural Overview](https://dev.px4.io/master/en/concept/architecture.html)
- 云台控制参考[PX4 Controller Diagrams](https://dev.px4.io/master/en/flight_stack/controller_diagrams.html)
- 底盘Mixer和CAN的Control Group参考[PX4 Mixing and Actuators](https://dev.px4.io/master/en/concept/mixing.html)
## TODO
- 给BSP USB print加保护允许不同进程的使用。
- 给所有BSP加保护
- device.c里面加上一个Device_Init()在里面初始化所有mutex
- CAN设备代码优化。消息解析发送方向。
- CAN设备动态初始化保存好几组配置。
## Roadmap
1. 在步兵上完成所有功能。