飞书文档https://x509p6c8to.feishu.cn/wiki/CUvuwtUBQihnMKkpuc5cv3lgnkh
传统手动创建工程方法非常繁琐,现阶段已经不需要使用,了解即可。
HAL库工程手工搭建
一、下载STM32对应系列的HAL库支持包
1.1、手动下载库
https://www.st.com/zh/embedded-software/stm32cubef1.html
1.2、使用STM32CubeMX安装的支持包
STM32CubeMX安装完成后,创建工程时,也会自动安装对应系列的库,安装路径在Update Settings的Firmware Repository中
二、新建工程文件夹
新建文件夹Template,在该文件夹内新建Core、Driver、MDK-ARM三个子文件夹
Core Core内部新建Inc和Src两个文件夹,存放自己编写的程序文件和STM32相关的头文件、c文件Core/Inc
HAL库的“STM32Cube_FW_F1_Vxxx\Projects\STM32F103RB-Nucleo\Templates\Inc”目录下文件复制到本文件夹下: |
Core/Src
HAL库的“STM32Cube_FW_F1_Vxxxx\Projects\STM32F103RB-Nucleo\Templates\Src”目录下文件复制到本文件夹下: |
Drivers存放HAL库相关外设文件
复制以下两个文件夹到Drivers中,可以压缩后再复制 |
MDK-ARM存放MDK工程相关文件
MDK工程文件 |
三、新建MDK工程
打开Keil-MDK,新建工程(Project-new uVersion Project),保存在“Template\MDK-ARM”目录下,工程名称可以根据自己的项目命名。
然后根据项目使用的CPU具体型号来选择选择芯片,这里使用STM32F103RC。
打开Manage Project Items窗口,进行如下设置
添加MDK-ARM、Driver、Core
在Groups MDK-ARM中,添加启动文件startup_stm32f103xe.s
打开"Template\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm",添加startup_stm32f103xe.s
这里根据不同芯片容量大小选择,STM32F103RC是大容量(芯片手册),所以选择hd后缀的文件。
这是ST提供的4个启动文件,分别适用于不同容量的STM32芯片。 |
在Groups Drivers中,添加Template\Drivers\STM32F1xx_HAL_Driver\Src中需要用到的外设.c文件,用到什么加什么,这部分文件是STM32 HAL库的外设驱动文件。
无需全部添加,因为有一部分是模板文件,添加了会报重定义错误。
在Groups Core中,添加Template\Core\Src下所有.c文件
其中 |
添加宏
USE_HAL_DRIVER 宏:为了让 stm32f1xx.h 包含 stm32f1xx_hal_conf.h 这个头文件
STM32F103xE宏:为了告诉 STM32HAL 库,我们使用的芯片类型是 STM32 型号是大容量的,使 STM32HAL 库根据我们选定的芯片型号来配置。
USE_HAL_DRIVER,STM32F103xE |
添加头文件路径
设置C99标准
删除main.h中的“#include "stm32f1xx_nucleo.h"”,我们不需要引入ST官方开发板套件的相关代码。
最后编译即可。
注意:此工程仅演示,无需烧录到板卡,烧录可能会导致SWD调试口被关闭,需要烧录时按复位按键进行恢复,详见QA文档找不到SWD设备部分。