【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

本文章以创建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的包含始终产生报错)。

三、在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)”,表示工程通过编译,没有任何问题。

验证工程模板正确性
此时,工程模板的建立已经完成。
后续所有的代码编写,都会以这个工程模板为准。
- 意法半导体中国本地造STM32微控制器启动规模量产
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 基于机智云与STM32的智能拐杖安全监测系统在养老物联网中的应用
- 内置全栈安全,一站式满足CRA法案与IEC 62443标准——米尔STM32MP257核心板
- 如何用 STM32 FLASH 实现等效 100 万次擦写的 EEPROM 功能?
- 实战解析:通过一个小项目掌握STM32所有外设
- STM32学了两年半,却还是不会做项目
- 意法半导体推出最新STM32MP21微处理器,兼具高性价比、低功耗、高灵活性
- 基于STM32的矿井作业环境监测系统设计与实现
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 蓝牙信道探测技术原理与开发套件实践
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策




