STM32新建工程图文教程
http://115.com/lb/5lbbahmhypm#
STM32新建工程教程.pdf
115网盘礼包码:5lbbahmhypm
重新整理:chengbozhe
资料来源:野火零死角玩转stm32-初级篇
时间:2013.11.15
1.新建文件夹STM32-Template(用来存放工程中所有的文件),并在STM32-Template文件夹下,我们再新建四个文件夹,分别为FWlib、CMSIS、Output、Listing。如图:
USER用来存放工程文件和用户代码,包括主函数main.c。
CMSIS用来存放库为我们自带的启动文件和一些M3系列通用的文件。
FWlib用来存放STM32库里面的inc和src这两个文件,这两个文件包含了芯片上的所有驱动。(firmware library 即固件库)
Listing用来存放一些编译过程中产生的文件,具体可不用了解。
Output用来保存软件编译后输出的文件。
2、点击图标,在工具栏Project->New μVision Project(新建我们的工程文件),保存在STM32-Template\USER文件夹下,将工程名取为STM32-DEMO(英文DEMO的意思是例子),点击保存。
3、接下来芯片的型号,例如ST公司的STM32F103VET6,然后点击OK即可。
4、接下来的窗口问我们是否需要拷贝STM32的启动代码到工程文件中,点击否。
5、 拷贝文件
把stsw-stm32054.zip\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver的inc跟src这两个文件夹拷贝到STM32-Template\FWlib文件夹中。
6、
(1)把stsw-stm32054.zip\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下的 main.c、stm32f10x_conf.h、stm32f10x_it.h、 stm32f10x_it.c 拷贝到STM32-Template\USER目录下。
把stsw-stm32054.zip\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport中的core_cm3.c、core_cm3.h拷贝到STM32-Template\CMSIS文件夹下。
把stsw-stm32054.zip\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x的stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h拷贝到STM32-Template\CMSIS文件夹下。
把stsw-stm32054.zip\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm中的startup_stm32f10x_hd.s拷贝到STM32-Template\CMSIS下。
7、
回到我们刚刚新建的MDK工程中,将Target改为STM32-DEMO(不改也行)
在STM32-DEMO上右键选中Add Group…选项,新建四个组,分别命名为STARTCODE、USER、FWlib、CMSIS。(也可点击图标进行文档编辑)
STARTCODE从名字就可以看得出我们是用它来放我们的启动代码的。
USER用来存放用户自定义的应用程序。
FWlib用来存放库文件。
CMSIS用来存放M3系列单片机通用的文件。
8、(也可点击图标进行文档编辑)
接下来我们往我们这些新建的组中添加文件,双击哪个组就可以往哪个组里面添加文件。
STARTCOKE组里面添加startup_stm32f10x_hd.s
USER组里面添加main.c 和 stm32f10x_it.c
FWlib组里面添加src里面的全部驱动文件(当然,src里面的驱动文件也可以需要哪个就添加哪个,这里将它们全部添加进去是为了后续开发的方便,况且我们可以通过配置stm32f10x_conf.h 这个头文件来选择性添加,只有在stm32f10x_conf.h文件中配置的文件才会被编译)
CMSIS里面添加core_cm3.c 和system_stm32f10x.c文件。注意,这些组里面添加的都是汇编文件跟C文件,头文件是不需要添加的。最终效果如下图:
9、至此,我们的工程已经基本建好,下面来配置一下MDK的配置选项.
(1)点击工具栏中的魔术棒按钮,在弹出来的窗口中选中
点击Select Folder for Objects... 设置编译后输出文件保存的位置。同时把 Create HEX File 和 Browse information这两个选项框也选上。
(2)同样在这个选项卡中,我们也点击 Select Folder listings…定位到模板中的Listing文件夹。
(3)选中选项卡,在Define 里面输入添加USE_STDPERIPH_DRIVER, STM32F10X_HD。
添加USE_STDPERIPH_DRIVER是为了屏蔽编译器的默认搜索路径,转而使用我们添加到工程中的ST的库。
添加STM32F10X_HD是因为我们用的芯片是大容量的,添加了STM32F10X_HD这个宏之后,库文件里面为大容量定义的寄存器我们就可以用了。芯片是小或中容量的时候宏要换成STM32F10X_LD或者STM32F10X_MD。其实不管是什么容量的,我们只要添加上STM32F10X_HD这个宏即可,当你用小或者中容量的芯片时,那些为大容量定义的寄存器我不去访问就是了,反正也访问不了。
在Include Paths栏点击,在这里添加库文件的搜索路径,这样就可以屏蔽掉默认的搜索路径。
但当编译器在我们指定的路径下 搜索不到的话还是会回到标准目录去搜索,就像有些ANSIC C 的库文件,如 stdin.h 、stdio.h。
库文件路径修改成功之后如下所示:
10、修改main.c文件。因为刚刚我们的main.c文件是从官方库里面复制过来的,里面有许多的东西我们是不需要的,为了简化main.c文件,我们将修改如下。
#include "stm32f10x.h"
/*
* 函数名:main
* 描述 : 主函数
* 输入 :无
* 输出 : 无
*/
int main(void)
{
// add your code here ^_^
while(1);
}
硬件调试配置
这个工程默认的是软件仿真,如果开发板要用J-LINK 调试的话,还需要在开发环境中做如下修改。实际上,我们开发程序的时候80%都是在硬件上调试的。
具体配置如下图所示:点击,在Debug选项里
在选项卡Debug\Setting\Flash download 中我们设置成如下: