新建stm32工程文件夹

        一个STM32 工程通常包含多个源代码。随着对STM32 学习的深入,我们建立的工程将会越来越复 杂,包含的源代码数量也会越来越多。为了实现工程的科学管理,我们应对工程文件夹的命名与结构 进行合理规划。 https://www.st.com/zh/embedded-software/stsw-stm32065.html 2.6 新建工程文件夹 STM32 工程包含的文件主要有以下几类:用户编写的应用层程序文件、硬件外设驱动程序文件、 STM32F4 标准外设库文件、Cortex-M4 内核相关文件与启动文件等。为了使工程结构更加清晰,我们 可通过建立文件夹来分门别类地存放上述文件。

<1>先建立名为“STM32F407_Template”的工程文件夹,并在其下建立5 个子文件夹。

注意:表中工程子文件夹的结构仅供参考,用户可根据自己的工作习惯进行调整。

<2>keil5 导入工程

打开 Keil,点击 Keil的菜单: Project ––>New Uvision Project ,然后将目录定位到刚才建立的文件夹 STM32F407_Template之下 的 USER子目录 同时,工程取名为STM32F407_Template之后点击保 存, 我们的工程文件就都保存到 USER文件夹下面。

接下来会出现一个选择 Device的界面,就是选择我们的芯片型号,这里我们定位到 STMicroelectronics下面的 STM32F407ZG(针对我们的STM32板子是这个型号 )。这里我们选择 STMicroelectronics -> STM32F4 Series -> STM32F407 -> STM32F407ZG (如果使用的是其他系列的 芯片,选择相应的型号就可以了

点击OK后, 会弹出 Manage Run Time Environment对话框,这是MDK5新增的一个功能,在这个 界面,我们可以添加自己需要的组件,从而方便构建开发环境,不过我们不使用这种方式构建开发环 境,直接点击取消即可。

之后我们来看看 USER目录下面多出来几个文件:

        STM32F407_Template.uvprojx是工程文件,非常关键,不能轻易删除,keil5生成的工程文件都是 以 .uvprojx为后缀。

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

<3>复制固件库文件

1.接下来要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面:

打开官方固件库包,定位到我们之前准备好的固件库包的目录:

\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver

将目录下面的src,inc文件夹 复制到我们刚才建立的 FWLib文件夹下面。

src存放的是固件库的 .c文件, inc存放的是对应的 .h文件,每个外设对应一个 .c文件和一个 .h头文 件。

2.下面我们要将固件库包里面相关的启动文件复制到我们的工程目录 CORE之下:

打开官方固件库包,定位到目录

\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Template s\arm下面,将文件startup_stm32f40_41xxx.s复制到 CORE目录下面。

然后定位到目录

\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Includ,将里面的四个头文件

core_cm4.h、 core_cm4_simd.h、 core_cmFunc.h以及 core_cmInstr.h同样复制到 CORE目录下面。

3.复制工程模板需要的一些其他头文件和源文件到我们工程。

首先定位到目录:

STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include

将里面的 2个头文件 stm32f4xx.h和 system_stm32f4xx.h复制到 USER目录之下。

然后进入目录

\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates

 将目录下面的5个文件 main.c stm32f4xx_conf.h stm32f4xx_it.c stm32f4xx_it.h、system_stm32f4xx.c

复制到 USER目录下面。

4.导入工程

打开keil5,右键点击 Target1,选择 Manage Project Items,

Project Targets一栏,我们将 Target名字修改为 STM32F407_Template,然后在 Groups一栏删掉一个 Source Group1,建立三个 Groups :USER,CORE,FWLIB。然后点击 OK

接下来往 Group里面添加我们需要的文件:

选择FWLIB,然后点击右边的 Add Files,定位到我们刚才建立的目录 \FWLIB\src下面,将里面所有的 文件选中 (Ctrl+A),然后点击 Add,然后 Close。可以看到 Files列表下面包含我们添加的文件。

注意:对于我们写代码,如果我们只用到了其中的某个外设,我们就可以不用添加没有用到的外设的 库文件。例如我只用 GPIO,可以只用添加 stm32f4xx_gpio.c,而其他的可以不用添加。这里我们全部 添加进来是为了 后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢,大家可以 自行选择。

CORE:添加的文件为 startup_stm32f40_41xxx.s (注意,默认添加的时候文件类型为 .c,也就是添加 startup_stm32f40_41xxx.s启动文件的时候,你需要选择文件类型为 All files才能看得到这个文件)

USER:目录下面需要添加的文件为 main.c stm32f4xx_it.c system_stm32f4xx.c 这样我们需要添加的文件已经添加到我们的工程中去了,最后点击 OK,回到工程主界面

5.设置keil5

接下来我们要在 MDK里面设置头文件存放路径。也就是告诉 MDK到那些目录下面去寻找包含了 的头文件。 如果没有设置头文件路径,那么工程会出现报错头文件路径找不到。

需要添加的头文件路径包括:\CORE \USER\ \FWLIB\inc

此时编译工程发现出现了32个错误和555条警告

接下来还需要添加一个全局宏定义标识符,

在3处输入:STM32F40_41xxx,USE_STDPERIPH_DRIVER(注意这里是两个标识符 STM32F40_41xxx和 USE_STDPERIPH_DRIVER 他们之间是用逗号隔开的)

接下来编译工程,在编译之前首先要选择编译中间文件编译后存放目录。方法是点击魔术棒,然后 选择 Output”选项下面的 Select folder for objects…,然后选择目录为我们上面新建的 OBJ目录 。 同 时将下方的三个选项框都勾上。

Create HEX File选项选上是要求编译之后生成HEX文件。Browse Information选项选上是方便我们查 看工程中的一些函数变量定义。

然后修改main.c,将不需要的代码全都删掉。

最后删除stm32f4xx_it.h 里面的错误引用。分别为32行和144行

注意:

在FWLIB\src 要删除stm32f4xx_fmc.c (STM32F4xx系列用不上)

点击Build编译......

疑问:为什么添加全局宏定义STM32F40_41xxx,USE_STDPERIPH_DRIVER?

注意stm32f4xx.h中9135行,如果没有添加宏定义,则stm32fxx_conf.h不会被包含进来,而此头文件 包含了对外设驱动头文件的声明。

<4>.keil5使用技巧

keil5使用技巧_keil5使用教程-CSDN博客

  • 53
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值