1. 三种库的选择与静态库构建的意义
STM32 开发初期,面对标准外设库(SPL)、HAL 库和 LL 库,各有特点。标准库直接操作寄存器,效率高但代码量大;HAL 库抽象程度高,移植方便但稍显臃肿;LL 库则介于两者之间,既有一定的抽象又不失效率。
创建静态库(.lib 文件)的主要目的是代码复用和封装。将稳定的驱动或算法编译为静态库后,其他项目可直接调用,无需重新编译源代码。这不仅提高了开发效率,还能保护核心代码不被随意修改。多产品线项目常采用此方式,减少重复工作。
静态库与动态库的最大区别在于链接时机。静态库在编译时就被整合到最终的可执行文件中,而动态库则在运行时才被加载。对于嵌入式开发来说,静态库更简单可靠,不需要复杂的加载机制,特别适合资源受限的 STM32 平台。
2. 工程准备与环境搭建
2.1 开发环境配置
首先需要准备好开发环境。推荐使用 Keil MDK,其生态完善,对 STM32 支持很好。安装完 Keil 后,记得安装对应的 STM32 器件支持包,可在 Keil 的 Pack Installer 中找到。如果使用其他开发环境如 IAR 或者 STM32CubeIDE,原理也是相通的。
创建一个良好的工程目录结构很重要。建议目录结构如下:
Template/
├── Drivers/
│ ├── SPL/ # 标准外设库文件
│ ├── HAL/ # HAL 库文件
│ └── LL/ # LL 库文件
├── User/
│ ├── Inc/ # 用户头文件
│ └── Src/ # 用户源文件
└── Projects/ # 各库的工程文件
2.2 基础文件准备
无论使用哪种库,都需要准备一些基础文件。中断处理文件 stm32f4xx_it.c 和 stm32f4xx_it.h 是必须的,这些文件包含了系统异常

