keil5中新建一个STM32工程

前言

相信很多stm32的初学者对于创建一个新的工程还是感觉比较困难的,即使学习了一段时间的stm32,创建一个新工程还是会感到无所适从。相信大家在学习stm32之初都是把整个例程工程文件copy下来,在这个基础上进行修改编程的,这样就省掉了很多烦恼。本人自学stm32已经有好久的一段时间了,现在在准备秋招,顺便也把之前学过的内容复习一遍。在整理stm32资料的时候,突然发现之前自己学习stm32的时候不会自己新建一个stm32工程,所以今天趁空闲之余,学习怎么去创建一个新工程,并记录下来跟大家分享。

创建一个stm32工程的步骤

1. 准备资料

大家可以点击一下网址,下载创建工程时所需的固件库:
http://download.csdn.net/download/xiebaocheng12138/9991922

2.新建工程文件夹

这里我们建立一个文件夹为 Template,作为工程的根目录文件夹。然后为了方便我们存放工程需要的一些其他文件,这里我们还新建下面 5 个子文件夹:CORE ,LIB,OBJ,SYSTEM,USER。至于这些文件夹名字,实际上是可以任取的,我们这样取名只是为了方便识别。

3.新建一个工程

打开 Keil,点击 Keil 的菜单:Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹Template之下的USER子目录,工程的名字可以根据自己的要求设置。USER文件夹就用来存放工程的文件。
3

4.选择处理器

根据自身情况选择处理器
4.0

点击OK即可
这里写图片描述

5.搭建工程环境框架

a.打开官方固件库包,定位到我们之前准备好的固件库包的目录:
\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver 下面,将目录下面的 src,inc 文件夹 copy 到我们刚才建立的 GECLIB文件夹下面。

b.打开官方固件库包,定位到目录:
\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm 下面,将文件 startup_stm32f40_41xxx.s (启动文件)复制到 CORE 目录下面。

c.然后定位到目录:
\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Includ , 将 里 面 的 四 个 头 文 件 :core_cm4.h 、core_cm4_simd.h 、core_cmFunc.h 以及 core_cmInstr.h 同样复制到 CORE 目录下面。此时CORE的文件应有
这里写图片描述

d. 接下来我们要复制工程模板需要的一些其他头文件和源文件到我们工程。 首先定位到目录:
STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include 将里面的 2 个头文件 stm32f4xx.h 和 system_stm32f4xx.h 复制到 USER 目录之下。这两个头文件是STM32F4 工程非常关键的两个头文件。

e.然后进入目录:
\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates ,将 目 录 下 面 的 6个 文 件 main.c ,main.h, stm32f4xx_conf.h , stm32f4xx_it.c , stm32f4xx_it.h ,system_stm32f4xx.c 复制到 USER 目录下面
4

完成以上步骤后,我们将需要的固件库相关文件复制到了我们的工程目录下面,下面我们需要把这些文件加入我们的工程中去。点击这里写图片描述进入Manage Project Items
这里写图片描述

Project Targets一栏, 我们将Target名字修改为Template,然后在Groups一栏删掉一个SourceGroup1,建立三个 Groups:USER,CORE,LIB。然后点击 OK,可以看到我们的 Target名字以及 Groups 情况如下图:
7

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

提示两点:
1.对于添加的文件说明:例若只用到GPIO的配置,可以只选择stm32f4xx_gpio.c这样可以减少工程的代码量,提高编译的速度。
2.有个文件 stm32f4xx_fmc.c 比较特殊。这个文件STM32F42 和 STM32F43 系列才用到,所以我们这里要把它删掉(是 注意是 stm32f4xx_fmc.c 要删掉,不要删掉 stm32f4xx_fsmc.c) 。

添加完成后,我们要在 MDK 里面设置头文件存放路径。也就是告诉 MDK 到那些目录下面去寻找包含了的头文件。这一步骤非常重要。 如果没有设置头文件路径,那么工程会出现报错头文件路径找不到。
1.进入设置界面:

9

2.这里我们需要添加的头文件路径包括:\CORE, \USER\以及\LIB\inc(添加工程中所有含有.h文件的路径)。
10

3.STM32F40 系列的工程,还需要添加一个全局宏定义标识符。添加方法是点击
魔术棒之后,进入 C/C++选项卡,然后在 Define 输入框连输入:STM32F40_41xxx,USE_STDPERIPH_DRIVER。注意这里是两个标识符 STM32F40_41xxxUSE_STDPERIPH_DRIVER, 他们之间是用英文的逗号隔开的,请大家注意。
11

4.在做编译工程之前我们首先要选择编译中间文件编译后存放目录。方法是点击魔术棒 ,然后选择“Output”选项下面的“Select folder for objects…”,接着选择目录为我们上面的 新建的 OBJ 目录。,最后在OBJ目录下就可看到我们需要的程序.hex文件了。

5.编译刚才新建的工程
这里写图片描述

6.补充

关于keil中三个编译按钮的说明:这里写图片描述现在把它们编号为1,2,3. 第一个按钮:它的作用是编译当前的文件。这个按钮的作用是只编译单个文件,因此速度极快,这主要用于检查某个文件是否有语法错误。比如在起动代码里增加了一段汇编程序,看看有没有语法错误,就可以打开起动代码文件,然后点击第一个按钮,即可很快地看到编译结果。 第二个按钮:它的作用是Build target。我们应该经常使用的是这个按钮,而不是第三个按钮。这个按扭在第一次编译时和第三个按钮没区别,都是对整个工程的所有源文件进行编译链接。但如果前面编译链接过。由于对程序修改了少量地方,那么这时就应该使用这个按钮了。点击这个按钮时,编译器会记录上次编译过的模块,以及修改过的源程序,在这次编译的过程中对那些没修改过的源代码并不进行编译而直接使用上次编译的结果。这样对于较大的工程将大大减小编译链接时间,如果为了修改某一行代码而错误地选择第三个按钮,那将浪费大量的时间。 第三个按钮:它的作用是Rebuild all target files,即重新编译所有的源文件,而与上次的编译结果无关。我们应该尽量少用这个按钮。当然有些情况我们需要使用这个按钮,比如修改了优化级别之后最好点这个铵钮编译。