mirror of
https://github.com/goldenfishs/MRobot.git
synced 2025-06-14 22:16:38 +08:00
3.8 KiB
3.8 KiB
嵌入式 代码
软件功能介绍
中心思想:
- 利用好RTOS和中断,释放CPU性能,保证实时性。
- 一个项目适配不同型号的机器人和不同的操作手。
减少维护的工作量,减少出错的可能性。
依赖&环境
- Windows平台下用CubeMX生成项目,然后用Keil uvesrion进行编辑、烧写和调试。
使用说明
-
环境安装
- MDK-ARM (必备)
- STM32CubeMX (可选)
-
针对不同板子需要到不同的CubeMX工程文件(DevA.ioc、DevC.ioc)。
-
(可选)利用CubeMX生成对应的外设初始化代码和Keil工程文件。忽略CAN总线相关错误。
-
每次生成代码后,请利用Git丢弃Middlewares文件夹中的所有改变。原因如下。
- 使用了AC6,与CubeMX默认不匹配,会影响到FreeRTOS的移植。
- 使用了比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的运行容器,也包含通信、姿态解算等 |
系统介绍
硬件系统框图
![]() |
---|
步兵嵌入式硬件框图 |
软件流程图
![]() |
---|
步兵嵌入式硬件框图 |
![]() |
---|
嵌入式程序结构图 |
原理介绍
云台控制原理
![]() |
---|
云台控制原理(与PX类似) |
其他参考文献
-
云台控制参考PX4 Controller Diagrams
-
底盘Mixer和CAN的Control Group参考PX4 Mixing and Actuators
TODO
- 给BSP USB print加保护,允许不同进程的使用。
- 给所有BSP加保护
- device.c里面加上一个Device_Init(),在里面初始化所有mutex
- CAN设备代码优化。消息解析发送方向。
- CAN设备动态初始化,保存好几组配置。
Roadmap
- 在步兵上完成所有功能。