接下来请执行如下操作:
1、在刚才解压“stm32f10x_fw_archive v2.0(May2009)”得到的文件夹里按照路径 stm32f10x_fw_archive v2.0 (May 2009)Archive,找到um0427.rar并将其解压。
2、在第1步解压到的um0427文件夹里按路径“um0427FWLibprojectRVMDK”找到文件:“cortexm3_macro.s”和“stm32f10x_vector.s”,并将其复制到前面所新建的“STM32_FWoot”文件夹中。此二者为 STM32 在 MDK 环境下的启动文件,是每一个 STM32 工程所必需的。
3、在“um0427FWLibproject”中找到文件:“stm32f10x_it”和“stm32f10x_it”,并将其复制到“STM32_FWinterrupt”中。此二者包含了 STM32 在 MDK 下的中断服务入口函数。
4、将“um0427FWLiblibrary”中的“inc”文件夹和“src”文件夹复制到“STM32_FWlibrary”中。此二文件夹为 STM32 的固件函数库文件,一般情况下这两个文件夹里的文件都不推荐改动,可以设置只读属性。
5、最后请新建一个名字为“main.c”文件,放入“STM32_FWsrc”中。
执行完以上操作后,应该得到如下结构:
STM32_FWoot:“cortexm3_macro.s”和“stm32f10x_vector.s”文件;
STM32_FWinterrupt:“stm32f10x_it”和“stm32f10x_it”文件;
STM32_FWsrc:“main.c”文件;
STM32_FWlibrary:“inc”文件夹和“src”文件夹;
建立“STM32_FW”文件夹的用意在于,它可以作为我们以后进行 STM32 程序开发时候的一个目录结构。以后我们新建任何一个工程时,只要直接复制这个文件夹里面的四个文件夹就可以完成一个工程最基本的文件结构的建立了。这样可以提高我们的开发效率。下一步,我们来真正着手建立第一个工程。
首先新建一个文件夹,笔者将其命名为“MyFirstJob”。并将“STM32_FW”中的“boot”、“library”、“src”、“obj”、“list”、“library”文件夹复制到“MyFirstJob”中。如下图所示:
然后执行如下操作:
1、打开 Keil uVision4,依次点击 Project-New uVision Project(如果当前有工程正在打开,请先执行Project-Close Project将其关闭),弹出窗口,填写工程名和保存路径(保存在我们刚才新建的“MyFirstJob”下,命名为 MyFirstJob),然后点击保存。
如下图:
2、接着第 1 步的保存之后,弹出窗口,选择 CPU 类型。此处根据实际情况选取,作者使用的是 STMicroelectronics 的 STM32F103RB 系列。如图所示,我们可以看到右侧显示了该型号 STM32 器件的一些特性,比如 72MHz,128K Flash,20K SRAM……资源都是非常丰富的。 如图所示:
3、选择好 CPU 型号之后点选确定,弹出如下图对话框:
此处是询问需不需要给工程添加 STM32 的启动代码(Startup Code),记得此处点选No。
4、至此 STM32 的工程已经新建完毕,可以看到如下界面:
5、接下来是将一系列必要的工程文件添加到当前工程中,执行如下操作:
(1)将“Target”重命名为“MyFirstJob”,并删除 Source Group1。在“MyFirstJob”上点击右键,在弹出的菜单中选择 Add Group...,依次添加四个 Group,分别命名为“boot”、
“library”、“src”、“library”。完成后如下图所示:
(2)在 boot 上点击右键,在弹出的菜单中选择 “Add File to Group ‘boot’... ” ,将“MyFirstJoboot”文件夹中的“cortexm3_macro.s”和“stm32f10x_vector.s”添加进来;
(3) 依照(2)的方法,给library添加 “MyFirstJoblibrarysrc” 路径下的 “stm32f10x_flash.c”、
“stm32f10x_gpio.c”、“stm32f10x_lib.c”、“stm32f10x_rcc.c”四个文件;
(4)给 src 添加“main.c”;
(5)给 interrupt 添加“stm32f10x_it.c”;
(6)以上操作完毕之后,应该得到如下界面(请在 main.c 文件键入一个空 main 函数,
如图所示):
6、右键点击Project 区的“MyFirstJob”,在弹出的菜单中选择“Option for Target ‘MyFirstJob’…”,
弹出选项配置界面,如下所示:
做如下操作:
1)点击Output——Select Folder for Objects...,在弹出的窗口中选择“MyFirstJobobj”;
2)点Listing——Select Folder for Lisitings...,在弹出的窗口中选择“MyFirstJoblist”;
3)点击OK退出“Option for Target ’MyFirstJob’”界面。
7、按下F7(“Build”的快捷键),进行编译。应该看到如下界面:
最下面的 Build Output 区是编译信息框,可以从中获取编译信息,如代码量,错误和警 告信息等,我们可以发现此次编译结果为“0 Error(s),1 Warning(s)”,即“0个错误,1个警告”,而我们可以看到这个警告的解释为:“srcmain.c(6): warning: #1-D: last line of file ends without a newline”,这是gcc编译器一个很常见的警告,意思是当前文件(srcmain.c)并不是以一个空行结尾,读者只要在“main.c”的最后加上一个空行在编译就可以去掉这个警告了。
8、一个完整的 STM32 工程至此就完成建立了。可以发现“MyFirstJob”文件夹多了几个文件。
可以看到KEIL MDK的工程目录是很简洁的,此处也得益于我们的 obj 文件夹和 list 文件夹存放了编译所生成的大部分文件。但是此工程仍未可以用于进行 STM32 的开发,原因是我们还未对 STM32 的调试开发工具进行设置,在下一节里将会有具体说明。
17