2024年5月27日发(作者:)

STM32 系列 BSP 制作教程

为了让广大开发者更好、更方便地使用 BSP 进行开发,RT-Thread 开发团队重新整理了现有的 STM32

系列的 BSP,推出了新的 BSP 框架。新的 BSP 框架在易用性、移植便利性、驱动完整性、代码规范性

等方面都有较大提升,在新的 BSP 框架下进行开发,可以大大提高应用的开发效率。

和 RT-Thread 以往提供的 BSP 不同,在新的 BSP 文件夹中将不会包含固件库、外设驱动等可以被多个

BSP 引用的代码文件。而是将这些通用的文件统一存放在 Library 文件夹中,通过在特定 BSP 中引用这

些文件的方式,来包含 BSP 中所需的库文件或者驱动文件。这种方式不仅大大提高了代码复用率,降

低了 BSP 的维护成本,而且可以更方便地给开发者提供更丰富的驱动文件,让开发者可以更容易地找

到自己需要的资源。

新的 BSP 框架还引入了 CubeMX 工具,可以使用该工具来对 BSP 中使用的外设引脚进行配置。

CubeMX 工具提供了图形化的配置界面,这种图形化的配置方式对开发者来说更加直观,不仅可以让开

发者灵活地配置 BSP 中使用的资源,并且可以让开发者对资源的使用情况一目了然。

新 BSP 框架的主要特性如下:

提供多系列 BSP 模板,大大降低新 BSP 的添加难度;

每个 BSP 都配有齐全的驱动文件,开发者可以方便地使用所有驱动;

开发者可以使用 CubeMX 工具对 BSP 进行图形化配置;

1. BSP 框架介绍

BSP 框架结构如下图所示:

每一个 STM32 系列的 BSP 由三部分组成,分别是通用库、BSP 模板和特定开发板 BSP,下面的表格以

F1 系列 BSP 为例介绍这三个部分:

项目

通用库

F1 系列 BSP 工

程模板

特定开发板

BSP

文件夹

stm32/libraries

说明

用于存放 HAL 库以及基于 HAL 库

的多系列通用外设驱动文件

F1系列 BSP 模板,可以通过修改

该模板制作更多 F1系列 BSP

在 BSP 模板的基础上修改而成

stm32/libraries/templates/stm32f10x

stm32/stm32f103-atk-nano

2. 知识准备

制作一个 BSP 的过程就是构建一个新系统的过程,因此想要制作出好用的 BSP,要对 RT-Thread 系统

的构建过程有一定了解,需要的知识准备如下所示:

掌握 stm32 系列 BSP 的使用方法

了解 BSP 的使用方法,可以阅读 BSP 说明文档 中使用教程表格内的文档。了解外设驱动的添加方

法可以参考《外设驱动添加指南》。

了解 scons 工程构建方法

RT-Thread 使用 scons 作为系统的构建工具,因此了解 scons 的常用命令对制作新 BSP 是基本要

求。

了解设备驱动框架

在 RT-Thread 系统中,应用程序通过设备驱动框架来操作硬件,因此了解设备驱动框架,对添加

BSP 驱动是很重要的。

了解 kconfig 语法

RT-Thread 系统通过 menuconfig 的方式进行配置,而 menuconfig 中的选项是由 kconfig 文件决

定的,因此想要对 RT-Thread 系统进行配置,需要对 kconfig 语法有一定了解。

熟悉 CubeMX 工具的使用

在新的 stm32 系列 BSP 中利用了 CubeMX 工具对底层硬件进行配置,因此需要了解 CubeMX 工

具的使用方法。

3. BSP 制作方法

本节以制作正点原子

stm32f103-atk-nano

开发板的 BSP 为例,讲解如何为一个新的开发板添加

BSP。

BSP 的制作过程分为如下五个步骤:

1. 复制通用模板

2. 使用 CubeMX 工具配置工程

3. 修改 BSP 中的 Kconfig 文件

4. 修改构建工程相关文件

5. 重新生成工程

在接下来的章节中将会详细介绍这五个步骤,帮助开发者快速创建所需要的 BSP。

3.1 复制通用模板

制作新 BSP 的第一步是复制一份同系列的 BSP 模板作为基础,通过对 BSP 模板的修改来获得新 BSP。

目前提供的 BSP 模板系列如下表所示:

工程模板

libraries/templates/stm32f0xx

libraries/templates/stm32f10x

libraries/templates/stm32f4xx

libraries/templates/stm32f7xx

libraries/templates/stm32l4xx

说明

F0 系列 BSP 模板

F1 系列 BSP 模板

F4 系列 BSP 模板

F7 系列 BSP 模板

L4 系列 BSP 模板