新建工程
1、在桌面新建一个文件夹,用于存放工程模板
2、打开keil软件,点击菜单:Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹00MyPro之下,在这个目录下面建立子文件夹 USER 定位到 USER 目录下面,我们的工程文件就都保存到 USER 文件夹下面。工程命名为Template,点击保存。
3、接下来出现选择 CPU 的界面,就是选择我们的芯片型号。因为我使用的stm32型号为ALIENTEK miniSTM32F103 的 STM32F103RTC6,所以我们选STMicroelectronics→STM32F1Series→STM32F103→STM32F103RCT6(如果使用的是其他系列的芯片,选择相应的型号就可以了) 特别注意:一定要安装对应的器件 pack 才会显示这些内容。 点击OK后,会出现一个弹窗,我们可以直接点击 Cancel。(这个弹窗是 keil 新增的一个功能,在这个界面,我们可以添加自己需要的组件,从而方便构建开发环境,不过这里我们不做介绍。)
4、现在工程文件里USER中有4个项目,接下来我们需要添加启动文件。
创建启动文件按需要的目录
5、接下来,我们在 00MyPro工程目录下面,新建 3 个文件夹 CORE、OBJ 、STM32F10x_FWLib。
CORE 用来存放核心文件和启动文件。
OBJ 是用来存放编译过程文件以及hex 文件。
STM32F10x_FWLib 文件夹用来存放 ST 官方提供的库函数源码文件。
USER 目录除了用来放工程文件外,还用来存放主函数文件 main.c,以及其他包括system_stm32f10x.c 等等。
复制相对应的文件到对应的目录
6、下面我们将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。打开STM32F10x_StdPeriph_Lib_V3.5.0文件里面有5个项目。我们不妨将STM32F10x_StdPeriph_Lib_V3.5.0文件复制到00MyPro文件下。
如果没有官方的固件库包,可以点击此链接下载:
stm32官方的固件库包
7、复制文件到STM32F10x_FWLib 文件夹下面。
定位目录到Libraries\STM32F10x_StdPeriph_Driver目录,将目录下面的 src,inc 文件夹复制到建立的 STM32F10x_FWLib 文件夹下面。src 存放的是固件库的.c 文件,inc 存放的是对应的.h 文件。
8、复制文件到CORE目录下。
①定位到目录Libraries\CMSIS\CM3\CoreSupport 下面,将文件 core_cm3.c和文件 core_cm3.h 复制到 CORE 文件里 。
②定 位 到 目 录Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\a
rm 下面,将里面 startup_stm32f10x_hd.s 文件复制到CORE里。
不同容量的芯片使用不同的启动文件,我们的芯片 STM32F103RCT6 是大容量芯片,所以选择startup_stm32f10x_hd.s 文件。(不同的芯片要选择不同的启动文件)
9、复制文件到USER文件夹下面。
①定位目录到Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下面将里面的三个文件 stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h,复制到USER目录里。
②定位目录到Project\STM32F10x_StdPeriph_Template 下面的 4 个文 件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 复制到 USER 目录里。
将文件添加到工程
10、现在我们将把这些文件加入我们的工程中去。右键点击 Target1,选择 Manage Project Items。
11、在Project Targets 一栏,我们将 Target 名字修改为00MyPro,然后在 Groups 一栏删掉一个 SourceGroup1,建立三个 Groups,分别为USER,CORE,FWLIB。然后点击 OK。(鼠标左键双击即可修改名字,点击方框和叉叉即可添加和删除)
向工程中添加.c文件
12、向 Group 里面添加我们需要的文件。按照步骤 10 的方法,打开 Manage Project Itmes,然后选择需要添加文件的 Group,
①向FWLIB添加文件:点击右边的 Add Files,定位到我们刚才建立的目录 STM32F10x_FWLib/src下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close.可以看到 Files 列表下面包含我们添加的文件。
②向CORE添加文件:CORE 下面需要添加的文件为 core_cm3.c,startup_stm32f10x_hd.s (注意:默认添加的
时候文件类型为.c,添加 startup_stm32f10x_hd.s 启动文件的时候,你需要选择文件类型为 All files 才能看得到这个文件),注意:不添加.h文件
③向USER添加文件:USER目录下需要添加的文件为 main.c,stm32f10x_it.c、system_stm32f10x.c.
这样我们需要添加的文件已经添加到我们的工程中了,最后点击 OK,回到工程主界面。
13、编译工程,在编译之前我们首先要选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…”,然后选择目录为我们上面新建的 OBJ 目录。注意,如果我们不设置 Output 路径,那么默认的编译中间文件存放目录就是 keil自动生成的 Objects 目录和 Listings 目录。 第三步勾上是用来编译时产生hex文件的。
14) 下面我们点击编译按钮编译工程,可以看到很多报错,原因为找不到头文件(.h文件)。
添加环境变量以及全局的宏定义变量
15、 添加头文件目录:回到工程主菜单,点击魔术棒 ,出来菜单,点击 c/c++选项.然后点击Include Paths 右边的按钮。弹出一个添加 path 的对话框,将3 个目录中含有 .h 文件添加进去。记住,keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path一定要定位到最后一级子目录。然后点击 OK。
注意,对于任何一个工程,我们都需要把工程中引用到的所有头文件的路径都包含到进来。
16、再次编译工程,可以看到又报了很多同样的错误。原因为3.5 版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。按照步骤15,定位到 c/c++界面,然后填写
“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面(注意:两个标识符中间是逗号不是句号)。如果你用的是中容量那么STM32F10X_HD 修改为 STM32F10X_MD,小容量修改为STM32F10X_LD. 然后点击 OK。
修改main.c函数的内容
17、在编译之前,我们打开工程USER下面的 main.c 文件,复制下面代码到 main.c覆盖已有代码,然后进行编译。(记得在代码的最后面加上一个回车,否则会有警告),可以看到,这次编译已经成功了。
#include "stm32f10x.h"
int main()
{
return 0;
}
现在工程模板已经建立成功。当要进行编写程序时,只需要将此模板进行复制粘贴并改名即可,在新的工程里面编写程序。