单片机
返回首页

【STM32 HAL库】HAL库的移植及工程模板的建立

2025-10-29 来源:elecfans

文章内容偏向HAL库的移植和使用,以个人观点及了解为主,若与事实不符,则以www.st.com、www.stmcu.org.cn等平台为准。

使用的软件:VSCode(1.36版,带C/C++ IntelliSense插件)

                      Keil MDK(5.26版)

芯片:STM32H743ZIT6(Nucleo-H743平台)

所使用的库:STM32Cube_FW_H7_V1.3.0,下载地址:https://www.st.com/content/st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32cube-mcu-mpu-packages/stm32cubeh7.html

cut-off

        本文章以创建STM32H7 HAL库工程模板来介绍HAL库的移植        

一、文件的拷贝

        首先,建立一个文件夹,用于存放工程模板。在这个文件夹中建立如下文件夹:Project、Output、CMSIS、HAL_Libraries、Driver、User,其中,Driver文件夹下再建立两个文件夹:inc、src。

建立的全部文件夹

        各个文件夹的作用:

                Project:存放Keil MDK工程文件及其配置文件

                Output:存放Keil MDK生成的中间文件和目标文件

                CMSIS:存放Cortex微控制器软件接口标准文件

                HAL_Libraries:存放HAL库代码文件

                Driver:存放用户编写的外设驱动程序

                User:存放用户程序

        接下来,从STM32Cube_FW_H7库中向工程模板拷贝文件。

        先向CMSIS文件夹拷贝文件,需要拷贝如下文件:

要向CMSIS文件夹添加的文件

       

添加完成的CMSIS文件夹

        之后是向HAL_Libraries文件夹拷贝HAL库文件,这一步比较简单,直接将STM32Cube_FW_H7_V1.3.0DriversSTM32H7xx_HAL_Driver下的inc、src两个文件夹拷贝至HAL_Libraries下即可。

完成拷贝的HAL_Libraries文件夹

        最后是向User文件夹拷贝文件,将STM32Cube_FW_H7_V1.3.0ProjectsSTM32H743ZI-NucleoTemplates下的inc、src文件夹拷贝到User文件夹下即可。

完成拷贝的User文件夹

        因为User文件夹是从NUCLEO-H743的示例中拷贝的,所以需要对其中的文件进行一些修改。删除Userincmain.h中的第42行、Usersrcmain.c中的第86-88行和93-101行。

main.h文件中要删除的代码

main.c中要删除的代码

  二、配置VSCode。

        在上两张图中可以看到Explorer窗口中有一些文件有报错,这是因为现在还没有设置当前工作区("STM32H743 工程模板"文件夹)的IncludePath属性,所以VSCode会使用默认路径。这对工程模板的创建和使用并没有任何影响,但会由于无法加载工程模板中的头文件,使VSCode的一些功能无法使用。因为专栏不能插入短视频,所以不讲解详细的配置过程。只给出配置信息。

        在工程模板根目录下创建一个文件夹.vscode,在其中创建settings.json文件,写入以下内容(全部在英文输入法下写入):

{

    "C_Cpp.default.includePath":

    [

        "CMSIS",

        "Driver/inc",

        "HAL_Libraries/Inc",

        "HAL_Libraries/Inc/Legacy",

        "User/Inc"

    ],

    "C_Cpp.errorSquiggles": "Disabled"

}

settings.json文件中的内容

其中includePath属性需要填写所有存放了头文件的路径,errorSquiggles属性为Disabled表示不进行报错(这是因为头文件库有冲突,会因为stdio.h的包含始终产生报错)。

cut-off

三、在Keil MDK中创建工程

        在菜单栏中选择Project->New uVision Project,将工程文件的位置设置为工程模板的Project文件夹下。

新建工程

        单击保存,在接下来弹出的对话框的Search编辑框中搜索MCU型号,选择STM32H743ZITx。

选择MCU型号

        单击OK,对于之后弹出运行时环境配置,不必理睬,直接关闭就好。

        点击红圈中的品字形按钮,打开Manage Project Items对话框。

        作出如下修改,之后单击OK按钮退出。

做出的修改

        完成上述操作后,MDK软件左侧的Project窗口将会显示上一步新建的4个分组。不过现在这四个分组全部都是空的,下一步就是向4个分组中添加文件。

        向分组添加文件的方法是双击树状图中的分组,软件会弹出添加文件的对话框,双击要添加的文件据可以将文件添加到对应的分组。如下图:

向User分组添加文件

动图

向CMSIS分组添加文件时要注意文件类型

动图

向HAL_Libraries分组添加文件

        对于向分组中添加的文件,除CMSIS分组外,其他的分组中文件全部来自对应文件夹下的src文件夹中。由于Driver文件夹下还没有代码文件,所以暂时不向Driver分组中添加文件。所有要添加的文件都已在动态图中给出。

        所有文件添加完成后,对工程进行一些配置。

        单击魔术棒图标,打开Options for Target对话框。

动图

        第一步,修改中间文件和输出文件的位置,需要修改Output和Listing选项卡中的输出文件位置,输出到工程模板的Output文件夹下。

动图

在Output选项卡和Listing选项卡中修改文件输出路径

        第二步,修改编译信息,在C/C++选项卡下。需要在Define中定义两个宏USE_HAL_DRIVER,STM32H743xx(英文逗号隔开),并在IncludePath中添加头文件目录,这里的头文件目录和VSCode下的头文件目录相同。

动图

在C/C++选项卡中添加宏

动图

在C/C++选项卡中添加头文件目录

        关于添加头文件目录的动态图,因为最初录制的GIF太大无法上传,所以除CMSIS文件夹的路径外,其他4个路径都把详细的添加方法抽出了,可以参考添加CMSIS文件夹的方法。

        第三步,修改调试器,位于Debug选项卡,按照下图设置后,一定要单击“确定”和“OK”才能使设置生效。

动图

修改调试器

        最后,单击“全部重新编译”按钮,等待Keil MDK编译工程,最后输出“0 Error(s) 0 Warning(s)”,表示工程通过编译,没有任何问题。

验证工程模板正确性

        此时,工程模板的建立已经完成。

        后续所有的代码编写,都会以这个工程模板为准。


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦四级调频发射机

  • 500W MOS场效应管电源逆变器,12V转110V/220V

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • 12V转110V/220V 500W逆变器

  • DS1669数字电位器

    相关电子头条文章