一. STM32 基础知识

一. 启动文件

Heap_Size:需要使用动态内存分配时,就用到 Heap_Size,并根据实际最大需求设置足够的值;如果项目完全不需要动态内存,将 Heap_Size 设为 0 是最佳实践,可以节约宝贵的 RAM 资源。
对于FreeRTOS:
heap_1 / heap_2 / heap_4 / heap_5:使用内部静态数组 ucHeap,不依赖 malloc → Heap_Size 可设为 0。
heap_3:直接调用 malloc/free → 必须为 C 库堆分配足够空间,即 Heap_Size 要大于 0。

二. 关于#include

1)语法

1.#include <...>:用于包含 系统头文件 或通过 -I 等选项指定的 第三方库头文件。

2.#include "...":通常用于包含 项目内部头文件。搜索顺序先检查当前文件所在目录,再按系统路径搜索。

2)编译器的头文件搜索路径

编译器维护一个头文件搜索路径列表,按照顺序查找。路径通常包括:
1.系统默认路径:如 /usr/include、/usr/local/include(GCC)、MSVC 的 VS 安装目录下的 include 等。
2.用户通过 -I(GCC/Clang)或 /I(MSVC)指定的路径。
3.当前文件所在目录(仅对 #include "..." 有效)。

GCC/Clang 搜索顺序:

对于 #include "header.h"
1.当前文件所在的目录。
2.-iquote 选项指定的目录(如果有)。
3.-I 选项指定的目录(按出现顺序)。
4.系统默认路径。

对于 #include <header.h>
1.-I 选项指定的目录(GCC 中 -I 也会影响 <> 的搜索,但可以通过 -isystem 区分)。
2.系统默认路径。

三.内存布局

FLASH 占用 = Code + RO + RW:因为 RW 的初始值必须保存在 FLASH 中。
SRAM 占用 = RW + ZI:因为运行时变量必须驻留在 RAM 中。

四.系统结构

image

posted on 2026-03-21 23:21  董事长Hi  阅读(4)  评论(0)    收藏  举报