From decfa4f440aea9193ceb489f7f076ab4f8c482b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=82=B2=E7=90=A6?= Date: Mon, 18 May 2026 20:14:39 +0800 Subject: [PATCH] add README.md --- README.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..73c3d90 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +# 基于Cmake编译的STM32标准库项目模板 + +## 项目概述 +本项目提供了一个基于 CMake 和 `gcc-arm-none-eabi` 编译器的模板,用于开发 STM32 微控制器的应用程序。它配置了必要的编译选项和链接脚本,使得开发者可以轻松地开始编写针对 STM32F103 系列微控制器的代码,并可在此基础上修改以支持其他控制器。 + +## 主要特性 +- **CMake 构建系统**:使用 CMake 来管理项目的构建过程,支持跨平台编译。 +- **GCC ARM Embedded 工具链**:利用 `gcc-arm-none-eabi` 编译器为 ARM 架构生成可执行文件。 +- **STM32 标准外设库**:集成了 STM32 标准外设库,简化硬件抽象层的开发。 +- **灵活的编译选项**:支持 Debug 和 Release 两种编译模式,并且可以通过 CMake 配置进行自定义调整。 +- **预设的链接脚本**:包含一个默认的链接脚本 `STM32F103C8TX_FLASH.ld`,适用于 STM32F103C8T6 微控制器。 + +## 项目结构 +``` +STM32-CMake-Demo +├── build/ # 构建输出目录 +├── cmake/ # CMake 相关文件 +│ ├── stm32base/ # STM32 基础库配置 +│ └── gcc-arm-none-eabi.cmake # GCC ARM Embedded 工具链配置 +├── Libraries/ # 外部库(如 STM32 标准外设库) +├── USER/ # 用户源码及头文件 +├── .gitignore # Git 忽略文件列表 +├── CMakeLists.txt # 顶层 CMake 配置文件 +├── CMakePresets.json # CMake 预设配置 +└── STM32F103C8TX_FLASH.ld # 链接脚本 +``` + + +### 关键文件说明 +- **CMakeLists.txt**: 顶层 CMake 脚本,定义了整个项目的编译设置、源文件以及链接库等信息。 +- **cmake/gcc-arm-none-eabi.cmake**: 定义了 GCC ARM Embedded 工具链的具体配置,包括编译器路径、标志等。 +- **USER/src/main.c**: 示例主函数入口点,演示了如何初始化 LED 并实现简单的闪烁功能。 +- **Libraries/**: 包含了 STM32F10x 标准外设库及其相关文件。 +- **STM32F103C8TX_FLASH.ld**: 针对特定型号 STM32 微控制器的内存映射链接脚本。 + +## 开始使用 +1. 确保已安装以下工具: + - CMake (版本 >= 3.22) + - `gcc-arm-none-eabi` 编译器套件 +2. 克隆此仓库到本地。 +3. 在项目根目录下创建一个构建目录并进入该目录: +```shell script +mkdir build && cd build +``` + +4. 运行 CMake 配置命令: +```shell script +cmake .. +``` + +5. 编译项目: +```shell script +make +``` + + +## 示例代码 +示例代码位于 `USER/src/main.c` 中,展示了如何通过 GPIO 控制板载 LED 的亮灭。更多详细信息请参阅源代码。 \ No newline at end of file