stm32学习(六)工程模板库建立

STM32的工程模板建立可能比较复杂一点,但是当我们建完一个我们以后的工程就可以直接复制这个文件,更改名字就可以了,所以学会建立工程模板还是很重要的。

资料准备

  1. V3.5固件库包:STM32F10x_StdPeriph_Lib_V3.5.0 这是 ST 官网下载的固件库完整版 官方下载地址
  2. MDK5 开发环境(当然我们章节三已经介绍过了)

安装步骤

创建文件夹

为了以后我们能够更好的方便文件的存放我建议在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,现在我们建立一个文件夹为Template。(我自己建立的文件夹在E盘E:\Template

创建工程

然后我们现在是需要点击 MDK 的菜单:Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹 Template 之下,在这个目录下面建立子文件夹 USER(我们的代码工程文件都是放在 USER 目录,由于我们这是个模板所以我们将工程命名为Template,点击保存。
在这里插入图片描述
接下来会出现一个选择 CPU 的界面,就是选择我们的芯片型号
因为我需要用的是STM32F103ZET6,所以在这里我选择STMicroelectronics->STM32F1 Series-> STM32F103 ->STM32F103ZET6
(如果使用的是其他系列的芯片,选择相应的型号就可以了)
在这里插入图片描述

了解USER下的文件

点击OK,MDK会弹出 Manage Run-Time Environment 对话框,这是 MDK5 新增的一个功能,在这个界面,我们可以添加自己需要的组件,从而方便构建 开发环境,不过这里我们不做介绍,我们直接点击Cancel
在这里插入图片描述
然后我们就能看到一个框架,但是我们还需要添加一些启动代码,以及.c文件等
在这里插入图片描述
现在我们可以先去之前创建的USER目录下面有什么东西
在这里插入图片描述
从中我们可以知道有两个文件夹和两个文件
其中 Template.uvprojx 是工程文件,非常关键,不能轻易删除

Listings 和 Objects 文件夹是 MDK 自动生成的文件夹,用于存放编译过程产生的中间文件。这里,我们把两个文件夹删除,我们会在下一步骤中新建一个OBJ文件夹,用来存放编译中间文件。当然,我们不删除这两个文件夹也是没有关系的,只是我们不用它而已。

创建子文件夹并导包

1.接下来,我们在 Template 工程目录下面,新建 3 个文件夹CORE, OBJ 以及 STM32F10x_FWLib。CORE 用来存放核心文件和启动文件,OBJ 是用来存放编译过程文件 以及 hex 文件,STM32F10x_FWLib 文件夹顾名思义用来存放 ST 官方提供的库函数源码文件。已有的USER 目录除了用来放工程文件外,还用来存放主函数文件main.c,以及其他包 括system_stm32f10x.c等等。
在这里插入图片描述
2.下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。(官方库需要自行下载)
先定位到目录:STM32F10x_Stdperiph_Lib_V3.5.0\Libraries\STM32F10x_Stdperiph_Driver
将目录下面的 src,inc文件夹 copy到我们刚才建立的STM32F10x_FWLib 文件夹下面。
其中src存放的是固件库的.c 文件,inc 存放的是对应的.h 文件,您不妨打开这两个文件目录过目一 下里面的文件,每个外设对应一个.c 文件和一个.h 头文件
在这里插入图片描述
3.下面我们要将固件库包里面相关的启动文件复制到我们的工程目录 CORE 之下
打开官方固件库包,定位到目录
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport
将文件core_cm3.c和文件 core_cm3.h 复制到CORE下面去。
然后定位到
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
将里面 startup_stm32f10x_hd.s 文件复制到 CORE 下面
(这里我们我之前已经解释了 不同容量的芯片使用不同的启动文件,我们的芯片 STM32F103ZET6 是大容量芯片,所以选择这个启动文件)
在这里插入图片描述
4.定位到目录
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
将里面的三个文件 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的 USER 目录之下
在定位到目录
STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template
将下面的 4 个文件 main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 复制到 USER 目录下面。
在这里插入图片描述
5.前面步骤做完了我就只需要将相关文件复制到我们的工程目录下面了,将这些文件加入到我们的工程中去。
先右键点击 Target1,选择 Manage Components
在这里插入图片描述
Project Targets一栏,我们将Target名字修改为Template(双击修改),然后在Groups一栏删掉一个Source Group1,建立三个 Groups:USER,CORE,FWLIB。然后点击 OK,可以看到我们的 Target 名字以及 Groups 情况。
在这里插入图片描述
在这里插入图片描述
点击OK我们可以看到我们工程框架中有所变化
在这里插入图片描述
6.下面我们往 Group 里面添加我们需要的文件
依然右键点击点击 Tempate,选择选择 Manage Components
选择需要添加文件的 Group,这里第一步我们 选择 FWLIB , 然 后 点 击 右 边 的 Add Files, 定 位 到 我 们 刚 才 建 立 的 目 录 STM32F10x_FWLib/src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close. 可以看到 Files 列表下面包含我们添加的文件。
在这里插入图片描述
在这里插入图片描述
用同样的方法,将 Groups 定位到 COREUSER 下面,添加需要的文件。这里 我们的 CORE 下面需要添加的文件为 core_cm3.c,startup_stm32f10x_hd.s (注意,默认添加的 时候文件类型为.c,也就是添加 startup_stm32f10x_hd.s 启动文件的时候,你需要选择文件类型 为 All files 才能看得到这个文件),USER 目录下面需要添加的文件为 main.c,stm32f10x_it.c, system_stm32f10x.c.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后点击OK回到主界面
在这里插入图片描述
7. 接下来我们要编译工程,在编译之前我们首先要选择编译中间文件编译后存放目录。
点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…”,然后选 择目录为我们之前新建的 OBJ目录。这里大家注意,如果我们不设置 Output 路径,那么 默认的编译中间文件存放目录就是 MDK 自动生成的 Objects 目录和 Listings 目录
在这里插入图片描述
8.若我们现在编译主函数的话会有很多报错
在这里插入图片描述
因为MDK不知道这些头文件在哪,我们只导入了.c文件,所以我们还需要告诉MDK我们这些文件的头文件在哪(这里大 家要注意,对于任何一个工程,我们都需要把工程中引用到的所有头文件的路径都包含到
进来

依旧是点击魔术棒,点击c/c++选项,然后点击
Include Paths 右边的按钮。弹出一个添加 path 的对话框然后加入三个目录,注意path一定要定位到最后一级子目录,然后点击OK。

我的三个目录是:E:\Template\USER,E:\Template\CORE
E:\Template\STM32F10x_FWLib\inc

在这里插入图片描述
再次编译还是会有错误,是因为 3.5 版 本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量
打开魔术棒定位到c/c++界面,然后填写“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面。 这里解释一下,如果你用的是中容量那么 STM32F10X_HD 修改为 STM32F10X_MD,小容 量修改为 STM32F10X_LD. 然后点击 OK
在这里插入图片描述
点击OK,然后再次编译
在这里插入图片描述
发现现在就没有错误了
最后我们烧文件的时候,需要烧入HEX文件,所以我们还需要设置一下
依旧点击魔术棒,选择Output,勾选Creat HEX file
在这里插入图片描述
再次编译
在这里插入图片描述
到这我们的模板工程就差不多建完了!

若有什么问题希望大家可以及时指出,谢谢

发布了11 篇原创文章 · 获赞 42 · 访问量 7356

猜你喜欢

转载自blog.csdn.net/qq_42398342/article/details/103872988