diff --git a/assets/00937839b59a4c039ee8ecb8a5136e3c.png b/.assets/00937839b59a4c039ee8ecb8a5136e3c.png
similarity index 100%
rename from assets/00937839b59a4c039ee8ecb8a5136e3c.png
rename to .assets/00937839b59a4c039ee8ecb8a5136e3c.png
diff --git a/assets/CANcomm.png b/.assets/CANcomm.png
similarity index 100%
rename from assets/CANcomm.png
rename to .assets/CANcomm.png
diff --git a/assets/framework.png b/.assets/framework.png
similarity index 100%
rename from assets/framework.png
rename to .assets/framework.png
diff --git a/assets/image-20221112145717063.png b/.assets/image-20221112145717063.png
similarity index 100%
rename from assets/image-20221112145717063.png
rename to .assets/image-20221112145717063.png
diff --git a/assets/image-20221112160213066.png b/.assets/image-20221112160213066.png
similarity index 100%
rename from assets/image-20221112160213066.png
rename to .assets/image-20221112160213066.png
diff --git a/assets/image-20221112172051589.png b/.assets/image-20221112172051589.png
similarity index 100%
rename from assets/image-20221112172051589.png
rename to .assets/image-20221112172051589.png
diff --git a/assets/image-20221112172157533.png b/.assets/image-20221112172157533.png
similarity index 100%
rename from assets/image-20221112172157533.png
rename to .assets/image-20221112172157533.png
diff --git a/assets/image-20221112172208749.png b/.assets/image-20221112172208749.png
similarity index 100%
rename from assets/image-20221112172208749.png
rename to .assets/image-20221112172208749.png
diff --git a/assets/image-20221112172221756.png b/.assets/image-20221112172221756.png
similarity index 100%
rename from assets/image-20221112172221756.png
rename to .assets/image-20221112172221756.png
diff --git a/assets/image-20221112172239386.png b/.assets/image-20221112172239386.png
similarity index 100%
rename from assets/image-20221112172239386.png
rename to .assets/image-20221112172239386.png
diff --git a/assets/image-20221112172254809.png b/.assets/image-20221112172254809.png
similarity index 100%
rename from assets/image-20221112172254809.png
rename to .assets/image-20221112172254809.png
diff --git a/assets/image-20221112172348408.png b/.assets/image-20221112172348408.png
similarity index 100%
rename from assets/image-20221112172348408.png
rename to .assets/image-20221112172348408.png
diff --git a/assets/image-20221112172420037.png b/.assets/image-20221112172420037.png
similarity index 100%
rename from assets/image-20221112172420037.png
rename to .assets/image-20221112172420037.png
diff --git a/assets/image-20221112172716320.png b/.assets/image-20221112172716320.png
similarity index 100%
rename from assets/image-20221112172716320.png
rename to .assets/image-20221112172716320.png
diff --git a/assets/image-20221112172858593.png b/.assets/image-20221112172858593.png
similarity index 100%
rename from assets/image-20221112172858593.png
rename to .assets/image-20221112172858593.png
diff --git a/assets/image-20221112173534670.png b/.assets/image-20221112173534670.png
similarity index 100%
rename from assets/image-20221112173534670.png
rename to .assets/image-20221112173534670.png
diff --git a/assets/image-20221112174211802.png b/.assets/image-20221112174211802.png
similarity index 100%
rename from assets/image-20221112174211802.png
rename to .assets/image-20221112174211802.png
diff --git a/assets/image-20221112180103750.png b/.assets/image-20221112180103750.png
similarity index 100%
rename from assets/image-20221112180103750.png
rename to .assets/image-20221112180103750.png
diff --git a/assets/image-20221112191712534.png b/.assets/image-20221112191712534.png
similarity index 100%
rename from assets/image-20221112191712534.png
rename to .assets/image-20221112191712534.png
diff --git a/assets/image-20221112192133103.png b/.assets/image-20221112192133103.png
similarity index 100%
rename from assets/image-20221112192133103.png
rename to .assets/image-20221112192133103.png
diff --git a/assets/image-20221112192509718.png b/.assets/image-20221112192509718.png
similarity index 100%
rename from assets/image-20221112192509718.png
rename to .assets/image-20221112192509718.png
diff --git a/assets/image-20221112192610543.png b/.assets/image-20221112192610543.png
similarity index 100%
rename from assets/image-20221112192610543.png
rename to .assets/image-20221112192610543.png
diff --git a/assets/image-20221113125439857.png b/.assets/image-20221113125439857.png
similarity index 100%
rename from assets/image-20221113125439857.png
rename to .assets/image-20221113125439857.png
diff --git a/assets/image-20221113131044191.png b/.assets/image-20221113131044191.png
similarity index 100%
rename from assets/image-20221113131044191.png
rename to .assets/image-20221113131044191.png
diff --git a/assets/image-20221113133624273.png b/.assets/image-20221113133624273.png
similarity index 100%
rename from assets/image-20221113133624273.png
rename to .assets/image-20221113133624273.png
diff --git a/assets/image-20221113133904084.png b/.assets/image-20221113133904084.png
similarity index 100%
rename from assets/image-20221113133904084.png
rename to .assets/image-20221113133904084.png
diff --git a/assets/image-20221113134252407.png b/.assets/image-20221113134252407.png
similarity index 100%
rename from assets/image-20221113134252407.png
rename to .assets/image-20221113134252407.png
diff --git a/assets/image-20221113134605331.png b/.assets/image-20221113134605331.png
similarity index 100%
rename from assets/image-20221113134605331.png
rename to .assets/image-20221113134605331.png
diff --git a/assets/image-20221113142448939.png b/.assets/image-20221113142448939.png
similarity index 100%
rename from assets/image-20221113142448939.png
rename to .assets/image-20221113142448939.png
diff --git a/assets/image-20221113152513343.png b/.assets/image-20221113152513343.png
similarity index 100%
rename from assets/image-20221113152513343.png
rename to .assets/image-20221113152513343.png
diff --git a/assets/image-20221113212706633.png b/.assets/image-20221113212706633.png
similarity index 100%
rename from assets/image-20221113212706633.png
rename to .assets/image-20221113212706633.png
diff --git a/assets/image-20221115215531879.png b/.assets/image-20221115215531879.png
similarity index 100%
rename from assets/image-20221115215531879.png
rename to .assets/image-20221115215531879.png
diff --git a/assets/image-20221116150122397.png b/.assets/image-20221116150122397.png
similarity index 100%
rename from assets/image-20221116150122397.png
rename to .assets/image-20221116150122397.png
diff --git a/assets/image-20221116150901418.png b/.assets/image-20221116150901418.png
similarity index 100%
rename from assets/image-20221116150901418.png
rename to .assets/image-20221116150901418.png
diff --git a/assets/image-20221116152032104.png b/.assets/image-20221116152032104.png
similarity index 100%
rename from assets/image-20221116152032104.png
rename to .assets/image-20221116152032104.png
diff --git a/assets/image-20221116193340770.png b/.assets/image-20221116193340770.png
similarity index 100%
rename from assets/image-20221116193340770.png
rename to .assets/image-20221116193340770.png
diff --git a/assets/image-20221117121323757.png b/.assets/image-20221117121323757.png
similarity index 100%
rename from assets/image-20221117121323757.png
rename to .assets/image-20221117121323757.png
diff --git a/assets/image-20221119173731119.png b/.assets/image-20221119173731119.png
similarity index 100%
rename from assets/image-20221119173731119.png
rename to .assets/image-20221119173731119.png
diff --git a/assets/image-20221119173918340.png b/.assets/image-20221119173918340.png
similarity index 100%
rename from assets/image-20221119173918340.png
rename to .assets/image-20221119173918340.png
diff --git a/assets/image-20221119174445067.png b/.assets/image-20221119174445067.png
similarity index 100%
rename from assets/image-20221119174445067.png
rename to .assets/image-20221119174445067.png
diff --git a/assets/image-20221119222946103.png b/.assets/image-20221119222946103.png
similarity index 100%
rename from assets/image-20221119222946103.png
rename to .assets/image-20221119222946103.png
diff --git a/assets/image-20221119223148604.png b/.assets/image-20221119223148604.png
similarity index 100%
rename from assets/image-20221119223148604.png
rename to .assets/image-20221119223148604.png
diff --git a/assets/image-20221201134906999.png b/.assets/image-20221201134906999.png
similarity index 100%
rename from assets/image-20221201134906999.png
rename to .assets/image-20221201134906999.png
diff --git a/assets/image-20221201150945052.png b/.assets/image-20221201150945052.png
similarity index 100%
rename from assets/image-20221201150945052.png
rename to .assets/image-20221201150945052.png
diff --git a/assets/image-20221201152530558.png b/.assets/image-20221201152530558.png
similarity index 100%
rename from assets/image-20221201152530558.png
rename to .assets/image-20221201152530558.png
diff --git a/assets/image-20221201152904044.png b/.assets/image-20221201152904044.png
similarity index 100%
rename from assets/image-20221201152904044.png
rename to .assets/image-20221201152904044.png
diff --git a/assets/image-20221201155228196.png b/.assets/image-20221201155228196.png
similarity index 100%
rename from assets/image-20221201155228196.png
rename to .assets/image-20221201155228196.png
diff --git a/assets/image-20230202151939109.png b/.assets/image-20230202151939109.png
similarity index 100%
rename from assets/image-20230202151939109.png
rename to .assets/image-20230202151939109.png
diff --git a/assets/image-20230413195155471.png b/.assets/image-20230413195155471.png
similarity index 100%
rename from assets/image-20230413195155471.png
rename to .assets/image-20230413195155471.png
diff --git a/assets/ozone.png b/.assets/ozone.png
similarity index 100%
rename from assets/ozone.png
rename to .assets/ozone.png
diff --git a/assets/v2-2797ea99d0d38eb9996993bb0ad77ab2_720w.webp b/.assets/v2-2797ea99d0d38eb9996993bb0ad77ab2_720w.webp
similarity index 100%
rename from assets/v2-2797ea99d0d38eb9996993bb0ad77ab2_720w.webp
rename to .assets/v2-2797ea99d0d38eb9996993bb0ad77ab2_720w.webp
diff --git a/assets/vscodedebug.png b/.assets/vscodedebug.png
similarity index 100%
rename from assets/vscodedebug.png
rename to .assets/vscodedebug.png
diff --git a/assets/总程序流程.png b/.assets/总程序流程.png
similarity index 100%
rename from assets/总程序流程.png
rename to .assets/总程序流程.png
diff --git a/assets/数据流.png b/.assets/数据流.png
similarity index 100%
rename from assets/数据流.png
rename to .assets/数据流.png
diff --git a/Inc/FreeRTOSConfig.h b/Inc/FreeRTOSConfig.h
index c8e8b44..a7de255 100644
--- a/Inc/FreeRTOSConfig.h
+++ b/Inc/FreeRTOSConfig.h
@@ -64,7 +64,7 @@
#define configTICK_RATE_HZ ((TickType_t)1000)
#define configMAX_PRIORITIES ( 7 )
#define configMINIMAL_STACK_SIZE ((uint16_t)128)
-#define configTOTAL_HEAP_SIZE ((size_t)30000)
+#define configTOTAL_HEAP_SIZE ((size_t)20000)
#define configMAX_TASK_NAME_LEN ( 32 )
#define configUSE_16_BIT_TICKS 0
#define configUSE_MUTEXES 1
diff --git a/README.md b/README.md
index 3d92b78..440d16b 100644
--- a/README.md
+++ b/README.md
@@ -211,7 +211,7 @@ ROOT:.
│ settings.json # 工作区配置文件,根据自己的需要配置
│ tasks.json # 任务配置文件,包括一键编译下载调试等
│
-├─assets # 说明文档的图片
+├─.assets # 说明文档的图片
├─application # 应用层
├─bsp # 板级支持包
├─modules # 模块层
@@ -230,11 +230,11 @@ ROOT:.
### 软件分层
-
+
### 运行任务
-
+
### 初始化流程
@@ -249,14 +249,10 @@ APP会调用其所有的模块的初始化函数(注册函数),这是因
main函数唯一需要的函数是app层的`robot.c`中的`RobotInit()`函数,它首先会调用BSP初始化,然后进行所有应用的初始化;每个应用会调用对应模块的初始化;一些依赖通信外设的模块会将通信支持相关的bsp进行初始化。初始化结束之后实时系统启动。
-
-
### 程序运行流程
-
-
-
+
### 程序数据流
-
\ No newline at end of file
+
diff --git a/STM32F407IGHx_FLASH.ld b/STM32F407IGHx_FLASH.ld
index 6a78a12..8f8f3b6 100644
--- a/STM32F407IGHx_FLASH.ld
+++ b/STM32F407IGHx_FLASH.ld
@@ -55,8 +55,8 @@ ENTRY(Reset_Handler)
/* Highest address of the user mode stack */
_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of RAM */
/* Generate a link error if heap and stack don't fit into RAM */
-_Min_Heap_Size = 0x6000; /* required amount of heap */
-_Min_Stack_Size = 0x6000; /* required amount of stack */
+_Min_Heap_Size = 0x5000; /* required amount of heap */
+_Min_Stack_Size = 0x5000; /* required amount of stack */
/* Specify the memory areas */
MEMORY
diff --git a/Src/freertos.c b/Src/freertos.c
index c7905f6..806343b 100644
--- a/Src/freertos.c
+++ b/Src/freertos.c
@@ -123,17 +123,17 @@ void MX_FREERTOS_Init(void)
void StartDefaultTask(void const *argument)
{
/* init code for USB_DEVICE */
- MX_USB_DEVICE_Init(); // USB初始化
+ MX_USB_DEVICE_Init(); // USB???
/* USER CODE BEGIN StartDefaultTask */
- vTaskDelete(NULL); // 删除默认任务,防止占用CPU
+ vTaskDelete(NULL); // ??????,????CPU
/* USER CODE END StartDefaultTask */
}
/* Private application code --------------------------------------------------*/
/* USER CODE BEGIN Application */
/**
- * @brief 注意,为方便统一管理,
- * 所有的机器人任务都在applicatoin/robot_task.h中进行
+ * @brief ??,???????,
+ * ??????????applicatoin/robot_task.h???
*
*/
/* USER CODE END Application */
diff --git a/VSCode+Ozone使用方法.md b/VSCode+Ozone使用方法.md
index 0a965bd..f443fd6 100644
--- a/VSCode+Ozone使用方法.md
+++ b/VSCode+Ozone使用方法.md
@@ -9,8 +9,6 @@
> 1. 添加一键编译+启用ozone调试脚本,使得整个进一步流程自动化
> 2. 增加更多的背景知识介绍
-
-
## 前言
了解过嵌入式开发的你一定接触过Keil,这款20世纪风格UI的IDE伴随很多人度过了学习单片机的岁月。然而由于其缺少代码补全、高亮和静态检查的支持,以及为人诟病的一系列逆天的设置、极慢的编译速度(特别是在开发HAL库时),很多开发者开始转向其他IDE。
@@ -57,7 +55,7 @@ CubeMX进行初始化 --> VSCode编写代/进行编译/简单调试 --> Ozone变
```shell
# 网盘中的文件:
basic_framework.zip # 本仓库文件,注意,可能不为最新,建议从仓库clone并定时pull
- daplink_register_license.rar # daplink license注册机
+ daplink_register_license.rar # daplink license注册机
gcc-arm-none-eabi-10.3-2021.10-win32.zip # arm-gnu-toolchain
JLinkARM.dll # 修改过的jlink运行链接库
JLink_Windows_V722b.exe # JLink软件包
@@ -86,7 +84,7 @@ C语言代码由固定的词汇(关键字)按照固定的格式(语法)
对于单个.c文件,从C语言开始到单片机可识别的.bin文件,一般要经历以下几步:
-
+
首先是编译**预处理**Preprocessing,这一步会展开宏并删除注释,将多余的空格去除。预处理之后会生成.i文件。
@@ -102,7 +100,7 @@ C语言代码由固定的词汇(关键字)按照固定的格式(语法)
### C语言内存模型
-
+
以上是C语言常见的内存模型,即C语言的代码块以及运行时使用的内存(包括函数、变量等)的组织方式。
@@ -112,7 +110,7 @@ C语言代码由固定的词汇(关键字)按照固定的格式(语法)
然后就是最重要的**堆**和**栈**。在一个代码块内定义的变量会被放在栈区,一旦离开作用域(出了它被定义的`{}`的区域),就会立刻被销毁。在调用函数或进入一个用户自定义的`{}`块,都会在栈上开辟一块新的空间,空间的大小和内存分配由操作系统或C库自动管理。**一般来说,直接通过变量访问栈内存,速度最快**(对于单片机)。而堆则是存储程序员自行分配的变量的地方,即使用`malloc(),realloc() ,new`等方法获取的空间,都被分配在这里。
-> 在CubeMX初始化的时候,Project mananger标签页下有一个Linker Setting的选项,这里是设置最小堆内存和栈内存的地方。如果你的程序里写了大规模的数组,或使用`malloc()`等分配了大量的空间,可能出现栈溢出或堆挤占栈空间的情况。需要根据MCU的资源大小,设置合适的stack size和heap size。
+> 在CubeMX初始化的时候,Project mananger标签页下有一个Linker Setting的选项,这里是设置最小堆内存和栈内存的地方。如果你的程序里写了大规模的数组,或使用`malloc()`等分配了大量的空间,可能出现栈溢出或堆挤占栈空间的情况。需要根据MCU的资源大小,设置合适的stack size和heap size。
RTOS创建任务的时候也会为每个任务分配一定的栈空间,它会替代MCU的硬件裸机进行内存的分配。可以在CubeMX中设置。如果一个任务里定义了大量的变量,可能导致实时系统运行异常,请增大栈空间。
@@ -132,7 +130,7 @@ RTOS创建任务的时候也会为每个任务分配一定的栈空间,它会
### Debug外设工作原理
-
+
DBG支持模块(红框标注部分,也可以看作一个外设)通过一条专用的AHB-AP总线和调试接口相连(Jtag或swd),并且有与**数据**和**外设**总线直接相连的桥接器。它还同时连接了中断嵌套管理器(因此同样可以捕获中断并进行debug)和ITM、DWT、FPB这些调试支持模块。因此DBG可以直接获取内存或片上外设内的数据而不需要占用CPU的资源,并将这些数据通过专用外设总线发送给调试器,进而在上位机中读取。
@@ -146,7 +144,7 @@ ITM是instrument trace macrocell指令追踪宏单元的缩写,它用于提供
### GDB调试MCU原理
-
+
不论使用MDK(KEIL)还是VSCode还是Ozone,实际上背后的流程相同。首先GDB会建立TCP/IP端口并提供接口,调试服务器(Server)作为硬件调试器和GDB软件的桥梁,将硬件调试器的相关功能(也就是DBG外设支持的那些功能)映射到GDB的接口上(通过连接到GDB建立的端口)。之后启动调试,将可执行文件下载到目标MCU上,然后从main开始执行
@@ -154,8 +152,6 @@ ITM是instrument trace macrocell指令追踪宏单元的缩写,它用于提供
> 而对于直接运行在电脑上的程序(.exe),就不需要GDBserver和物理调试器,GDB程序可以直接访问电脑上运行的程序和CPU的寄存器等。
-
-
### 字节对齐
这是内存硬件设计和汇编语言设计的结果。在使用结构体的时候,如果你不做任何事情,编译器会自动帮助你完成字节对齐以提高内存访问的效率。stm32是4字节地址和数据总线的设计,单词可以传输32位数据,因此,访问4字节数据(也就是stm32的“字”,“字长”)效率最高。然而,历史的缘由导致一个内存地址只存储8位的数据,如果你要访问float数据,则一次需要读取4个地址。当这四个地址是连续的时候,你只需要一次就可以将数据读出。然而,如果一个float数据被存放在0x03-0x07这四个地址,cpu首先要读出0x00-0x03这四个连续的地址,然后再取出最后一个字节;随后读取0x04-0x07这四个连续的字节,再取出前三个字节;最后将最后一个字节和前三个字节拼接在一起,形成我们需要的float数据。
@@ -178,17 +174,15 @@ typedef struct
如果您有兴趣,可以了解一下内存硬件的组织和连接方式,包括奇偶地址/片选/行列扩展等,可以帮助你更好地理解字节对齐。
-
-
## 环境配置
> ***所有需要编辑的配置文件都已经在basic_framework的仓库中提供,如果不会写,照猫画虎。***
> 2022-12-01更新:
>
-> **VSCode上线了一款新的插件:**
+> **VSCode上线了一款新的插件:**
>
-> 
+> 
>
> 支持一键配置Arm GNU工具链、MinGW64(make工具)和OpenOCD!可以尝试使用这个插件替代下面的配置流程。并且,此插件还提供了一键下载、一键调试的支持,只需要选择合适的下载器配置即可,全部都是图形化界面的操作!
>
@@ -206,17 +200,15 @@ typedef struct
- **Cortex-Debug**,**Cortex-Debug: Device Support Pack - STM32F4**:提供调试支持。cortex debug还会自动帮助你安装一些调试相关的插件。
- **IntelliCode**,**Makfile Tools**:提供代码高亮支持
- 
+ 
- 
+ 
- 
+ 
- 
+ 
- 
-
-
+ 
> MinGW、Arm GNU toolchain和OpenOCD也可以通过**MSYS2**使用pacman包管理器(和apt/yum类似)直接安装,这种方法一步到位,**==这是更推荐使用的方式==**,请参看[附录5](##附录5:利用MSYS2安装依赖环境)。
>
@@ -224,17 +216,17 @@ typedef struct
- 安装MinGW,等待界面如下:(will be deprecated soon,请注意这种方法将会在主分支发布正式版的时候删除)
- 
+ 
安装好后,打开MinGW后将所有的支持包勾选,然后安装:
- 
+ 
- 
+ 
安装完以后,将MinGW的bin文件夹添加到环境变量中的path下,按下菜单键搜索**编辑系统环境变量**打开之后:
- 
+ 
图片看不清请打开原图。验证安装:
@@ -244,7 +236,7 @@ typedef struct
- 配置gcc-arm-none-eabi环境变量,**把压缩包解压以后放在某个地方**,然后同上,将工具链的bin添加到PATH:(will be deprecated soon,请注意这种方法将会在主分支发布正式版的时候删除)
- 
+ 
+
- **订阅者:**
需要注意,由于不同应用/模块的初始化顺序不同,可能出现订阅者先于发布者订阅某一消息的情况,所以要进行发布者链表的遍历,判断是否已经存在相同话题名的发布者,不存在则要先创建发布者结点再将新建订阅者结点并挂载到前者上。
-
+
### 推送/获取消息的流程
- **数组+头尾索引模拟队列**
-
+
front指向队列头,即最早入队的数据;back指向队列尾,即最新的数据。队列是first in first out(FIFO,先进先出)的结构。back指向的位置是入队数据被写入的位置,front指向的是读取时会出队的位置。当有数据入队,back++;出队则front++。若碰到数组边界,则返回数组头,可以通过取模实现:
@@ -150,8 +140,6 @@ queue[front]=new_data;
front=(front+1)%SIZE_OF_ARRAY;
```
-
-
- **发布者推送消息到指定话题**
通过发布者指针,将订阅了该话题的所有订阅者遍历,将新数据入队。
@@ -160,8 +148,6 @@ front=(front+1)%SIZE_OF_ARRAY;
从订阅者指针访问消息队列,取出最先进入队列的数据。注意判断队列是否为空,如果为空则返回0。
-
-
## 示例代码
```c
@@ -191,4 +177,4 @@ d=SubGetMessage(s,&g1);
d=SubGetMessage(s,&g1);
d=SubGetMessage(s,&g1); // 此时d等于0
d=SubGetMessage(ss,&g2);
-```
\ No newline at end of file
+```