diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 19ef38880a45038cb3dbb519dbdc8234b5936934..8cd37953378fe019157df47b67aded913ae17b7c 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -55,7 +55,7 @@ further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at 503578404@qq.com. All +reported by contacting the project team at . All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. @@ -68,9 +68,9 @@ members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html +available at [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 5674f42e12bf84cc4b5569f8824dcc2c6aa2717e..0000000000000000000000000000000000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,76 +0,0 @@ -# 如何贡献代码 - -感谢你阅读此文档,现阶段代码主要由战队队员修改,但是欢迎大家提出意见和建议。此文档主要为指导队员如何提交自己的代码。 - -## 测试 - -现阶段并没有软件测试,所有功能必须在机器人或MCU上测试之后提交。 - -## 提交代码更改 - -请在仓库(Repo)中提交*Pull Request*(*PR*)来提交你的修改。*PR*必须要有清楚的描述。 - -*Commit*的日志必须要清楚地描述改动。小改动允许日志只有一行,但是大的改动最好有多行日志来详细描述。推荐使用*VS Code*内置的工具来操作*Git*。 - -## 风格指南 - -阅读代码和README来了解整个代码的结构。为了更好的可读性: - -* **必须**先阅读[风格指南](Doc/style_guide.md)并严格遵守 - -## 添加新的CLI命令 - -添加到CLI的命令可以说是调试时候使用的,也可以是运行时使用的,也可以是教学时帮助理解的实验。具体可以参考[添加判断字节顺序的实验](https://github.com/qsheeeeen/qdu-robomaster-mcu/commit/150460147dbc4f5b0ad7054c2591e01bba452495)和[FreeRTOS CLI官方教程](https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_CLI/FreeRTOS_Plus_Command_Line_Interface.html)。 - -## 添加新的开发板 - -需要修改的文件夹有`src/bsp`。 - -1. 在`cmake`中添加`board_xxx.cmake`,内容参考其他以`board_`开头的`.cmake`文件 -1. 在`src/bsp`中与现有开发板并列添加一个文件夹。例如`rm_b`(代指RoboMaster开发板B型)。 -1. 参考`bsp`中头文件,在`rm_b`中添加对应的源代码文件。 - * 在头文件中不能实现的功能,需要加宏定义来根据不同的开发板来编译。例如[led.h](./User/bsp/led.h)中针对不同板子定义了不同的LED功能。 - -## 添加新的组件 - -步骤: - -1. 在`src/component`新建一对文件`xx.c`和`xx.h`。 - -## 添加新的设备(传感器、执行器等) - -需要修改的文件夹有`device`。 - -步骤: - -1. 在`src/device`新建一对文件`xx.c`和`xx.h`。 - -注意事项: - -* Device里的设备只能在thread里使用,因为数据的读取需要用到任务同步机制。 - -## 添加新的模块 - -模块是指不同于底盘、发射器、云台的部分机器人机构,例如工程机器人的执行机构。这里假设已经完成所需要的传感器和执行器的添加。 - -1. 在`src/module`添加一对文件`xx.c`和`xx.h`,实现功能的抽象。 -1. 在`src/thread`添加对应的线程运行模块。 - -## 添加任务 - -需要修改的文件夹有`src/thread`。 - -1. 在`thread`新建文件`xx.c`。 -1. 在`thread/user_task.h`中添加任务函数的声明`Thread_Xxxx`。 - -## 注意事项 - -* `vTaskSuspendAll`和`xTaskResumeAll`中间不能有可能导致任务切换的函数,例如操作消息队列。 -* 如果任务不需要运行多个实例,则尽量将任务变量放置到任务函数外。 -* extern 只能用在头文件中,可以修饰变量(这意味着必须在源文件中声明变量,原则上不使用) - ---- - -万分感谢 - -青岛大学 未来战队 diff --git a/README.md b/README.md index bfdb906816bb396d1d2dad2608a8e5bdc138b320..9b5740c7d20e5d68dec56ef0c082173d3bc74413 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ 颠覆传统理念的嵌入式软件开发框架。诞生于Robomaster比赛,但绝不局限于此。
- +

是时候使用现代化的方式来进行嵌入式开发了! @@ -83,7 +83,7 @@

-![嵌入式程序层次图](./doc/image/嵌入式程序层次图.png) +![嵌入式程序层次图](./image/嵌入式程序层次图.png)
@@ -136,11 +136,11 @@ XRobot基本部分是一套开发板与功能模块的管理系统,能够让
-| | | | -| ---------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -| | | | +| | | | +| ------------------------------------------------------ | ------------------------------------------------------- | ------------------------------------------------------- | +| | | | - +
@@ -148,38 +148,42 @@ XRobot基本部分是一套开发板与功能模块的管理系统,能够让 ## 硬件支持 -| MCU | Board | Image | -| ----------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | -| STM32F407IG | [Robomaster C型开发板](https://www.robomaster.com/zh-CN/products/components/general/development-board-type-c/info) | | -| STM32F302CB | [IMU-DEV-BOARD](https://xrobot-org.github.io/1.hardware/3.IMU-DEV.html) | | -| STM32F446RE | [C-Mini](https://xrobot-org.github.io/1.hardware/1.C-MINI.html) | | -| STM32F103 | [F103 CAN](https://xrobot-org.github.io/1.hardware/4.F103_CAN.html) | | -| ESP32-C3 | [ESP32C3-Core](https://xrobot-org.github.io/1.hardware/2.ESP32C3-Core.html) | | -| Linux x86 | [Intel NUC](https://www.intel.cn/content/www/cn/zh/products/details/nuc.html) | | -| Linux arm | [Raspberry pi 4B](https://www.raspberrypi.com/) | | -| Linux arm | [mCore-R818](https://mangopi.org/mcorer818) | | +| MCU | Board | Image | +| ----------- | ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- | +| STM32F407IG | [Robomaster C型开发板](https://www.robomaster.com/zh-CN/products/components/general/development-board-type-c/info) | | +| STM32F302CB | [IMU-DEV-BOARD](https://xrobot-org.github.io/1.hardware/3.IMU-DEV.html) | | +| STM32F446RE | [C-Mini](https://xrobot-org.github.io/1.hardware/1.C-MINI.html) | | +| STM32F103 | [F103 CAN](https://xrobot-org.github.io/1.hardware/4.F103_CAN.html) | | +| ESP32-C3 | [ESP32C3-Core](https://xrobot-org.github.io/1.hardware/2.ESP32C3-Core.html) | | +| Linux x86 | [Intel NUC](https://www.intel.cn/content/www/cn/zh/products/details/nuc.html) | | +| Linux arm | [Raspberry pi 4B](https://www.raspberrypi.com/) | | +| Linux arm | [mCore-R818](https://mangopi.org/mcorer818) | | ## 图片展示 -`VSCode与openOCD联合调试` +`Linux下VSCode与openOCD联合调试` -![VSCode调试界面](./doc/image/调试界面.png?raw=true "VSCode调试界面") +![VSCode调试界面](./image/调试界面.png?raw=true "VSCode调试界面") + +`Windows使用Mingw64原生开发` + +![Windows](./image/windows.png?raw=true "Windows") `Windows11使用CLion在WSL下开发` -![CLion调试界面](./doc/image/clion.png?raw=true "CLion调试界面") +![CLion调试界面](./image/clion.png?raw=true "CLion调试界面") `XRobot作为外部控制器在Webots进行运动学仿真` -![Webots仿真](./doc/image/Webots仿真.png?raw=true "Webots仿真") +![Webots仿真](./image/Webots仿真.png?raw=true "Webots仿真") `利用命令行查看log、校准陀螺仪、监控电机运行数据和机器人参数配置` -![命令行](./doc/image/命令行.png?raw=true "命令行") +![命令行](./image/命令行.png?raw=true "命令行") `自定义UI框架` -![客户端UI](./doc/image/客户端UI.png?raw=true "客户端UI") +![客户端UI](./image/客户端UI.png?raw=true "客户端UI") ## 相关依赖 diff --git a/doc/check_in.md b/doc/check_in.md deleted file mode 100644 index 060e31125b067039c5a0bf13e7e689433f2f5e79..0000000000000000000000000000000000000000 --- a/doc/check_in.md +++ /dev/null @@ -1,47 +0,0 @@ -# 2021年高校联盟赛(山东站)检录 - -## 检录区照片(顺序为从右向左) - -| ![检录区1](../Image/RMUL2021检录1.jpg?raw=true "检录区1") | -|:--:| -| *检录区1* | - -| ![检录区2](../Image/RMUL2021检录2.jpg?raw=true "检录区2") | -|:--:| -| *检录区2* | - -## 检录项目 - -### 称重及检测长宽高 - -机器人最大重量及长宽高不超过机器人制作规范允许范围。本项目过后由参赛队伍对机器人上电,由工作人员贴PASS卡。 - -### 设置ID - -机器人上电后,由工作人员对机器人ID及装甲板ID进行设置。 - -### 电源管理模块及电容检查 - -检测电源管理模块工作是否正常(参赛队伍要确定能露出指示灯方便检录)。 - -检查电容是否安全(是否有保护)。 - -### 固件版本检测 - -工作人员将主控模块通过USB连接到电脑,检查裁判系统固件版本。 - -### 外观检测 - -主要检测徽标是否符合规定,装甲板贴纸,外观反光度等等(没有专业设备,只是用眼看) - -### 连接服务器检测 - -由操作手手动连接检录WIFI - -* 工作人员用服务器分别给机器人的底盘、云台、发射器模块断电以及整体杀死,查看相应模块是否断电。 -* 功率检测。顶住机器人,油门推最大,由工作人员通过服务器查看功率是否正常(可以利用缓冲能量,只要不扣血就行)。 -* 发弹检测。发出至少一发子弹,检测是否超射速。 - -### 图传检测 - -操作手刷RFID卡后,机器人自动连接图传,由工作人员查看并移动云台查看是否工作正常。 diff --git a/doc/dev.md b/doc/dev.md deleted file mode 100644 index a9f6d03a9951b27a480062dd2ea3f8222b67edff..0000000000000000000000000000000000000000 --- a/doc/dev.md +++ /dev/null @@ -1,14 +0,0 @@ -# 开发步骤 - -## 桌面机器人 - -研发早期会遇到机械组进队落后的问题,导致没有实体机器人调试的问题。 -此时则使用“桌面机器人”的方式进行开发。此方法也是适用于新功能的验证。 - -桌面机器人只保留机器人的电路部分和最基础的机械部分(如简易云台)来进行开发。 - -![桌面机器人](./Image/桌面机器人.png "桌面机器人") - -## 实体机器人 - -未完待续 diff --git "a/doc/diag/\344\272\221\345\217\260\346\216\247\345\210\266\345\216\237\347\220\206.drawio" "b/doc/diag/\344\272\221\345\217\260\346\216\247\345\210\266\345\216\237\347\220\206.drawio" deleted file mode 100644 index ccca04569de285363fc00c09ce32cd33bc6580d1..0000000000000000000000000000000000000000 --- "a/doc/diag/\344\272\221\345\217\260\346\216\247\345\210\266\345\216\237\347\220\206.drawio" +++ /dev/null @@ -1 +0,0 @@ -7VlZc9owEP41emzHB74ebTBpOslMZjKdhKeOsIXtVliMEQH667uy5QsTriEU2uYl2k+ra/fb1cogvT9d3WV4Fj+ykFCkKeEK6QOkaaqi2/BPIOsC6TlOAURZEkqlGnhOfpFypEQXSUjmLUXOGOXJrA0GLE1JwFsYzjK2bKtNGG2vOsMR6QDPAaZd9CUJeVygtmbV+BeSRHG5smrK801xqSxPMo9xyJYNSPeR3s8Y40VruuoTKoxX2qUYN3ynt9pYRlJ+yIDU+P4yvjMon/hMCR37a280+aSacnN8XZ6YhGAAKbKMxyxiKaZ+jXoZW6QhEdMqINU6D4zNAFQB/EE4X0tv4gVnAMV8SmUvWSX8VQz/bEhpJCcT7cGqKaxLIeXZ+rWcQAijegYh1sNyqRw3SSjtM8qy/HR6iIk9CQCf84z9JI0eM7DJeAI9XcNKW8/ZIgvILmtKV3OcRYTvUjQKRWHrxhLScXeETQmcARQyQjFP3tpkxJLTUaVXux0a0vPHsEDu+w3ThVzq/vFbhxm134UPlnHCyfMM5xZZQvS3fRzieVzpvm/sDfcM879dTngjGSernUaTvZoijyVTj+5IeVkHsmpLLG4EsaV8kJ17HTMj30auhRxoOAj24gyRbyDPRa6JfMA95PrIN5GrINsSXaDj9f9kzKrNiK3id0/MKsfFLMVjQp/YPOEJSwELoJsAQzzh/ASS88OGAheH8DBNoq3qruwYM87Z9MJJQTswJ+hXlRK0DlWfkGZSOIA3zqAViVaDvRVpTWT7AhRctZHXvV+OyiJndNThiUNV24lDNbuJw9mSN1T9oxKH3vXG/WCnP7rZ5C9wTGX1q3GMsSujn5LI09AVVavIYhTP50mwkYX/gYy6N1NqB2bKBiuMLawosYMTqlzhiSWw44qUepuTMG97huKCkIOa9fnGPBvcrl5A5TyFWTrz5LStDn06k50tTAbe9pBnCN46fUFm4LbnI0fPCWzlyMlMPqGeuCUW760LDr3vL8NirbdRLGvKaTTuGXvi4YN5rKpbiAwkdUXq3XIt2iIxu2qHvzdwG26UKT2lexuaOxhz/mfkke8b8MoQ2QPRBSIUJdfwvjnpm0TjAh41b+pr+CZxm++PctstLjnIyVkEpHL8/PaB6wkqK/cGo1dXjCuLXuugWvZ/0F4iaI0zl8IXCtptzyFDUMgb5g9QePyoklSuLupLuHsd6wajV9XeKZca0Wud59MiiPWPBEWVVP/Uovu/AQ== \ No newline at end of file diff --git "a/doc/diag/\345\212\237\347\216\207\351\231\220\345\210\266\346\216\247\345\210\266\346\265\201\347\250\213.drawio" "b/doc/diag/\345\212\237\347\216\207\351\231\220\345\210\266\346\216\247\345\210\266\346\265\201\347\250\213.drawio" deleted file mode 100644 index 02368b169baacc6ee2acdd7e2e5889850860294d..0000000000000000000000000000000000000000 --- "a/doc/diag/\345\212\237\347\216\207\351\231\220\345\210\266\346\216\247\345\210\266\346\265\201\347\250\213.drawio" +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git "a/doc/diag/\345\223\250\345\205\265\345\265\214\345\205\245\345\274\217\347\241\254\344\273\266\346\241\206\345\233\276.drawio" "b/doc/diag/\345\223\250\345\205\265\345\265\214\345\205\245\345\274\217\347\241\254\344\273\266\346\241\206\345\233\276.drawio" deleted file mode 100644 index 1be1f27c12b65e1919fa37c9e72e3afcbf0d0f83..0000000000000000000000000000000000000000 --- "a/doc/diag/\345\223\250\345\205\265\345\265\214\345\205\245\345\274\217\347\241\254\344\273\266\346\241\206\345\233\276.drawio" +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git "a/doc/diag/\345\265\214\345\205\245\345\274\217\347\250\213\345\272\217\345\261\202\346\254\241\345\233\276.drawio" "b/doc/diag/\345\265\214\345\205\245\345\274\217\347\250\213\345\272\217\345\261\202\346\254\241\345\233\276.drawio" deleted file mode 100644 index d8765b857338d2a5f8b3aad2286475710a4fd39d..0000000000000000000000000000000000000000 --- "a/doc/diag/\345\265\214\345\205\245\345\274\217\347\250\213\345\272\217\345\261\202\346\254\241\345\233\276.drawio" +++ /dev/null @@ -1 +0,0 @@ -zZpdk6I4FIZ/TS7bgoSPeCnodLvVH07rztZedSEEyQwSC7DV/vUbFBRJurZnFINeCCcEyXPenHMSBchdbu9TbxU9sYDEAGrBFqAhgFDXoMU/CsvuYDH7xsGwSGlQXnQyTOkHqXqW1jUNSHZ2Yc5YnNPVudFnSUL8/MzmpSnbnF8Wsvj8W1feggiGqe/FovUfGuTRwYqhfbI/ELqIqm/Wrf6hZelVF5cjySIvYJuaCY0AclPG8sPRcuuSuIBXcTn0+/ZJ6/HBUpLkX+nwo/8d/9y9vVuxkVpRqD8/bdw7vXzady9elyMGIxs4DsAGGBnFgVN6MMt3FZSUrZOAFPfVAHI2Ec3JdOX5ReuGy4DbonwZ8zOdH4Y0jl0Ws3TfF4VhCH2f27M8Zb9IrSWw5pZp8RYvpouE22IS8pE54kDLsb+TNCfbmqkc+D1hS5KnO35J1WqVTihVCHF5vjn59Ci5qO7PynteqaPF8d4n1PygpP0b5KuJcUYeg8EIOCMwMsHAANi+jHyDo+AIYn3iCLs/17TrkEfwC+SxhDxuC7yuS8BbYMDZ6wX4/hD0LwTfJI19Iic9x6ZhareRPBTBG4YEvNkaeCiCh1ZcjDfiY7EW+5Hz6MNdgZ3CFc4A4G/7Ax3gg5fcyktOMU/K7vxxancojaumYZ42Lbxf7aqGxznn/Nyt5+5LWEIavi5NGRcGTRbcYJ7OZoyLZHgHP5MP464N432CiGgQEK4G51x0lUZ8LgqSXkclx2m2q/KXqBK9L1GJ0ZpKDIlKrjgZA4/gUDoZLR+TedjKZEQNzMiWREF4y8mIBcqvs5fpZaSvAMrUGqAk6UImR9SaHJEA6mHwqJwTwv3/56TfkpMmcHKmkzbrl8AkODBkExnDObKs64A2GvULkqRRXVa/tBcgTYH0dDK+jHRAU754oqygnbF1MbCrwDMb8JCkBpGwa63o1sWi+34yflE+nYWwpxoUFKfzZDxUzgk2BHXMBTVO5i3TAxQXE+6rq5zTsWTrDCex9n+iW17Fdo0UgqZiUmJ436+J9GLt086OjFm8pRXx/lX0YElesx9e7ZTGhiT0SUvj9jwg1sbO01jDWLlY0R+Gv/bShLh9OHzVL5TnFUAZWr9ndgsVEjPqy+NIfUo1bL2H7I6xErPq4OFV/eq0WX4oTxZITKuP3jrxow5k1ubWEpQEdvumsMSl/D1dzr1YPSqta6jETTg38rKMZspZoea+tnJWYsE287Jfl4Hq4i8Ix3NlvyAgcfk+yHPKLSQrPlRP4+ZmumSX97bStMVp/HjhVlEL4U49J7Hid/O06NbVqKcemVj5l8g6klOPkakrxKrnqRHr9XrKOZmwa5wkW2osCelCOaqmpJSXHoZY/ndCUl3b9jfEcrYTnFBDT6rX3YZYynaBk7BHKylE21p2f1/O/p4Nbc0bRT/YmGaLt79Wd5IIxYetGlMzkt8yPP3UbLp+e4j+zfHEeV6/rMYfH3eSReTg+RqYBCYScl/eRJX9onulWcdPT//v3LfV/iWLRv8B \ No newline at end of file diff --git "a/doc/diag/\345\265\214\345\205\245\345\274\217\347\250\213\345\272\217\346\225\260\346\215\256\346\265\201\345\220\221\345\233\276.drawio" "b/doc/diag/\345\265\214\345\205\245\345\274\217\347\250\213\345\272\217\346\225\260\346\215\256\346\265\201\345\220\221\345\233\276.drawio" deleted file mode 100644 index a2bf0862a8b24927b9005f10742a4cf57a80df6b..0000000000000000000000000000000000000000 --- "a/doc/diag/\345\265\214\345\205\245\345\274\217\347\250\213\345\272\217\346\225\260\346\215\256\346\265\201\345\220\221\345\233\276.drawio" +++ /dev/null @@ -1 +0,0 @@ -7VlZb6MwEP41fmzFZY7HHLR92EpVs1LbR2+YgHcdHBnn6q9fA6ZAaKN0lVWg6lM83xzgmfkmI4HsyXJ3K8gquecRMGQZ0Q7ZU2RZpmG56idH9iWCA6cEYkEjbVQDM/oKladG1zSCrGUoOWeSrtrgnKcpzGULI0LwbdtswVn7qSsSQweYzQnrok80kkmJ+pZX43dA46R6sukGpWZJKmN9kywhEd82IDtE9kRwLsvTcjcBlievykvpd/OB9u3FBKTyFIdtCsHjq8MeRh675U/3m0X0eqVfNpP76sIQqftrkQuZ8JinhIU1OhZ8nUaQRzWUVNv84HylQFOBv0HKvS4mWUuuoEQumdbCjsrnxvklD3WNtTTd6ciFsK+EVIr9c1NoeOVi7VZIld+CMjbhjIvidnZEwF/MFZ5Jwf9AQ+POffi1UJpuXnWqM74WcziSzKo/iYhBHrGzSrs8040H6KrdAl+CuoEyEMCIpJt2JxLd0PGbXV1zddBl/0QLmP4le6Cu+0tD8/V7wO5XD5RxN4St9ZNmkGYqLYedUdc9L9U2oRJmK1JkZKv+ANo1PmPeNyAk7I5mSmt9PW71/82bvK2nt1mN5KQxuV3jf+XW6GSx9/yqKfXSYtTl+WUNkl9Wh18jKalcR6DQMJNUbQuDZJtl945uZieN3yvNP9PNPpFuTq/oZh+j24SrbHLG4CvwzfYuzjfrm2/n45tzIt9wr/jmdPh2T3eD5Jft941fuDvL5nI90HUBO31Lr2n3Zzs3Thxf7e3c7NH4cge5nbsdik34cknSaIAMO1wQHPfiDHO+GXY+hnknMsztFcO8DsMeJ1+AXBg71/jS9MKDo5eJert/+4Okl9+h1x3P5AAJdrh+Y3xxenWXA2S5TObJUndx4/yEQhcFGI2N/OBP0SjMD2OMfBOFGAUGCsrDGI3Dyl29TiOCBld1SOV9gwLv4dlBYYBGNgqKqH6IRp6OOrqpzMxG1DrGYQOoKsh2ldvVTHkKB6XXUKb6hKaxAnAt/SyGxZVlfNBNXBV+wYpvngmNIkg7k+ccMzlot4wZvLPwBO+0jPf5llFi/b220DW+etvhXw== \ No newline at end of file diff --git "a/doc/diag/\346\255\245\345\205\265\345\265\214\345\205\245\345\274\217\347\241\254\344\273\266\346\241\206\345\233\276.drawio" "b/doc/diag/\346\255\245\345\205\265\345\265\214\345\205\245\345\274\217\347\241\254\344\273\266\346\241\206\345\233\276.drawio" deleted file mode 100644 index 9afb78c3f4b6c5035fe14685922f1fa0cd190117..0000000000000000000000000000000000000000 --- "a/doc/diag/\346\255\245\345\205\265\345\265\214\345\205\245\345\274\217\347\241\254\344\273\266\346\241\206\345\233\276.drawio" +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git "a/doc/diag/\347\224\265\345\256\271\346\216\247\345\210\266\346\265\201\347\250\213.drawio" "b/doc/diag/\347\224\265\345\256\271\346\216\247\345\210\266\346\265\201\347\250\213.drawio" deleted file mode 100644 index b2bbf5cffd22a5a0f5939dd534a765e16794e797..0000000000000000000000000000000000000000 --- "a/doc/diag/\347\224\265\345\256\271\346\216\247\345\210\266\346\265\201\347\250\213.drawio" +++ /dev/null @@ -1 +0,0 @@ -5Vptc5s4EP41+pgOQiDgI9jkOtNmrjO5zjX9xhnV5ootF8txfL/+JBBghOw4NS92O+NJ0CIsaffZ3WcXAzRZvvyRRevFA41JCkwjfgFoCkwTIsvi/4RkX0hcbBaCeZbEclIteEz+I1JoSOk2icmmMZFRmrJk3RTO6GpFZqwhi7KM7prTvtG0ueo6mpOW4HEWpW3p30nMFvIUplPL35NkvihXhtgr7iyjcrI8yWYRxXR3IEIhQJOMUlZcLV8mJBXKK/VSPHd/5G61sYys2DkPfP5ytwl/YPYBvX+C2wd39/AXvJPGeI7SrTyw3CzblxogMVeIHNKMLeicrqI0rKVBRrermIhlDD6q53ykdM2FkAv/JYztpXWjLaNctGDLVN4t1hQLHT2bFG3oNpvJWbvvH6frp/hPYxLCH5+n0ddPH8K7EiNRNifsxMFhZQEOXUKXhGV7/lxG0oglz819RBJD82perWZ+ITWt1/qpTR5qPbRBMAGuIS58B7hByw61loXKdouEkcd1lCtjx31Pp1GNAp9JxsjLgaitA3nXciRwpeeWON7VbgBL2eLABbDRk9acK8KqRrOHkNPuH2thfgEG5aOfaMK3UtnNtJp2Q4ZikMKH5FOKTapt/LyZvBs3kzuMmSqzlGZS/aZnM1maGISBj/IYhEFgixgUOsCzxDWPSm6ojUoLuvxnuxkkIqnIrsavhaRKeElM0qYRdwxscw1m+y/y+XzwJAbv7HI4fTm8Od3LUYdpFp+ZZlEvvgMV37Etu/kVxb5avuNnWbQ/mLYWEzbnr4NNW0FM8Y2dOibWOKYL/BAEYU4OQuD5IORe6YLAzx0z/9Suyr2Yz4clpbhvQXQA7qA4qjMgd9DiUBPtbpvnugM54EWMzX0rlAMH+HYumQJvchVQVrFsnZt0nL54MNSVD7nKeIpWFcRPyZo62bCMficTmtKMS1Z0JaD9LUlTRRSlyXzFhzOuO8LlgdBZwitjX95YJnGc+4XOCE1f6cAO0MHNmOK27WBpzNBF6tebQVM7c8B6HLBtnP4yZqhoapkSjZHNYF5TaP+ZSH52YWIibf4YK7ibujCUgz8IclpyDzwsaAmP3B7KJbysyDsd3HW5kF94JnDzC9cH3r2YLKoMB4Qe8Pgn74a4PDngMTgMtpuBH9ntwI+GbIBI9nnDUO8cwUdqa/xKC+RIfdAVhS/P+QrxccVQuoadE5+WI4wAe7XtNzp3h/YYKK+L7LqufgKHZXWXRfbxHvUZicHqx4mU4heqBu6oyD62TldFtv69h6bKvpmC8Fyw6E9uD0QaTu2yERgPeowiQno1ixYMwQA+zi8mohYUdMIHQZtgv7EP2YqHGqWfCJFuE7FQEyINqx0ioZqHOtOrd00hEg4XItGZIXIwqqxHvTGqeSAYoE18mXn66RNjV+WB/fSJ1RTmqK/iX9nXW+eX6/WaIo9wWARcKMsy38rjMcoLPkf8FdT1yoO3aZnvmoWdjTWFXUk6h3mNpG3pecAPhC5VbV1TL+kiUyCowHrAlp7eDDrMlzD+bcyAvbY/DGoGXUvvJjqrl7FKpLBKPLI3mO32w+9BKss+W+8/ItNne9tUOjCon8JbZRUluo6xEBudnN9Toa7peWpaaTxIB/IdYs/NtYt8HCumrfrHozXXTN072l8+5bWgrPlxY0exlg/r3/gWXlH/UhqF/wM= \ No newline at end of file diff --git "a/doc/image/RMUL2021\346\243\200\345\275\2251.jpg" "b/doc/image/RMUL2021\346\243\200\345\275\2251.jpg" deleted file mode 100644 index e6b0ea2eebf19c10bc91bd55926256d1059a9afe..0000000000000000000000000000000000000000 Binary files "a/doc/image/RMUL2021\346\243\200\345\275\2251.jpg" and /dev/null differ diff --git "a/doc/image/RMUL2021\346\243\200\345\275\2252.jpg" "b/doc/image/RMUL2021\346\243\200\345\275\2252.jpg" deleted file mode 100644 index 0e3e6f104bdd0d1bad8aec0756375a8a83531224..0000000000000000000000000000000000000000 Binary files "a/doc/image/RMUL2021\346\243\200\345\275\2252.jpg" and /dev/null differ diff --git "a/doc/image/VSCode\347\274\226\350\257\221\345\233\272\344\273\266.png" "b/doc/image/VSCode\347\274\226\350\257\221\345\233\272\344\273\266.png" deleted file mode 100644 index 83c9fac0c2ca226a710a9245e16a0536fbafe8b4..0000000000000000000000000000000000000000 Binary files "a/doc/image/VSCode\347\274\226\350\257\221\345\233\272\344\273\266.png" and /dev/null differ diff --git "a/doc/image/\344\272\221\345\217\260\346\216\247\345\210\266\345\216\237\347\220\206.png" "b/doc/image/\344\272\221\345\217\260\346\216\247\345\210\266\345\216\237\347\220\206.png" deleted file mode 100755 index 60bf25bbe0d7725643ea1e684af3b900ed3d099a..0000000000000000000000000000000000000000 Binary files "a/doc/image/\344\272\221\345\217\260\346\216\247\345\210\266\345\216\237\347\220\206.png" and /dev/null differ diff --git "a/doc/image/\345\265\214\345\205\245\345\274\217\347\250\213\345\272\217\346\225\260\346\215\256\346\265\201\345\220\221\345\233\276.png" "b/doc/image/\345\265\214\345\205\245\345\274\217\347\250\213\345\272\217\346\225\260\346\215\256\346\265\201\345\220\221\345\233\276.png" deleted file mode 100644 index adfc8705252315b762c5ad15e805ab6ecf374c5f..0000000000000000000000000000000000000000 Binary files "a/doc/image/\345\265\214\345\205\245\345\274\217\347\250\213\345\272\217\346\225\260\346\215\256\346\265\201\345\220\221\345\233\276.png" and /dev/null differ diff --git "a/doc/image/\346\223\215\344\275\234\351\227\264.jpg" "b/doc/image/\346\223\215\344\275\234\351\227\264.jpg" deleted file mode 100644 index e2354ac0176e244bb8ea430177e30f0c4e71c9e2..0000000000000000000000000000000000000000 Binary files "a/doc/image/\346\223\215\344\275\234\351\227\264.jpg" and /dev/null differ diff --git "a/doc/image/\346\255\245\345\205\265\345\265\214\345\205\245\345\274\217\347\241\254\344\273\266\346\241\206\345\233\276.png" "b/doc/image/\346\255\245\345\205\265\345\265\214\345\205\245\345\274\217\347\241\254\344\273\266\346\241\206\345\233\276.png" deleted file mode 100644 index 004af9a8cb80544305f7e0ff853cc3de923404af..0000000000000000000000000000000000000000 Binary files "a/doc/image/\346\255\245\345\205\265\345\265\214\345\205\245\345\274\217\347\241\254\344\273\266\346\241\206\345\233\276.png" and /dev/null differ diff --git "a/doc/image/\347\274\226\350\257\221\347\233\256\346\240\207.png" "b/doc/image/\347\274\226\350\257\221\347\233\256\346\240\207.png" deleted file mode 100644 index ecce988baf56d2b60e4cc2fc7c9229f5493905e3..0000000000000000000000000000000000000000 Binary files "a/doc/image/\347\274\226\350\257\221\347\233\256\346\240\207.png" and /dev/null differ diff --git "a/doc/image/\351\205\215\347\275\256\345\267\245\345\205\267.png" "b/doc/image/\351\205\215\347\275\256\345\267\245\345\205\267.png" deleted file mode 100644 index 53e44a91552d70ab5185640d3c3bf3c8f184c2fb..0000000000000000000000000000000000000000 Binary files "a/doc/image/\351\205\215\347\275\256\345\267\245\345\205\267.png" and /dev/null differ diff --git a/doc/operator.md b/doc/operator.md deleted file mode 100644 index 95fff8b12ec8dd509cd06def92cb4dbba2204638..0000000000000000000000000000000000000000 --- a/doc/operator.md +++ /dev/null @@ -1,35 +0,0 @@ -# 2021年高校联盟赛(山东站)操作手指南 - -## 操作间 - -| ![操作间](../Image/操作间.jpg?raw=true "操作间") | -|:--:| -| *操作间* | - -## 注意事项 - -### UI - -- 如果上一局的机器人使用了UI,本局开始时需要手动清除。 -- UI可以手动关闭,如果遇到UI整体消失,先检查UI是否在设置中被隐藏。 -- UI中的中心准星很难与实际打击位置对应,建议手动关闭,以免影响操作。 - -### 灵敏度 - -- 客户端鼠标灵敏度可以自行设置,注意这里不能设置太低。太低的话,由于量化误差,会使低速鼠标运动(即微操)丢失。 -- 建议将鼠标灵敏度设置在中间位置,不能过低。如果遇到灵敏度问题,还可以在代码`moudle/config.c`中进行设置。 - -## 战术设置 - -### 底盘类型 - -由于底盘电容的存在,可以尝试使用血量有限以实现强大的生存能力。 -但是如果出现电容离线则应该尝试功率有限,以保证移动能力的方式来保证生存能力。 - -### 发射器类型 - -射速优先适合吊射式打法。而爆发优先则适合近身肉搏,需要注意的是电控要尽可能保证弹丸初速稳定,10m/s初速的大弹丸容易被裁判系统误判为小弹丸。当赛场出现特殊情况导致初速不稳定时,则应考虑使用高初速,以优先保证弹丸伤害能力。此时发射间隙较长,注意利用掩体。 - -### 热量控制 - -热量控制是非常重要的。英雄的热量控制需要保守,通常超热量就意味着自杀。步兵的热量控制在于除非有特别好的输出机会,否则不要让热量过高。比赛时因为热量控制失误,导致多次在英雄打残对方机器人的时候没有补充上最后一点伤害。 diff --git a/doc/style_guide.md b/doc/style_guide.md deleted file mode 100644 index 127814dcd377eef5217c3732065a1f3be962fe86..0000000000000000000000000000000000000000 --- a/doc/style_guide.md +++ /dev/null @@ -1,67 +0,0 @@ -# Style Guide - -编码风格主要参考Google C++ 风格指南([中文版](https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/)/[英文原版](https://google.github.io/styleguide/cppguide.html))中与C语言相通的部分,并在此基础上添加了部分战队特有风格。 - -本文件为对以上材料的补充和改写。如果本文件与参考指南冲突,则以本指南为准。 - -所有不符合此规范的代码都不能提交,鼓励对已有的不规范的代码进行更改。 - -* 提交前**必须**使用Google风格的`clang-formator`进行格式化 -* 如果使用VS Code编辑代码,建议打开`Format On Save` - -## 头文件 - -### #pragma once 保护 - -所有头文件都应该使用 `#pragma once` 来防止头文件被多重包含。 - -### #include的路径和顺序 - -所有手写的代码都要放在`User`内,以保证不需要添加其他`include`路径。 - -1. 本源代码文件对应的头文件。本文件为`adc.c`则对应 `adc.h`。 - -1. C自带库,需要使用`#include <>`。 - -1. 其他文件夹内或本文件夹内的 `.h` 文件,使用`#include ""`,按字母数序排列,应包含路径。 - -## 面向过程编程 - -所有的代码均运用面向过程的编程思维,用`struct`存储数据,使用函数对`struct`内的数据进行操作。 - -## 函数 - -### 参数 - -1. 尽量使用指针,来保证效率。 -1. 单一数据输出时使用`return`的形式,多输出时使用结构体指针进行输出。 -1. 函数的参数应该尽可能地用`const`保护起来,防止意外修改。 -1. 对于指针参数,应该检查参数是否为`NULL`。 - -## 命名约定 - -1. 为保证命名不重复,需要以所在文件名夹为函数名称的开始 - * 例如`bsp/buzzer.h`内,宏定义命名需要以`BSP_BUZZER_`开始,函数则以`BSP_Buzzer_`开始。 - * 前缀之后的部分,遵顼Google C++ 风格指南。例如`BSP_GPIO_RegisterCallback()` - -1. `typedef`定义的类后面加`_t`,例:`PID_t` - -## 注释 - -使用`/* 内容 */`格式的注释(注意空格) - -## 格式 - -待补充 - -## 其他 - -``` C -/* 当有代码不需要起作用但要保留时,请使用以下方法 */ -#if 0 - -FunctionOne(); -FunctionTwo(); - -#endif -``` diff --git a/doc/ui.md b/doc/ui.md deleted file mode 100644 index a480387d27c281a9c869d3e68f7cbce2490aca6e..0000000000000000000000000000000000000000 --- a/doc/ui.md +++ /dev/null @@ -1,48 +0,0 @@ -# UI设计思路 - -RM中UI设计是非常重要的。 -通过UI展示机器人工作状态可以帮助操作手更好地发挥机器人性能。 -同时,还可帮助操作手和研发人员在赛场上快速判断故障。 - -UI的设计应该适量、直观: -过量的UI虽然看上去令人满足,但却会淹没重要数据,不利于操作手快速掌握动态; -UI设计中应该避免直接使用数字,尽量使用图形使UI直观,便于操作手理解。 - -UI主要分为两部分:背景信息等几乎不需要刷新的图案、需要经常刷新来及时表达状态的图案。 -对于整个UI系统来说,可以将所有UI综合起来,然后简单地分类成:不刷新、低频刷新和高频刷新。通过将低频和高频刷新图案分开,可以有效减少带宽浪费。 -可以根据需要,继续添加中等刷新频率的图案。 - -## 参考 - -本着碰瓷就碰个大的的原则,战队的UI设计参考了[F35](https://www.mudspike.com/dino-cattaneos-f-35-abc/)仪表盘和HUD设计、[战地4](https://zh.gta5-mods.com/misc/battlefield-4-style-tank-hud)中坦克的UI设计。从中提取了合适的元素,并根据裁判系统特性进行简化,在保留思想和要点的同时减少代码量、CPU计算量和带宽占用。 - -### 基本元素 - -- 圆形进度条:由两部分组成:标签和外围的圆弧。相比矩形进度条有以下有点: - 1. 节省空间。矩形进度条通常需要两行,圆形进度条最大只占圆形面积。同样面积下,圆形更清晰。 - 1. 更少的图形。矩形进度条需要标签,进度条本身,进度条满刻度标记。圆形进度条用圆本身表示100%,不需要满刻度标记。 - 1. 更直观。圆弧相比直线可以更好的分辨其长度占整体的百分比。 - - 衍生: - 1. 圆形位置条:参考拨弹电机(TRIG)的UI。 - 1. 圆形多重进度条:参考摩擦轮(FRIC)的UI。 - -- 文本选择框:由两部分构成:标签和矩形选择框有以下有点 - 1. 一次性**展示所有状态**,不需要通过尝试来解锁所有状态,降低学习成本。 - -## 颜色 - -UI中颜色不宜过多,且颜色应该有含义。 -由于场地中存在红蓝两色装饰,所以选择绿色为主色调与此两者分开,增加辨识度。通过绿色与其他颜色混合得到其他状态的颜色。 -其中,青色(CYAN)用来表示额外信息,黄色用来表示警告。其余颜色原则上不需要。 -例如摩擦轮(FRIC)的UI中,使用绿色为主色调,显示标签和实时转速水平;用青色显示设定值;用黄色标签指示电机过热。 - -## 位置 - -不同于坦克和战斗机等拥有分开的仪表和HUD,RM将两者结合在了一起,一起放在了屏幕中,这种UI设计更接近于游戏UI。可以借鉴各类战争游戏,例如战地系列。 -在设计UI时应该提前划分好区域:仪表部分应尽可能放置于屏幕边缘,不影响视野。覆盖视野的UI应该尽量少,只选取最关键的部分。 - -## 预处理 - -**UI的展示需要一个信息处理提纯的过程。** -例如操作手不需要知道电容的电压值17.4324V,只需要知道电容的电量;不需要知道拨弹电机的精确位置3.51451234,而只需要大概位置。 diff --git a/hw/bsp/MiniPC/debug/launch.json b/hw/bsp/MiniPC/debug/launch.json index 1907c37f198702bc9bbbf976854a80d459c8262b..ccedfc9a92faea95f9b59cce37c52c4ea5f0ed47 100644 --- a/hw/bsp/MiniPC/debug/launch.json +++ b/hw/bsp/MiniPC/debug/launch.json @@ -3,6 +3,10 @@ // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + }, "configurations": [ { "type": "lldb", diff --git a/hw/bsp/MiniPC_with_canfd/debug/launch.json b/hw/bsp/MiniPC_with_canfd/debug/launch.json index 1907c37f198702bc9bbbf976854a80d459c8262b..ccedfc9a92faea95f9b59cce37c52c4ea5f0ed47 100644 --- a/hw/bsp/MiniPC_with_canfd/debug/launch.json +++ b/hw/bsp/MiniPC_with_canfd/debug/launch.json @@ -3,6 +3,10 @@ // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + }, "configurations": [ { "type": "lldb", diff --git a/hw/bsp/Webots/debug/launch.json b/hw/bsp/Webots/debug/launch.json index 1907c37f198702bc9bbbf976854a80d459c8262b..ccedfc9a92faea95f9b59cce37c52c4ea5f0ed47 100644 --- a/hw/bsp/Webots/debug/launch.json +++ b/hw/bsp/Webots/debug/launch.json @@ -3,6 +3,10 @@ // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + }, "configurations": [ { "type": "lldb", diff --git a/hw/bsp/c-mini/debug/launch.json b/hw/bsp/c-mini/debug/launch.json index 5b58c0564f71936383a72c1319a5ad2c381c153c..5109c19d2d1657b823b7ebc0367e9f62e9f757e6 100644 --- a/hw/bsp/c-mini/debug/launch.json +++ b/hw/bsp/c-mini/debug/launch.json @@ -17,5 +17,9 @@ ] } ], - "version": "0.2.0" + "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + } } diff --git a/hw/bsp/dual_canfd/debug/launch.json b/hw/bsp/dual_canfd/debug/launch.json index 6b2a4e309a46e096820c98b8317948ab9d9b9129..f46b0d90f625304baa60f8770838bf38b114b7ce 100644 --- a/hw/bsp/dual_canfd/debug/launch.json +++ b/hw/bsp/dual_canfd/debug/launch.json @@ -17,5 +17,9 @@ ] } ], - "version": "0.2.0" + "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + } } diff --git a/hw/bsp/esp32-c3-arduino/debug/launch.json b/hw/bsp/esp32-c3-arduino/debug/launch.json index ee3025c13ec90d7cda1e4445dd1bae1bfb271527..b4cdf0ccb65f9291f87f8e9db3390e0ec7a2383d 100644 --- a/hw/bsp/esp32-c3-arduino/debug/launch.json +++ b/hw/bsp/esp32-c3-arduino/debug/launch.json @@ -3,6 +3,10 @@ // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + }, "configurations": [ { "cwd": "${workspaceRoot}", diff --git a/hw/bsp/esp32-c3-idf/debug/launch.json b/hw/bsp/esp32-c3-idf/debug/launch.json index ee3025c13ec90d7cda1e4445dd1bae1bfb271527..b4cdf0ccb65f9291f87f8e9db3390e0ec7a2383d 100644 --- a/hw/bsp/esp32-c3-idf/debug/launch.json +++ b/hw/bsp/esp32-c3-idf/debug/launch.json @@ -3,6 +3,10 @@ // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + }, "configurations": [ { "cwd": "${workspaceRoot}", diff --git a/hw/bsp/f103_can/debug/launch.json b/hw/bsp/f103_can/debug/launch.json index 487562e6e280dd95bda95c3e5cabba41ee26d8b2..f6403fe848e5b70c77a9e99777f2b05bda35c66e 100644 --- a/hw/bsp/f103_can/debug/launch.json +++ b/hw/bsp/f103_can/debug/launch.json @@ -17,5 +17,9 @@ ] } ], - "version": "0.2.0" + "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + } } diff --git a/hw/bsp/mangopi_r818/debug/launch.json b/hw/bsp/mangopi_r818/debug/launch.json index 1907c37f198702bc9bbbf976854a80d459c8262b..ccedfc9a92faea95f9b59cce37c52c4ea5f0ed47 100644 --- a/hw/bsp/mangopi_r818/debug/launch.json +++ b/hw/bsp/mangopi_r818/debug/launch.json @@ -3,6 +3,10 @@ // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + }, "configurations": [ { "type": "lldb", diff --git a/hw/bsp/microswitch/debug/launch.json b/hw/bsp/microswitch/debug/launch.json index 487562e6e280dd95bda95c3e5cabba41ee26d8b2..f6403fe848e5b70c77a9e99777f2b05bda35c66e 100644 --- a/hw/bsp/microswitch/debug/launch.json +++ b/hw/bsp/microswitch/debug/launch.json @@ -17,5 +17,9 @@ ] } ], - "version": "0.2.0" + "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + } } diff --git a/hw/bsp/node_imu/debug/launch.json b/hw/bsp/node_imu/debug/launch.json index 3ddcf9689374fca43603de362c5f03ff96c091d2..dec2d24dcfd890636251681d8ae71a19f78c146c 100644 --- a/hw/bsp/node_imu/debug/launch.json +++ b/hw/bsp/node_imu/debug/launch.json @@ -17,5 +17,9 @@ ] } ], - "version": "0.2.0" + "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + } } diff --git a/hw/bsp/rm-c/debug/launch-jlink.json b/hw/bsp/rm-c/debug/launch-jlink.json index 7beca78a062ba315bcfa3a2e217901b535e679c4..b036a1af7fe6adf5cd79e13849ef6ec15e30d9fc 100644 --- a/hw/bsp/rm-c/debug/launch-jlink.json +++ b/hw/bsp/rm-c/debug/launch-jlink.json @@ -17,5 +17,9 @@ ] } ], - "version": "0.2.0" + "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + } } diff --git a/hw/bsp/rm-c/debug/launch-stlink.json b/hw/bsp/rm-c/debug/launch-stlink.json index 8f6703bb54988720ec49ad38ab99c9d2b835236f..331928b2c21f9c759d1aa70562af78439146da59 100644 --- a/hw/bsp/rm-c/debug/launch-stlink.json +++ b/hw/bsp/rm-c/debug/launch-stlink.json @@ -17,5 +17,9 @@ ] } ], - "version": "0.2.0" + "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + } } diff --git a/hw/bsp/rm-c/debug/launch.json b/hw/bsp/rm-c/debug/launch.json index 7beca78a062ba315bcfa3a2e217901b535e679c4..b036a1af7fe6adf5cd79e13849ef6ec15e30d9fc 100644 --- a/hw/bsp/rm-c/debug/launch.json +++ b/hw/bsp/rm-c/debug/launch.json @@ -17,5 +17,9 @@ ] } ], - "version": "0.2.0" + "version": "0.2.0", + "liveWatch": { + "enabled": true, + "samplesPerSecond": 4 + } } diff --git a/doc/image/C-MINI-1.jpg b/image/C-MINI-1.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/image/C-MINI-1.jpg rename to image/C-MINI-1.jpg diff --git a/doc/image/IMU-DEV-1.jpg b/image/IMU-DEV-1.jpg similarity index 100% rename from doc/image/IMU-DEV-1.jpg rename to image/IMU-DEV-1.jpg diff --git "a/doc/image/Webots\344\273\277\347\234\237.png" "b/image/Webots\344\273\277\347\234\237.png" similarity index 100% rename from "doc/image/Webots\344\273\277\347\234\237.png" rename to "image/Webots\344\273\277\347\234\237.png" diff --git a/doc/image/XRobot.jpeg b/image/XRobot.jpeg similarity index 100% rename from doc/image/XRobot.jpeg rename to image/XRobot.jpeg diff --git a/doc/image/clion.png b/image/clion.png similarity index 100% rename from doc/image/clion.png rename to image/clion.png diff --git a/doc/image/esp32c3-core-1.jpeg b/image/esp32c3-core-1.jpeg similarity index 100% rename from doc/image/esp32c3-core-1.jpeg rename to image/esp32c3-core-1.jpeg diff --git a/doc/image/f103_can.jpeg b/image/f103_can.jpeg similarity index 100% rename from doc/image/f103_can.jpeg rename to image/f103_can.jpeg diff --git a/doc/image/mCore-R818.jpg b/image/mCore-R818.jpg similarity index 100% rename from doc/image/mCore-R818.jpg rename to image/mCore-R818.jpg diff --git a/doc/image/nuc.jpg b/image/nuc.jpg similarity index 100% rename from doc/image/nuc.jpg rename to image/nuc.jpg diff --git a/doc/image/raspi.png b/image/raspi.png similarity index 100% rename from doc/image/raspi.png rename to image/raspi.png diff --git a/doc/image/rm-c.png b/image/rm-c.png similarity index 100% rename from doc/image/rm-c.png rename to image/rm-c.png diff --git a/doc/image/rmuc.jpg b/image/rmuc.jpg similarity index 100% rename from doc/image/rmuc.jpg rename to image/rmuc.jpg diff --git a/doc/image/rmuc1.jpg b/image/rmuc1.jpg similarity index 100% rename from doc/image/rmuc1.jpg rename to image/rmuc1.jpg diff --git a/doc/image/rmuc2.jpg b/image/rmuc2.jpg similarity index 100% rename from doc/image/rmuc2.jpg rename to image/rmuc2.jpg diff --git a/doc/image/rmuc3.jpg b/image/rmuc3.jpg similarity index 100% rename from doc/image/rmuc3.jpg rename to image/rmuc3.jpg diff --git a/doc/image/windows.png b/image/windows.png similarity index 100% rename from doc/image/windows.png rename to image/windows.png diff --git "a/doc/image/\345\221\275\344\273\244\350\241\214.png" "b/image/\345\221\275\344\273\244\350\241\214.png" similarity index 100% rename from "doc/image/\345\221\275\344\273\244\350\241\214.png" rename to "image/\345\221\275\344\273\244\350\241\214.png" diff --git "a/doc/image/\345\256\242\346\210\267\347\253\257UI.png" "b/image/\345\256\242\346\210\267\347\253\257UI.png" similarity index 100% rename from "doc/image/\345\256\242\346\210\267\347\253\257UI.png" rename to "image/\345\256\242\346\210\267\347\253\257UI.png" diff --git "a/doc/image/\345\265\214\345\205\245\345\274\217\347\250\213\345\272\217\345\261\202\346\254\241\345\233\276.png" "b/image/\345\265\214\345\205\245\345\274\217\347\250\213\345\272\217\345\261\202\346\254\241\345\233\276.png" old mode 100755 new mode 100644 similarity index 100% rename from "doc/image/\345\265\214\345\205\245\345\274\217\347\250\213\345\272\217\345\261\202\346\254\241\345\233\276.png" rename to "image/\345\265\214\345\205\245\345\274\217\347\250\213\345\272\217\345\261\202\346\254\241\345\233\276.png" diff --git "a/doc/image/\350\260\203\350\257\225\347\225\214\351\235\242.png" "b/image/\350\260\203\350\257\225\347\225\214\351\235\242.png" similarity index 100% rename from "doc/image/\350\260\203\350\257\225\347\225\214\351\235\242.png" rename to "image/\350\260\203\350\257\225\347\225\214\351\235\242.png" diff --git a/lib/one-message b/lib/one-message index 8808d5e9302750b323496acb863db8b8554f1666..1990ab504065fa198ca3724224a96226dd3b1e0e 160000 --- a/lib/one-message +++ b/lib/one-message @@ -1 +1 @@ -Subproject commit 8808d5e9302750b323496acb863db8b8554f1666 +Subproject commit 1990ab504065fa198ca3724224a96226dd3b1e0e diff --git a/src/device/bq27220/dev_bq27220.cpp b/src/device/bq27220/dev_bq27220.cpp index 9d896f8bcf25ba97ceb02ab040b44a9835a79e9c..dd75b4a953cf15730fbe106761f0da6d77b5b99c 100644 --- a/src/device/bq27220/dev_bq27220.cpp +++ b/src/device/bq27220/dev_bq27220.cpp @@ -4,6 +4,7 @@ #define BQ27220_DEVICE_ID (0x55) #define CTRL_REG_ADDR (0x00) +#define STATE_OF_CHARGE_ADDR (0x2C) #define OPERATION_STATUS_ADDR (0x3B) #define DESIGN_CAPACITY_CTRL_ADDR (0x3E) #define DESIGN_CAPACITY_ADDR (0x40) @@ -14,12 +15,30 @@ using namespace Device; BQ27220::BQ27220(Param& param) : param_(param) { - /* Read old capacity */ static uint8_t old_capacity[2]; - old_capacity[1] = bsp_i2c_mem_read_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, - DESIGN_CAPACITY_ADDR); - old_capacity[0] = bsp_i2c_mem_read_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, - DESIGN_CAPACITY_ADDR + 1); + + /* Read old capacity */ + for (int i = 0; i < 6; i++) { + old_capacity[0] = + bsp_i2c_mem_read_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, 0X3C); + System::Thread::Sleep(50); + old_capacity[1] = + bsp_i2c_mem_read_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, 0X3C + 1); + System::Thread::Sleep(50); + + auto old_cap = *reinterpret_cast(old_capacity); + + if (old_cap == 3000 || old_cap == param.capacity_mha) { + break; + } + } + + old_capacity[0] = + bsp_i2c_mem_read_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, 0X3C); + System::Thread::Sleep(50); + old_capacity[1] = + bsp_i2c_mem_read_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, 0X3C + 1); + System::Thread::Sleep(50); auto old_cap = *reinterpret_cast(old_capacity); if (old_cap != param_.capacity_mha) { @@ -28,22 +47,26 @@ BQ27220::BQ27220(Param& param) : param_(param) { auto task_fun = [](BQ27220* bq27220) { static uint8_t tmp[10]; - uint16_t* data = reinterpret_cast(tmp); + int16_t* data = reinterpret_cast(tmp); + bsp_i2c_mem_read(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, STATE_OF_CHARGE_ADDR, + tmp, 2, true); + bq27220->data_.percentage = data[0]; bsp_i2c_mem_read(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, TEMPERATURE_ADDR, tmp, 10, true); - bq27220->data_.temperate = data[0]; - bq27220->data_.voltage = data[1]; - bq27220->data_.current = data[3]; - bq27220->data_.real_capacity = data[4]; - bq27220->data_.percentage = data[4] / bq27220->param_.capacity_mha * 100; + bq27220->data_.temperate = static_cast(data[0] - 2731) / 10.0f; + bq27220->data_.voltage = static_cast(data[1]) / 1000.0f; + bq27220->data_.current = static_cast(data[3]) / 1000.0f; + + bq27220->data_.real_capacity = data[2]; }; - System::Timer::Create(task_fun, this, 10000); + System::Timer::Create(task_fun, this, 1000); } -void BQ27220::WriteParam() { /* UNSEAL it by sending the appropriate keys to - Control */ +void BQ27220::WriteParam() { + // TODO:Param write Invalid + /* UNSEAL it by sending the appropriate keys to Control */ bsp_i2c_mem_write_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, CTRL_REG_ADDR, 0X14); bsp_i2c_mem_write_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, CTRL_REG_ADDR + 1, @@ -70,13 +93,15 @@ void BQ27220::WriteParam() { /* UNSEAL it by sending the appropriate keys to 0X00); /* Wait CFGUPDATE, May take up to 1 second. */ - while ((bsp_i2c_mem_read_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, - OPERATION_STATUS_ADDR) & - (1 << 2)) != (1 << 2)) { - } + uint8_t tmp = 0; + + do { + tmp = bsp_i2c_mem_read_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, + OPERATION_STATUS_ADDR); + } while ((tmp & (1 << 2)) != (1 << 2)); /* Enable access of Design Capacity */ - bsp_i2c_mem_write_byte(BSP_I2C_BQ27220, DESIGN_CAPACITY_CTRL_ADDR, + bsp_i2c_mem_write_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, DESIGN_CAPACITY_CTRL_ADDR, 0x9F); bsp_i2c_mem_write_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, DESIGN_CAPACITY_CTRL_ADDR + 1, 0x92); @@ -102,13 +127,14 @@ void BQ27220::WriteParam() { /* UNSEAL it by sending the appropriate keys to /* Write new capacity */ bsp_i2c_mem_write_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, - DESIGN_CAPACITY_ADDR, old_cap >> 8); + DESIGN_CAPACITY_ADDR, param_.capacity_mha >> 8); bsp_i2c_mem_write_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, - DESIGN_CAPACITY_ADDR + 1, old_cap); + DESIGN_CAPACITY_ADDR + 1, param_.capacity_mha); /* Write new sum */ uint8_t new_sum = - 255 - (old_cap_sum_data - old_capacity[0] - old_capacity[1]) % 256; + (255 - old_cap_sum_data - old_capacity[0] - old_capacity[1]) % 256; + new_sum = 255 - ((new_sum + 0x04 + 0xb0) % 256); bsp_i2c_mem_write_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, CAPACITY_DATA_SUM_ADDR, new_sum); @@ -124,10 +150,11 @@ void BQ27220::WriteParam() { /* UNSEAL it by sending the appropriate keys to 0X00); /* Wait CFGUPDATE, May take up to 1 second. */ - while ((bsp_i2c_mem_read_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, - OPERATION_STATUS_ADDR) & - (1 << 2)) != 0) { - } + + do { + tmp = bsp_i2c_mem_read_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, + OPERATION_STATUS_ADDR); + } while ((tmp & (1 << 2)) != 0); /* return to SEALED mode */ bsp_i2c_mem_write_byte(BSP_I2C_BQ27220, BQ27220_DEVICE_ID, CTRL_REG_ADDR, diff --git a/src/device/bq27220/dev_bq27220.hpp b/src/device/bq27220/dev_bq27220.hpp index 6b245f7ca4ddf446a7dda67360e57fb8ae007ec2..8a754d7ebb18e8ff2b793912678f2730a1aa5ea3 100644 --- a/src/device/bq27220/dev_bq27220.hpp +++ b/src/device/bq27220/dev_bq27220.hpp @@ -8,11 +8,11 @@ class BQ27220 { } Param; typedef struct { - uint32_t voltage; - uint32_t temperate; - uint32_t current; - uint32_t real_capacity; - uint16_t percentage; + float voltage; + float temperate; + float current; + int16_t real_capacity; + uint8_t percentage; } Data; BQ27220(Param& param); diff --git a/src/device/led_rgb/dev_led_rgb.cpp b/src/device/led_rgb/dev_led_rgb.cpp index 13d4b4f17257419aec8686f2c14826a6fea91fa2..30643d31e7a1c32084f94c2922b5698575d2e1f5 100644 --- a/src/device/led_rgb/dev_led_rgb.cpp +++ b/src/device/led_rgb/dev_led_rgb.cpp @@ -4,9 +4,7 @@ using namespace Device; -static uint32_t led_stats; - -RGB::RGB() { +RGB::RGB(bool auto_start) { bsp_pwm_start(BSP_PWM_LED_RED); bsp_pwm_start(BSP_PWM_LED_BLU); bsp_pwm_start(BSP_PWM_LED_GRN); @@ -19,21 +17,24 @@ RGB::RGB() { while (1) { switch (led_fsm) { case 0: - led->Set(GREEN, ON, 1); - led->Set(RED, OFF, 1); - led->Set(BLUE, OFF, 1); + led->Set(GREEN, 1); + led->Set(RED, 0); + led->Set(BLUE, 0); led_fsm++; break; case 1: - led->Set(GREEN, OFF, 1); - led->Set(RED, ON, 1); - led->Set(BLUE, OFF, 1); + led->Set(GREEN, 0); + led->Set(RED, 1); + led->Set(BLUE, 0); led_fsm++; break; case 2: - led->Set(GREEN, OFF, 1); - led->Set(RED, OFF, 1); - led->Set(BLUE, ON, 1); + led->Set(GREEN, 0); + led->Set(RED, 0); + led->Set(BLUE, 1); + led_fsm = 0; + break; + default: led_fsm = 0; break; } @@ -42,53 +43,28 @@ RGB::RGB() { } }; - this->thread_.Create(led_thread, this, "led_thread", - DEVICE_LED_RGB_TASK_STACK_DEPTH, System::Thread::LOW); + if (auto_start) { + this->thread_.Create(led_thread, this, "led_thread", + DEVICE_LED_RGB_TASK_STACK_DEPTH, System::Thread::LOW); + } } -bool RGB::Set(RGB::Channel ch, RGB::Status status, float duty_cycle) { +bool RGB::Set(RGB::Channel ch, float duty_cycle) { clampf(&duty_cycle, 0.0f, 1.0f); - bsp_pwm_channel_t pwm_ch = BSP_PWM_NUMBER; - switch (ch) { case RED: bsp_pwm_set_comp(BSP_PWM_LED_RED, duty_cycle); - pwm_ch = BSP_PWM_LED_RED; break; case GREEN: bsp_pwm_set_comp(BSP_PWM_LED_GRN, duty_cycle); - pwm_ch = BSP_PWM_LED_GRN; break; case BLUE: bsp_pwm_set_comp(BSP_PWM_LED_BLU, duty_cycle); - pwm_ch = BSP_PWM_LED_BLU; break; default: - pwm_ch = BSP_PWM_LED_RED; - } - - switch (status) { - case ON: - bsp_pwm_start(pwm_ch); - led_stats |= pwm_ch; - break; - - case OFF: - bsp_pwm_stop(pwm_ch); - led_stats &= ~pwm_ch; - break; - - case TAGGLE: - if (led_stats & pwm_ch) { - bsp_pwm_stop(pwm_ch); - led_stats &= ~pwm_ch; - } else { - bsp_pwm_start(pwm_ch); - led_stats |= pwm_ch; - } break; } diff --git a/src/device/led_rgb/dev_led_rgb.hpp b/src/device/led_rgb/dev_led_rgb.hpp index 4be6273cd8d58e2fad66e74459a42e79ac8b6260..bc723963a785e7ed2fde06f589439d76b0044442 100644 --- a/src/device/led_rgb/dev_led_rgb.hpp +++ b/src/device/led_rgb/dev_led_rgb.hpp @@ -5,12 +5,6 @@ namespace Device { class RGB { public: - typedef enum { - ON, - OFF, - TAGGLE, - } Status; - typedef enum { BLUE, RED, @@ -18,9 +12,9 @@ class RGB { CHANNEL_NUMBER, } Channel; - RGB(); + RGB(bool auto_start = true); - bool Set(Channel ch, Status status, float duty_cycle); + bool Set(Channel ch, float duty_cycle); private: System::Thread thread_;