FreeRTOS基础篇(三)——搭建linux工程
FreeRTOS基础篇(三)——搭建linux工程
前言:
本篇文章介绍如何在linux环境下搭建FreeRTOS工程。
1 linux环境搭建STM32工程
1.1 下载STM32库
以STM32F10x库为例,下载官方库。STM32地层的操作可以分为三类。
- 标准外设库(SPL):官方已停止维护。它是对STM32芯片寄存器进行操作的一系列函数的集合。它没有复杂的抽象层,效率很高,但需要开发者对芯片外设和寄存器有一定的了解。
- 硬件抽象层库(HAL/LL):HAL库是ST目前主推的核心库,旨在解决SPL的可移植性问题。提供了非常高级的API接口(如HAL_UART_Transmit()),极大简化了代码编写。开发者无需深入了解底层寄存器细节即可快速开发。HAL库的API在不同系列的STM32芯片之间高度统一。更换芯片时,应用层代码通常只需少量修改甚至无需修改。由于抽象层较厚,代码量和执行效率相比SPL和LL库要差一些。在中断频繁、时序要求极其苛刻的场景可能需要优化。LL库和HAL库可以混合使用。例如,对性能要求高的部分(如串口中断)使用LL库,其他部分使用HAL库。STM32CubeMX可以配置为同时生成两者。LL库的API非常精简,本质上是对寄存器操作的直接映射,效率极高,几乎与直接操作寄存器或SPL相当。
- 底层寄存器操作:没有复杂的抽象层,效率很高,但需要开发者对芯片外设和寄存器有一定的了解。
| 特性 | 标准外设库 | 硬件抽象层库 | 底层库 | 寄存器操作 |
|---|---|---|---|---|
| 抽象程度 | 中等(寄存器封装) | 高(高度抽象) | 低(接近寄存器) | 无(直接操作) |
| 易用性/开发速度 | 中等 | 极高(配合CubeMX) | 中等 | 极低 |
| 执行效率 | 高 | 相对较低 | 非常高(接近SPL) | 最高 |
| 代码体积 | 小 | 相对较大 | 非常小 | 最小 |
| 可移植性 | 差(系列内可移植) | 极好(跨系列移植) | 一般(系列内或相似系列) | 无 |
| 维护状态 | 已停产 | 官方主推、持续更新 | 官方维护、持续更新 | N/A |
| 学习难度 | 中等(需懂外设) | 低(快速上手) | 中高(需懂外设) | 极高 |
| 推荐使用场景 | 老项目维护、高性能需求 | 新项目、快速开发、初学者 | 高性能驱动、替代SPL | 极端优化、特殊需求 |
以STM32F10x为例,下载SPL标准库,在ST32官网 下载 即可,点击下载最新版本的标准外设库。

下载的压缩包为 stsw-stm32054_v3-6-0.zip 。使用以下指令解压。
1 | unzip stsw-stm32054_v3-6-0.zip |
实际的项目中,建议首选HAL库,其可维护性、可移植性以及官方长期支持的优势是产品开发的首要考虑。对于性能瓶颈处的关键代码,可以混合使用LL库或甚至直接寄存器操作进行优化。
本篇文章以主流的HAL库为例,官方更推荐HAL库,可以从官网 下载 STM32F1的HAL库。也可以从github上克隆官方仓库获取HAL库。
1 | git clone git@github.com:STMicroelectronics/STM32CubeF1.git |
下载和安装Arm工具。
1 | sudo apt update |
设置交叉编译工具链。
1 | set(CMAKE_SYSTEM_NAME Generic) |
表示将CMake配置为进行跨平台编译, CMAKE_SYSTEM_NAME 是CMake的特殊变量,用于指定目标系统的名称,通常设置为标准操作系统名称,如 Linux、Windows、Darwin(macOS)等。当设置为 Generic 时,表示目标平台没有标准的操作系统。
1 下载STM32F10x库
stm32官方提供两种库,标准库和HAL库。
| 宏定义 | 用途 |
|---|---|
USE_STDPERIPH_DRIVER |
启用 STM32 标准外设库支持 |
USE_HAL_DRIVER |
启用 STM32 HAL 库支持(用于 STM32Cube) |
克隆STM32CubeF1 HAL库源码,将其clone到 /src/lib/stm32/f10x 目录下,作为子仓库。
2 下载FreeRTOS内核库
通过指令以下指令获取FreeRTOS内核源码,将其clone到 /src/lib/freertos/Kernel 目录下,作为子仓库。
1 | git clone git@github.com:FreeRTOS/FreeRTOS-Kernel.git |
3 添加FreeRTOSConfig.h
在 src/lib/freertos 目录下创建 FreeRTOSConfig.h 文件,内容如下。
1 | ``` |
5 编写CMake
在工程根目录下编写CMakeLists.txt,内容如下。
1 | ``` |
在
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 OnlyCalm's Blog!
评论
ValineGitalk







