0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

手把手带你创建HAL版本MDK工程模板

dyquk4xk2p3d 来源:良许Linux 2023-11-20 10:31 次阅读

如何快速开发 STM32 项目?我们总不能每次开发一个项目就搭建一次工程,这样效率太低了。

通常我们会使用一个模板工程,需要开发新项目的时候拿出来添加一些对应的模块及业务代码,一个项目就开发完成了。

但对于新手朋友来讲,如何创建一个工程模板对他们来讲是个非常大的挑战。因为这个过程非常繁琐,虽然不复杂,但只要其中有一个环节做错了,那么就前功尽弃了,而且还不好排查。

本文将手把手带你创建 HAL 版本 MDK 工程模板,基于 STM32F103C8T6 芯片。文章参照正点原子的教程,并结合自己的工作经验写作而成,如果你能按照这个教程跟着操作,相信一定能够自己搭建一个HAL版本MDK工程模板。

1. 源码下载及前置阅读

如果大家跟着本教程学习还是无法自己创建 HAL 版本的 MDK 工程模板,那么可以参考我给大家准备的源文件。

源码及本文所需要的固件包已经为大家准备好了,大家可以添加良许微信免费获取(备注1120):

如果不知道如何搭建 STM32 编程环境,不知道如何烧录 STM32 代码,可以阅读这篇文章:

零基础快速上手STM32开发(手把手保姆级教程)】

2. 文件下载

可以根据以下步骤找到官方固件包:

STM32Cube 官方固件包在 ST 公司的官网可以免费下载,网址为:

可以根据以下步骤找到官方固件包:

22cf132a-8745-11ee-939d-92fbcf53809c.jpg

22d98f58-8745-11ee-939d-92fbcf53809c.jpg22eb297a-8745-11ee-939d-92fbcf53809c.jpg

但由于官网在国外,下载速度很慢,而且需要填写各种信息,所以大家可以直接使用我给大家提供的固件包,反正也是从官网下载的。当前最新版本是 V1.8.5 。

3. 新建工程文件夹

真正开发 STM32 项目,就不是简单一两个 .c 和 .h 文件那么简单了,而是有几十个甚至更多的文件构成,通过某些组织形式形成的工程文件。

我们先在任意一个位置(比如桌面)创建一个文件夹,命名为 stm32f103c8t6_template ,当然你命为其它名字也可以。

创建的工程模板由下面 5 个目录构成:

22f26a1e-8745-11ee-939d-92fbcf53809c.jpg

这 5 个目录是做什么用的呢?具体作用如下表所示:

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

接下来我们就具体来讲讲这 5 个目录文件到底要放一些什么文件。

3.1 Drivers文件夹

Drivers 文件夹里面又包含了 4 个文件夹,它们的作用如下:

文件夹名称 作用
BSP 存放开发板板级支持包驱动代码,如各种外设驱动
CMSIS 存放 CMSIS 底层代码,如启动文件(.s 文件)等
SYSTEM 存放系统级核心驱动代码,如 sys.c、delay.c 和 usart.c 等
STM32F1xx_HAL_Driver 存放 ST 提供的 F1 系列 HAL 库驱动源码

3.1.1 BSP文件夹

我们平时所写的 LED 驱动、蜂鸣器驱动、ESP8266驱动等等,都是放在这个目录下面。

但由于咱这是工程模板,就先不考虑这些驱动了,所以这个目录就暂时为空就好,等后面用到什么外设再具体添加对应的文件即可。

3.1.2 CMSIS文件夹

将官方提供的固件包下载,然后按下图提示进到 CMSIS 目录。

22fec91c-8745-11ee-939d-92fbcf53809c.jpg

但这个 CMSIS 目录太过于庞大了,我们可以按以下步骤进行精简。

230b266c-8745-11ee-939d-92fbcf53809c.jpg231aaa10-8745-11ee-939d-92fbcf53809c.jpg

此外,在 CMSIS 文件夹下还需要拷备一个 Include 目录,但这个目录我也不知道哪里去搞,大家可以从我给大家提供的模板工程里直接复制即可。

2334fb04-8745-11ee-939d-92fbcf53809c.jpg

或者你也可以使用 STM32CubeMX 随便生成一个工程文件,然后找到下面这些文件,直接拷过来即可。

23459af4-8745-11ee-939d-92fbcf53809c.jpg

3.1.3 SYSTEM文件夹

这个文件夹主要存放的是一些常用的系统级核心驱动代码,比如说时钟配置、延时函数、串口等等,像这些配置都是非常经常用到,我们没必要每次都自己手写,直接复用即可。

在这里我们直接使用正点原子给我们提供的三个模块代码,没法必要自己造轮子。

找到任何一个正点原子的项目(HAL版本),然后把整个 SYSTEM 文件夹拷备到 Drivers 目录下。

23512b9e-8745-11ee-939d-92fbcf53809c.jpg

3.1.4 STM32F1xx_HAL_Driver文件夹

ST 公司提供的 HAL 库驱动源码都是放在这个文件夹里,这个直接从固件包里拷过来就可以了,路径如下:

235e26c8-8745-11ee-939d-92fbcf53809c.jpg

这里使用的是 V1.8.5 ,当前最新版。

但进到这个目录后会发现,里面有很多东西,我们删掉其余的内容,只保留 Inc 及 Src 这两个文件夹即可。

236c329a-8745-11ee-939d-92fbcf53809c.jpg

至此,drivers 文件夹全部处理完毕,如下图示:

2386e252-8745-11ee-939d-92fbcf53809c.jpg

3.2 Middlewares文件夹

这个文件夹主要存放的是中间层代码(组件/Lib 等),比如:FATFS、USB、LWIP、FreeRTOS,各种 GUI 等等。但作为模板工程,这些东西我们就先不添加,整个文件夹留空即可。

3.3 Output文件夹

该文件夹用于存放编译器编译工程输出的中间文件,比如:.hex、.bin、.o 文件等,所以我们暂时无需主动往里面放东西。

3.4 Projects文件夹

该文件夹用于存放编译器的工程文件。不同的开发工具所产生的工程文件是不一样的,常见的开发工具有:MDK、IAR ,等等。但我们最常用的还是 MDK ,所以我们就可以在这个文件夹下创建一个 MDK-ARM 文件夹。

2397eb74-8745-11ee-939d-92fbcf53809c.jpg

如果你使用其它开发工具,那么就创建一个对应的文件夹就可以了。

3.5 User文件夹

该文件夹用于存放用户编写的代码,如:HAL 库用户配置文件、main.c 文件、中断处理文件,以及分散加载文件等。

在这个文件夹里,我们需要将下面那三个文件拷贝到这里来:

23a22ca6-8745-11ee-939d-92fbcf53809c.jpg23aaef26-8745-11ee-939d-92fbcf53809c.jpg

3.6 项目工程文件夹树状图

23bb6946-8745-11ee-939d-92fbcf53809c.jpg

4. 新建工程框架

23d59488-8745-11ee-939d-92fbcf53809c.jpg23e80b2c-8745-11ee-939d-92fbcf53809c.jpg

如果没有看到下图中上面那个红框的内容,请阅读这篇文章【零基础快速上手STM32开发(手把手保姆级教程)】,将 STM32F1 系列的固件包安装好。

23f99658-8745-11ee-939d-92fbcf53809c.jpg2404110a-8745-11ee-939d-92fbcf53809c.jpg24103f20-8745-11ee-939d-92fbcf53809c.jpg

5. 添加文件

5.1 创建目标及分组

241c2718-8745-11ee-939d-92fbcf53809c.jpg

5.2 向各分组添加文件

5.2.1 添加Startup分组文件

2430e180-8745-11ee-939d-92fbcf53809c.jpg

5.2.2 添加User分组文件

245157da-8745-11ee-939d-92fbcf53809c.jpg245c0e6e-8745-11ee-939d-92fbcf53809c.jpg

5.2.3 添加SYSTEM分组文件

24685390-8745-11ee-939d-92fbcf53809c.jpg

5.2.4 添加驱动文件

247e0938-8745-11ee-939d-92fbcf53809c.jpg

到这一步就已经将所有的文件添加完毕了。但此时你们会发现驱动文件前面会有个小钥匙,如下图示:

24a64e8e-8745-11ee-939d-92fbcf53809c.jpg

这是因为官方的固件包的文件设置了只读权限,我们只需要按下图的方式取消只读选项即可。

24b332ac-8745-11ee-939d-92fbcf53809c.jpg

6. 魔术棒设置

6.1 Target选项卡

24bfc72e-8745-11ee-939d-92fbcf53809c.jpg

6.2 Output与Listing选项卡

24ca0afe-8745-11ee-939d-92fbcf53809c.jpg

24d73e22-8745-11ee-939d-92fbcf53809c.jpg

6.3 C/C++选项卡

24e68486-8745-11ee-939d-92fbcf53809c.jpg

24f7c8cc-8745-11ee-939d-92fbcf53809c.jpg

2519dd4a-8745-11ee-939d-92fbcf53809c.jpg

6.4 Debug选项卡

2524c14c-8745-11ee-939d-92fbcf53809c.jpg

6.5 Utilities选项卡

252ab1f6-8745-11ee-939d-92fbcf53809c.jpg

7. 代码修改

2541e10a-8745-11ee-939d-92fbcf53809c.jpg

255e781a-8745-11ee-939d-92fbcf53809c.jpg

25717032-8745-11ee-939d-92fbcf53809c.jpg

8. 烧录验证

经过以上操作,模板工程创建完成。此时可以按下图接线烧录验证,工程没问题的话,左侧 LED 灯将以 500ms 间隔闪烁。

如果不知道如何搭建 STM32 编程环境,不知道如何烧录 STM32 代码,可以阅读这篇文章:

【零基础快速上手STM32开发(手把手保姆级教程)】

257c97dc-8745-11ee-939d-92fbcf53809c.jpg

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2239

    文章

    10673

    浏览量

    348770
  • 编程
    +关注

    关注

    88

    文章

    3440

    浏览量

    92404
  • MDK
    MDK
    +关注

    关注

    4

    文章

    208

    浏览量

    31771
  • 工程模板
    +关注

    关注

    0

    文章

    10

    浏览量

    6727
  • HAL
    HAL
    +关注

    关注

    2

    文章

    68

    浏览量

    12472

原文标题:手把手带你创建HAL版本MDK工程模板

文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    手把手教程:各类数字电源设计实例(程序+原理图)

    本资料分享了数字电源设计实例,包含程序、原理图等资料,手把手带你独立设计属于自己的数字电源。
    发表于 07-07 15:13

    手把手带你学习STM32L系列单片机(HAL库)

    参考视频是小熊派的开发板: 【STM32单片机学习】白嫖单片机教程——手把手带你学习STM32L系列单片机(HAL库)首先要知道公式:定时器时间=1/(时钟频率/预分频/计数周期)然后了解定时器
    发表于 08-09 06:22

    手把手教大家创建基于GD32F303VE项目的工程模板

    本博文的主要内容是手把手教大家创建基于GD32F303VE项目的工程模板,其他系列的模板常见类似,均可以此博文作为参考,编译环境基于Keil
    发表于 12-10 06:05

    工程模板创建步骤

    工程模板创建步骤1、创建步骤2、一些问题ARM编译器不能编译1、创建步骤关于工程
    发表于 01-12 07:32

    【课程汇总】Hello HarmonyOS系列课程,手把手带你零基础入门

    汇总如下,精彩内容不容错过,快点开始学习吧!↓一、Hello HarmonyOS:手把手教你搭建开发环境课程介绍:超级适合零基础入门,手把手教你配置IDE、创建HelloWorld工程
    发表于 04-21 16:19

    手把手教你构建一个完整的工程

    手把手教你构建一个完整的工程
    发表于 08-03 09:54 33次下载
    <b class='flag-5'>手把手</b>教你构建一个完整的<b class='flag-5'>工程</b>

    美女手把手教你如何装机(下)

    美女手把手教你如何装机(下) 接著下来就是今天的重头戏,开核萝!~
    发表于 01-27 11:16 2871次阅读

    手把手教您做光立方

    电子发烧友网站提供《手把手教您做光立方.doc》资料免费下载
    发表于 03-21 14:07 0次下载

    手把手教你学DSP28335_张卿杰

    手把手教你学DSP28335张卿杰百度云分享手把手教你学DSP28335张卿杰百度云分享
    发表于 01-11 11:45 173次下载

    手把手教你学习FPGA—LED篇

    电子专业单片机相关知识学习教材资料——手把手教你学习FPGA—LED篇
    发表于 08-08 17:19 0次下载

    手把手教你如何开始DSP编程

    手把手教你如何开始DSP编程。
    发表于 04-09 11:54 12次下载
    <b class='flag-5'>手把手</b>教你如何开始DSP编程

    手把手教你学LabVIEW视觉设计

    手把手教你学LabVIEW视觉设计手把手教你学LabVIEW视觉设计手把手教你学LabVIEW视觉设计手把手教你学LabVIEW视觉设计手把手
    发表于 03-06 01:41 2767次阅读

    手把手教你开关电源PCB排板

    手把手教你开关电源PCB排板(新型电源技术)-分享一下开关电源PCB排板的基本要点及分析,以及例子讲解。绝对的手把手
    发表于 09-18 12:27 51次下载
    <b class='flag-5'>手把手</b>教你开关电源PCB排板

    手把手教你学DSP-基于TMS320X281x

    顾卫刚手把手教你学DSP
    发表于 05-24 16:06 26次下载

    手把手教你学FPGA仿真

    电子发烧友网站提供《手把手教你学FPGA仿真.pdf》资料免费下载
    发表于 10-19 09:17 1次下载
    <b class='flag-5'>手把手</b>教你学FPGA仿真