update doc
This commit is contained in:
parent
c4dfe8e60b
commit
9908dfd015
|
@ -156,7 +156,7 @@ void MX_TIM5_Init(void)
|
|||
TIM_OC_InitTypeDef sConfigOC = {0};
|
||||
|
||||
/* USER CODE BEGIN TIM5_Init 1 */
|
||||
|
||||
|
||||
/* USER CODE END TIM5_Init 1 */
|
||||
htim5.Instance = TIM5;
|
||||
htim5.Init.Prescaler = 0;
|
||||
|
|
49
README.md
49
README.md
|
@ -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会调用其所有的模块的初始化函数(注册函数),这是因为本框架的设计思想是任何模块在被注册(构造/初始化)之前,都是不存在的,当且仅当定义了一个模块结构体(也称实例)的时候,才有一个实体的概念。
|
||||
|
|
|
@ -46,6 +46,8 @@ CubeMX进行初始化 --> VSCode编写代/进行编译/简单调试 --> Ozone变
|
|||
|
||||
***务必学完以上课程再开始本教程的学习。***
|
||||
|
||||
> 4. 如果有可能,还应该学习:[哈佛大学公开课:计算机科学cs50](https://open.163.com/newview/movie/courseintro?newurl=%2Fspecial%2Fopencourse%2Fcs50.html)。你将会对单片机和计算机有不同的理解。
|
||||
|
||||
## 预备知识
|
||||
|
||||
1. 软件安装(队伍NAS和资料硬盘内提供了所有必要的依赖,安装包和插件)
|
||||
|
@ -181,6 +183,8 @@ ITM是instrument trace macrocell指令追踪宏单元的缩写,它用于提供
|
|||
Makefile就是我们要使用的构建规则文件。
|
||||
|
||||
> **如果你使用basic_framework,不需要重新生成代码。**
|
||||
|
||||
|
||||
|
||||
## VSCode编译和调试配置
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
# application
|
||||
|
||||
这是application层的说明
|
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
10
bsp/bsp.md
10
bsp/bsp.md
|
@ -0,0 +1,10 @@
|
|||
BSP
|
||||
|
||||
这是BSP层的说明文档。
|
||||
|
||||
> TODO:
|
||||
> 1. 增加SPI和I2C支持
|
||||
> 2. 增加外部中断支持
|
||||
> 3. 增加软件中断支持
|
||||
> 4. 增加硬件CRC支持
|
||||
> 5. 增加USB和虚拟串口支持
|
|
@ -4,6 +4,11 @@
|
|||
extern TIM_HandleTypeDef htim4;
|
||||
static uint8_t tmp_warning_level=0;
|
||||
|
||||
void buzzer_init()
|
||||
{
|
||||
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3);
|
||||
}
|
||||
|
||||
void buzzer_on(uint16_t psc, uint16_t pwm,uint8_t level)
|
||||
{
|
||||
if(level>tmp_warning_level)
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "struct_typedef.h"
|
||||
|
||||
void buzzer_init();
|
||||
extern void buzzer_on(uint16_t psc, uint16_t pwm,uint8_t level);
|
||||
extern void buzzer_off(void);
|
||||
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
#include "bsp_init.h"
|
||||
#include "bsp_log.h"
|
||||
#include "bsp_dwt.h"
|
||||
#include "bsp_buzzer.h"
|
||||
#include "bsp_led.h"
|
||||
#include "bsp_temperature.h"
|
||||
|
||||
// CAN和串口会在注册实例的时候自动初始化,不注册不初始化
|
||||
void BSPInit()
|
||||
{
|
||||
DWT_Init(168);
|
||||
BSP_Log_Init();
|
||||
LED_init();
|
||||
IMUTempInit();
|
||||
buzzer_init();
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
#ifndef BSP_INIT_h
|
||||
#define BSP_INIT_h
|
||||
|
||||
|
||||
/**
|
||||
* @brief bsp层初始化统一入口
|
||||
*
|
||||
*/
|
||||
void BSPInit();
|
||||
|
||||
#endif // !BSP_INIT_h
|
||||
|
|
@ -2,12 +2,19 @@
|
|||
#include "main.h"
|
||||
|
||||
extern TIM_HandleTypeDef htim5;
|
||||
static tmp_output_level=0;
|
||||
static tmp_output_level = 0;
|
||||
|
||||
void LED_init()
|
||||
{
|
||||
HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_1);
|
||||
HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_2);
|
||||
HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_3);
|
||||
}
|
||||
|
||||
void aRGB_led_show(uint32_t aRGB)
|
||||
{
|
||||
static uint8_t alpha;
|
||||
static uint16_t red,green,blue;
|
||||
static uint16_t red, green, blue;
|
||||
|
||||
alpha = (aRGB & 0xFF000000) >> 24;
|
||||
red = ((aRGB & 0x00FF0000) >> 16) * alpha;
|
||||
|
@ -18,5 +25,3 @@ void aRGB_led_show(uint32_t aRGB)
|
|||
__HAL_TIM_SetCompare(&htim5, TIM_CHANNEL_2, green);
|
||||
__HAL_TIM_SetCompare(&htim5, TIM_CHANNEL_3, red);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
#include "struct_typedef.h"
|
||||
|
||||
|
||||
void LED_init();
|
||||
extern void aRGB_led_show(uint32_t aRGB);
|
||||
|
||||
#endif
|
|
@ -2,8 +2,12 @@
|
|||
|
||||
extern TIM_HandleTypeDef htim10;
|
||||
|
||||
void IMUTempInit()
|
||||
{
|
||||
HAL_TIM_PWM_Start(&htim10, TIM_CHANNEL_1);
|
||||
}
|
||||
|
||||
void imu_pwm_set(uint16_t pwm)
|
||||
{
|
||||
__HAL_TIM_SetCompare(&htim10, TIM_CHANNEL_1, pwm);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "stdint.h"
|
||||
#include "tim.h"
|
||||
|
||||
void IMUTempInit();
|
||||
extern void imu_pwm_set(uint16_t pwm);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -69,7 +69,7 @@ typedef struct
|
|||
float Output_LPF_RC; // RC = 1/omegac
|
||||
float Derivative_LPF_RC;
|
||||
|
||||
uint8_t Improve;
|
||||
PID_Improvement_e Improve;
|
||||
//-----------------------------------
|
||||
// for calculating
|
||||
float Measure;
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
# ins_task
|
||||
|
||||
<p align='right'>neozng1@hnu.edu.cn</p>
|
||||
<p align='right'>neozng1@hnu.edu.cn</p>
|
||||
|
||||
## 硬触发流程
|
||||
|
||||
![image-20221113212706633](assets\image-20221113212706633.png)
|
|
@ -0,0 +1,3 @@
|
|||
# module
|
||||
|
||||
这是module层的说明。
|
Loading…
Reference in New Issue