如何将BSP添加到STM32CubeIDE项目

1.简介


STMicroelectronics为所有STM32评估板和Nucleo板以及探索套件提供BSP(板支持包)。在本文中,我们将看到如何将BSP添加到STM32CubeIDE项目中。
 

2.先决条件

 
  • 硬件:
  • 用于为板供电和编程的迷你USB电缆
  • STM32L496G-DISCO(B版)

 
  • 软件:STM32管

3.理论

ST的所有STM32板都包括微控制器以及从按钮开关和LED到更先进的设备(包括传感器、显示器等)的基本组件(有关详细信息,请查看感兴趣的特定板的文档)。为了帮助简化附加组件的使用,ST在每个板的BSP中提供了特定的驱动程序。这些BSP包含在每个STM32立方体固件库中。
在本文中,我们将学习如何将BSP添加到STM32CubeIDE项目中。我们将使用STM32L496G-DISCO套件,并将了解如何添加BSP,特别是板上显示器的驱动程序。
然后,我们将开发一个简短的应用程序,初始化LCD并在其上显示消息。


4.步骤 

  1. 打开STM32CubIDE  

  2. 使用STM32L496G-DISCO创建新项目



 
  1. 为项目命名

对于这篇文章,我将把我的项目称为“AddBSP”
  1. 使用默认设置初始化所有外围设备:

要执行此操作,请单击下面的“是”:

这将创建我们的模板项目。
  1. 添加BSP

在这一步骤中,我们将为STM32L496G发现套件添加所需的BSP驱动程序,以便能够在我们的案例中使用显示器进行应用。
首先打开创建项目的目录。要了解项目的创建位置,请转到“文件”->“从文件系统打开项目”:

这将打开一个窗口,指示项目所在的位置,在我的情况下:

“xxxxx”表示我的用户名。
现在使用资源管理器打开项目所在的目录。项目结构应如下所示:

现在转到“驱动程序”目录。

这是我们将添加BSP文件的地方。
在第二个资源管理器窗口中,打开STM32CubeL4 FW Library文件夹,该文件夹应位于磁盘上的以下位置:
C: \用户\ xxxxxxxxxx\ STM32多维数据集\存储库\ STM32Cube_FW_L4_Vx.y.z
其中,如果您使用的是Windows,“xxxxxxxxxx”是您的用户名,“Vx.y.z”是STM32Cube Library的版本,在我的情况下,我使用的是1.17.0版本。
在STM32CubeL4目录中,转到Drivers目录以查找BSP:

现在复制此目录并将其粘贴到另一个窗口中项目的Drivers文件夹中:

删除文件夹的其余部分,只保留与STM32L496 Discovery Kit相关的部分。

现在转到Components目录,只保留以下组件:

“通用”包括任何评估委员会可用的所有组件。文件夹“mfxstm32l152”是STM32L4的配套文件,由于驱动程序中的依赖性,需要将其包括在内,“st7789h2”包含STM32L496G Discovery上显示的组件。
在STM32L496G Discovery中,我们将只保留这些文件,因为我们不会使用板的所有功能,我们将在本例中使用显示器。

上面列出的是能够使用BSP显示驱动程序的绝对最小文件。
我们还将把STM3Cube库中的Utilities文件夹添加到我们的项目中,因为BSP使用了该文件夹中的一些文件。您将在STM32L4Cube FW Library的根目录中找到的Utilities文件夹,如下所示:

将文件夹复制并粘贴到您的Project目录中,如下所示:

现在返回STM32CubeIDE。在项目资源管理器窗口中,项目结构应如下所示:

现在,通过左键单击“项目名称”并选择“刷新”来刷新项目:

这将把BSP文件夹和子文件夹以及所有源文件添加到我们的项目中。
  1. 项目修改

由于一些驱动程序的依赖性,我们需要从HAL配置文件中添加Timer HAL驱动程序。从项目浏览器中打开位于Core->Inc下的stm32l4xx_hal_conf.h文件,并定义hal_TIME_MODULE_ENABLED以包含BSP使用的计时器驱动程序:

 
  1. 添加代码

我们将添加BSP提供的一些功能,以使用板载显示器。我们将初始化显示器,然后使用一些BSP函数在显示器上显示一个句子。
 
/*用户代码开始包括*/#include“../../../Drivers/BSP/STM32L496G Discovery/STM32L496G_Discovery.h”#include(0,240-65,(uint8_t*)“BSP示例”,CENTER_MODE);/*用户代码端2*/

注意:如果发现套件的SD卡插槽中没有插入SD卡,则需要注释SDMMC外围设备的初始化(//MX_SDMMC1_SD_Init();):

 
  1. 现在构建代码,加载它,并重置板以开始执行。

LCD初始化后,将显示文本“BSP Example”(BSP示例)。


5.链接

产品介绍-STM32L496xx-超低功耗Arm®Cortex®-M4 32位MCU+FPU,100 DMIPS,高达1MB Flas。。。
STM32L47xxx、STM32L48xxx、STM22L49xxx和STM32L44xxx基于Arm®的高级32位MCU-参考手册。。。
STM32CubeIDE-STM32集成开发环境-STMicroelectronics
32L496GDISCOVERY-带STM32L496AG MCU的Discovery套件-意法半导体
STM32CubeL4-适用于STM32L4系列和STM32L4Plus系列的STM32Cube MCU封装(HAL、低层API。。。