Clion配置STM32F103开发环境
构建系统层次
CMake/Make
{CMake——make工具——编译器}
写makefile文件,然后用mingw32-make工具执行makefile文件来实现编译,这样对于大型,文件很多的工程就不用手动去gcc编译每每一个文件了。
但makefile文件的格式太晦涩难懂,不太好写,所以人们就想能不能模版化的生成makefile文件,所以出现了cmake。我们只要写cmakelist文件,然后把cmakelist文件丢给cmake,cmake就会生成makefile文件,然后再把makefile文件丢给mingw32-make工具,就可以执行编译了。编译则是调用本机 ARM-GCC 执行编译链接。

Ninja
Ninja 是一个专注于速度的小型构建系统,是输入第二层Make工具中的一种。
mingw32-make:
- 特点:历史悠久,功能强大,语法(Makefile)相对复杂,人为编写容易出错。
- 速度:在大型项目中,解析 Makefile 和启动编译任务的速度相对较慢。
Ninja:
- 特点:设计极简,专为机器生成(而非人类手写)而优化。它的语法非常枯燥但解析速度极快。
- 速度:极快。它的核心设计目标就是让构建过程(尤其是链接阶段)尽可能少地消耗时间在工具本身,而是把时间花在编译器上。
在大型项目(比如 Chrome 浏览器、Android 系统、LLVM 编译器)中,使用 Ninja 可以比 Make 节省大量的构建时间,Ninja = 更快的 mingw32-make。
在刚才的过程中,可以把Mingw32-make换成Ninja,那么流程如下:
1.编写CmakeList.txt。
2.告诉CMake使用Ninja生成器。
3.CMake会生成build.ninja文件而非Makefile。
4.Ninja读取build.ninja并执行编译。
交叉编译器(ARM-GCC)
运行编译器的CPU架构,与编译得到的可执行程序运行的机器的CPU架构不同,则称这种编译器为交叉编译器。
因为有的机器就没有运行编译器的能力,所以才需要交叉编译器。比如单片机就没有运行编译器的能力。
ARM-GCC(arm-none-eabi-gcc):整套编译底层工具链
全称ARM GNU Toolchain arm-none-eabi-gcc,跨平台开源 ARM 交叉编译器,区别电脑端 x86 GCC:专门编译 C/C++ 生成 Cortex-M 内核(STM32)裸机二进制,无操作系统依赖(none-eabi=No OS、Embedded Application Binary Interface)。
Clangd
Clangd是提升编码体验的神器,能够在嵌入式项目中实现代码补全,自动跳转函数定义等功能。
VScode本身是轻量级的代码编辑器,什么都不懂,不懂C语言,也不懂python等等语言,需要自己给VScode安装插件, 比如C/C++插件,或者Clangd。
Clion不需要Clangd,因为CLion 是 JetBrains 专门为 C/C++ 打造的重型集成开发环境(IDE)。他天生就具有Clangd,天生具有C/C++语言的代码补全/自动跳转等功能。
OpenOCD
OpenOCD 在这个开发环境中负责以下两件事:
1.固件烧录(Flashing):当你编译好代码后,OpenOCD 负责通过调试器(如 ST-Link、J-Link 或 DAP-Link),将生成的程序文件写入 STM32 芯片的 Flash 存储器中。
2.在线调试(Debugging):它会在电脑上开启一个 GDB Server(调试服务器)。VSCode(配合 Cortex-Debug 插件)会连接到这个服务器,从而实现对单片机的控制。







