STM32手动创建HAL库工程(以STM32F407ZGT6为例基于正点原子视频教程)

一、HAL固件包获取(STM32F407ZGT6为例)

ST官网:

ST LogoST is a global high-tech company creating semiconductor technologies for a smarter, greener, and more sustainable futurehttps://www.st.com/content/st_com/en.html搜索STM32Cube

5f65753ca843813914cfdc33163578e7.png

下滑找到下载按钮下载

a2f474d8f125dbd40154f7403cfb78d9.png 二、固件包文件结构介绍

2.1 总体结构简介

3bf972b301740e660bd293d7e7e680c9.png

  •  _htmresc -----------------------包含一些图片,没用
  • Documentation ----------------固件包说明文档,有需要则观看
  • Drivers ---------------------------驱动源码
  • Middlewares --------------------ST官方或者第三方的中间文件
  • Projects --------------------------ST官方开发板的一些例程
  • Utilities ---------------------------为ST官方开发板例程提供的公共组件
  • package.xml --------------------固件包版本信息
  • Package_license.html --------软件版权信息
  • Package_license.md ---------软件版权信息
  • README.md -------------------自述文件
  • Release_Notes.html ---------补充或更新的描述

2.2 Drivers文件夹简介

 4c1e369e70f7e8f59fc50f6362ec64cc.png

  • BSP -----------------------------------板级支持包 ,适配与ST官方开发板
  • CMSIS --------------------------------符合CMSIS的组件,包括:DSP库、Cortex-M内核及其设备文件、微控制器专用头文件、启动文件、专用系统文件
  • STM32F4xx_HAL_Driver --------HAL库外设驱动代码,F4系列HAL库源文件和头文件

2.3 Middlewares文件夹简介

c8964b78330875fdf285d7c9a8ccf546.png

STSTemWinSTemWin工具包
STM32_USB_Device_LibraryUSB从机设备支持包
STM32_USB_Host_LibraryUSB主机设备支持包
Third_PartyFatFsFAT文件系统支持包
FreeRTOSFreeRTOSqia实时系统支持包
LwIPLwIP网络通信协议支持包

 

 

 

 

 

 

 

 2.4 工程创建主要使用文件

主要使用Drivers文件夹中的CMSIS与STM32F4xx_HAL_Driver文件夹中文件

CMSISDevice存放微控制器专用头文件、启动文件、专用系统文件
Include存放Cortex-M内核及其设备文件、编译器相关头文件

Device文件夹下所需使用文件:

在CMSIS->Device->ST->STM32F4xx->Include 路径下的
stm32f4xx.h所有F4系列的顶层头文件,通过条件编译包含某个芯片的头文件,定义通用的枚举类型,定义通用的宏定义(F4系列公用)
stm32f407xx.h包含中断编号定义、外设寄存器结构类型体定义、寄存器映射、寄存器定义、外设判定(根据芯片型号自选)
system_stm32f4xx.h与system_stm32f4xx.c一起定义了系统初始化函数SystemInit和系统时钟更新函数SystemCoreClockUpdate(F4系列公用)
在CMSIS->Device->ST->STM32F4xx->Source->Templates 路径下的
system_stm32f4xx.c与system_stm32f4xx.h一起定义了系统初始化函数SystemInit和系统时钟更新函数SystemCoreClockUpdate(F4系列公用)

在CMSIS->Device->ST->STM32F4xx->Source->Templates->arm 路径下的

(本人使用arm的编译器,请根据自己使用的编译器自选)

startup_stm32f407xx.sF407系列芯片的启动文件(根据芯片型号以及编译器类型自选)

 

Include文件夹下所需使用文件:

在CMSIS->Include 路径下的
cmsis_armcc.hArm Compiler 5 (AC5) 编译器所需头文件
cmsis_armclang.hArm Compiler 6 (AC6) 编译器所需头文件
cmsis_compiler.hAC5、AC6共用头文件
cmsis_version.h编译器版本头文件
core_cm4.hCortex-M4内核所需头文件(据型号自选F1是M3)
mpu_armv7.hmpu内存保护所需头文件

三、创建HAL工程

3.1 裁剪得到所需CMSIS文件夹

删除CMSIS文件夹下无用文件,删除选中的文件留下所需的Device、Include文件夹

edb66c214c6061af1bd3ddce7b41f41a.png

进入CMSIS->Device->ST->STM32F4xx,删除选中的文件留下所需的Include、Source文件夹

179ea4e2b921457f49c3f5f1b0fd2945.png

进入CMSIS->Device->ST->STM32F4xx->Include,删除无用文件留下如下所需的文件

1d3b02da47604cef2441ff769bafcfc7.png

进入CMSIS->Device->ST->STM32F4xx->Source->Templates,删除无用文件留下如下所需的文件

dd1cde5028fbf1bf08b37f52776459b9.png

进入CMSIS->Device->ST->STM32F4xx->Source->Templates->arm,删除无用文件留下如下所需的启动文件

 e6392211c3c4a71b426661f9719947e8.png

 进入CMSIS->Include,删除无用文件留下如下所需的文件

54405f6b5c574e422a7e57f5c3691b45.png

3.2 创建工程文件

(1)新建文件夹存放工程

创建一个自命名文件夹存放整个工程,并在文件夹下创建Drivers、Middlewares、Output、Projects、User 5个子文件夹存放不同文件

Drivers存放与硬件相关的驱动层文件
Middlewares存放中间层组件、第三方层文件
Output存放工程编译产生的输出文件
Projects存放MDK工程文件
User存放HAL库用户配置文件、main.c文件、中断处理文件以及分散加载文件

9e22508a1891ebead984abd29b640e20.png

(2)Drivers文件夹 

进入Drivers文件夹新建名为BSP的文件夹,复制刚刚裁剪的CMSIS文件夹粘贴至Drivers下,复制从ST官网下载的HAL库固件包中的Drivers文件夹下的STM32F4xx_HAL_Driver文件夹粘贴至自己工程中的Drivers文件夹下,从正点原子的开发板资料中拷贝SYSTEM文件夹至Drivers下

b87c7b6d06579e8dad14ac0cb042cee7.png

进入刚刚粘贴过来的STM32F4xx_HAL_Driver文件夹中删除所选文件,只留下所需的Inc和Src文件夹

 1297f355bd51e75a09bacf0e01835ff3.png

(3)Middlewares文件夹

该文件夹可存放其他中间件以及第三方组件库如文件系统、嵌入式实时系统、网络协议、消息协议、GUI等等,现在暂时未使用,空置。

(4)Output文件夹

存放编译器编译输出的中间文件,如.hex、.bin、.o文件等,需要后续结合编译器配置,暂时空置。

(5)Projects文件夹

存放编译器(MDK、IAR等)工程文件,本人使用MDK,所以在该文件夹下新建MDK-ARM文件夹存放MDK文件。

(6)User文件夹

存放HAL库用户配置文件、main.c文件、中断处理文件以及分散加载文件

进入从ST官网下载的HAL库固件包中的Projects文件夹,点击型号匹配的例程文件夹后按Templates->Inc路径进入Inc文件夹复制stm32f4xx_hal_conf.h、stm32f4xx_it.h两个文件粘贴至自己创建的工程的User文件夹下,再返回从ST官网下载的HAL库固件包中的Projects文件夹内,按Templates->Src路径进入Src文件夹复制stm32f4xx_it.c文件粘贴至自己创建的工程的User文件夹下

(7)Keil创建工程

在Keil新建工程自命名并将存放目录改为刚刚新建的工程文件夹中的Projects下的MDK-ARM中

4126d4c295c025840c5b3403df8d4e6c.png

 选择对应芯片,按确定后弹出这个窗口直接按取消cancel即可

638fee5d85ed2cf12e641730870aa971.png

由于我们自己创建了存放输出文件的文件夹,可以把keil自动生成的存放输出文件的文件夹删除,进入自己工程文件夹中的Projects的MDK-ARM文件夹中删除Listings、Objects文件夹

090acbcf0133bb75cd29c30a9a6a3907.png

 修改工程名与分组名:点击图中按钮进入修改

 

dcc42c965d23e9c1d50cfcab96f7e664.png

按如下添加工程名与分组,可自行修改

20b06bc56ea915312203cc7e67ec9b3b.png

添加启动文件:选择Startup分组后按下Add Files进入->Drivers->CMSIS->Device->ST->STM32F4xx->Source->Templates->arm路径下,修改文件类型为All files选中 startup文件点击add添加

750faeffc1d0df5567d94dece51311ef.png

在User分组中添加stm32f4xx_it.c,选中User,文件在工程文件夹的User文件夹中,其他步骤相同如上

44db942f69abece85825a3d578c04da4.png

 在User分组中添加system_stm32f4xx.c, 选中User,文件在工程文件夹的Drivers->CMSIS->Device->ST->STM32F4xx->Source->Templates文件夹中,其他步骤相同如上

9a6a954e60abc73954b6b334d42244a2.png

 在Drivers/SYSTEM分组中添加delay.c、sys.c、usart.c三个源码,分别在Drivers->SYSTEM->delay、Drivers->SYSTEM->sys、Drivers->SYSTEM->usart三个文件夹下,操作步骤如上

ef5d24b705a7ec0e7ca1a241061aa8f3.png

添加hal库源码,所需文件存放在Drivers->STM32F4xx_HAL_Driver->Src中,所需文件如下图,

bbd88b544a41a87db0a44bd104b4e7ac.png

 配置完成后点击OK完成配置,看到左侧文件栏带有小钥匙标志,表示文件处于只读状态,需要解开

8532ee7930fd3d49db10ffca526ab950.png

对所需解锁的文件夹右键属性修改,或者对你的工程根目录修改属性把只读取消并作用于子目录也许

5781ed89dc135407f15bb2eb07d3c04a.png

 

 接下来KEIL中设置

fbeff3f65e79f253af9089664ecfaf68.png

配置外部晶振为8M(根据自己的芯片板子选择),编译器选择AC5 

 1a63d29e0c7a0a3b781c62b686fc2632.png

勾选生成HEX文件

4484fbacedf3f29c9d88295821972ac0.png

修改输出hex文件存放位置为自己工程的Output文件夹

a90a31cc60fb03bb0fd2eae01b72b13f.png

修改listing输出文件存放位置为自己工程的Output文件夹

 

设置全局宏定义,两个宏USE_HAL_DRIVER、STM32F407xx用逗号隔开,两个宏在stm32f4xx.h里用于条件编译,优化等级为默认Level 0,勾选C99 Mode

 3069565bbc231da7a8de62fc9ae43e2d.png

添加头文件路径

1c325bb22f6a29dac9792fd6e552ba2e.png

选择仿真器

c630657c6bb156355545ffd1ef52830a.png

设置仿真器选择SW,时钟选择最大的即可

 330c73844b9f483de7ef6e27f4ebca1a.png

 设置Utilities

517275748a8c9060784300441ead2ec5.png

 勾选魔术棒

af5cf80601b9ed20677de1785f0a8b3e.png

 创建main.c并保存在User文件夹

14a5756746b905a51e3e5480e8de0da5.png

 双击左侧组栏User找到User文件夹下的main.c文件添加至User组

a1b0bd221511d5954fce5e2805e4fef8.png

在stm32f4xx_it.c中加入 #include "stm32f4xx_hal.h" 头文件引用

06611d2477ec1cba1e7df79bf96ab292.png

 可以开始写自己的main了

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值