查看: 1075|回复: 0

零死角玩转stm32-初级篇之如何新建工程模板

[复制链接]
  • TA的每日心情
    慵懒
    2015-5-29 12:01
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-7-1 19:08:14 | 显示全部楼层 |阅读模式
    分享到:
        3、如何新建工程模板

       3.1 获取ST库源码
    在新建工程模板之前,我们首先需要获取到st库的源码,源码可从st的官方网站下载到,也可在野火M3光盘目录下:2-程序+教程第一部分-库开发初级篇 找到,里面有V3.0.0和V3.5.0版本的库,这两个库的版本区别很小,几乎可以兼容。在这里我们以V3.5.0来新建我们的工程模板。
    3.2开始新建工程
    点击桌面UVision4图标,启动软件。如果是第一次使用的话会打开一个自带的工程文件,我们可以通过工具栏Project->Close Project选项把它关掉。
    在工具栏Project->New μVision Project…新建我们的工程文件,我们将新建的工程文件保存在桌面的STM32-TemplateUSER文件夹下(先在电脑桌面上新建一个STM32-Template文件夹,在STM32-Template里面新建一个USER文件夹),文件名取为STM32-DEMO(英文DEMO的意思是例子),名字可以随便取,点击保存。

    接下来的窗口是让我们选择公司跟芯片的型号,我们用的芯片是ST公司的STM32F103VET6,有64K SRAM,512K Flash,属于高集成度的芯片。按如下选择即可。

    接下来的窗口问我们是否需要拷贝STM32的启动代码到工程文件中,这份启动代码在M3系列中都是适用的,一般情况下我们都点击是,但我们这里用的是ST的库,库文件里面也自带了这一份启动代码,所以为了保持库的完整性,我们就不需要开发环境为我们自带的启动代码了,稍后我们自己手动添加,这里我们点击否。

    此时我们的工程新建成功,如下图所示。但我们的工程中还没有任何文件,接下来我们需要在我们的工程中添加所需文件。

    在STM32-Template文件夹下,我们新建四个文件夹,分别为FWlib、CMSIS、Uotput、Listing。原先新建的USER用来存放工程文件和用户代码,包括主函数main.c。 FWlib用来存放STM32库里面的inc和src这两个文件,这两个文件包含了芯片上的所有驱动。CMSIS用来存放库为我们自带的启动文件和一些M3系列通用的文件。CMSIS里面存放的文件适合任何M3内核的单片机。CMSIS的缩写为: Cortex Microcontroller Software Interface Standard,是ARM Cortex微控制器软件接口标准,是ARM公司为芯片厂商提供的一套通用的且独立于芯片厂商的处理器软件接口。Uotput用来保存软件编译后输出的文件,Listing用来存放一些编译过程中产生的文件,具体可不用了解。

    把野火M3光盘目录下:3-ST库3.5.0源码3.5.03.5.0STM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_Driver的inc跟src这两个文件夹拷贝到STM32-TemplateFWlib文件夹中。

    把野火M3光盘目录下:2-程序+教程第一部分-库开发初级篇3-ST库3.5.0源码3.5.03.5.0STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_Template下的 main.c、stm32f10x_conf.h、stm32f10x_it.h、 stm32f10x_it.c 、system_stm32f10x.c 拷贝到STM32-TemplateUSER目录下。 stm32f10x_it.h、和stm32f10x_it.c这两个文件里面是中断函数,里面为空,并没有写任何的中断服务程序。stm32f10x_conf.h是用户需要配置的头文件,当我们需要用到芯片中的某部分外设的驱动时,我们只需要在该文件下将该驱动的头文件包含进来即可,片上外设的驱动在src文件夹中,inc文件夹里面是它们的头文件。这三个文件是用户在编程时需要修改的文件,其他库文件一般不需要修改。system_stm32f10x.c是ARM公司提供的符合CMSIS标准的库文件,等下我们把这个文件移动到STM32-TemplateCMSIS这个文件夹中。

    (1)把野火M3光盘目录下:2-程序+教程第一部分-库开发初级篇3-ST库3.5.0源码3.5.03.5.0STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10xstartuparm的全部文件拷贝到STM32-TemplateCMSISstartup(需先在CMSIS新建好startup文件夹)文件夹下。这些是用汇编写的启动文件。野火M3开发板用的CPU是STM32F103VET6,有512K Flash,属于大容量的,所以等下我们把startup_stm32f10x_hd.s添加到我们的工程中。根据ST的官方资料:Flash在16 ~32 Kbytes为小容量, 64 ~128 Kbytes 为中容量,256 ~512 Kbytes为大容量,不同大小的Flash对应的启动文件不一样,这点要注意。(2)把野火M3光盘目录下:2-程序+教程第一部分-库开发初级篇3-ST库3.5.0源码3.5.03.5.0STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3CoreSupport的core_cm3.c和core_cm3.h也拷贝到STM32-TemplateCMSIS文件夹下。

    (3)把野火M3光盘目录下:2-程序+教程第一部分-库开发初级篇3-ST库3.5.0源码3.5.03.5.0STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x的stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h拷贝到STM32-TemplateCMSIS文件夹下。
    此时我们新进的工程目录如下所示

    回到我们刚刚新建的MDK工程中,将Target改为STM32-DEMO(不改也行)


    在STM32-DEMO上右键选中Add Group…选项,新建四个组,分别命名为STARTCODE、USER、FWlib、CMSIS。STARTCODE从名字就可以看得出我们是用它来放我们的启动代码的,USER用来存放用户自定义的应用程序,FWlib用来存放库文件,CMSIS用来存放M3系列单片机通用的文件。
    接下来我们往我们这些新建的组中添加文件,双击哪个组就可以往哪个组里面添加文件。我们在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文件,头文件是不需要添加的。最终效果如下图:

    至于有些文件有个锁的图标,是因为这些都是库文件,不需要我们修改,属性为只读。
    至此,我们的工程已经基本建好,下面来配置一下MDK的配置选项,点击工具栏中的魔术棒按钮,在弹出来的窗口中选中

    点击Select Folder for Objects... 设置编译后输出文件保存的位置。同时把 Create HEX File 和 Browse information这两个选项框也选上。

    同样在Listing这个选项卡中,我们也点击 Select Folder listings…定位到模板中的Listing文件夹。
    选中选项卡,在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。
    库文件路径修改成功之后如下所示:

    修改main.c文件。因为刚刚我们的main.c文件是从官方库里面复制过来的,里面有许多的东西我们是不需要的,为了简化main.c文件,我们将修改如下。
    /******************** (C) COPYRIGHT 2012 WildFire Team **************************
    * 文件名  :main.c
    * 描述    :用3.5.0版本建的工程模板。
    * 实验平台:野火STM32开发板
    * 库版本  :ST3.5.0
    *
    * 作者    :wildfire team
    * 论坛    :https://www.amobbs.com/forum-1008-1.html
    * 淘宝    :https://firestm32.taobao.com
    **********************************************************************************/
    #include "stm32f10x.h"
    /*
    * 函数名:main
    * 描述  : 主函数
    * 输入  :无
    * 输出  : 无
    */
    int main(void)
    {
    while(1);
    // add your code here ^_^。
    }
    /******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/
    至此,我们的工程模板就建成了。学会新建工程,是学习stm32的第一步。
    3.3 硬件调试配置
    这个工程默认的是软件仿真,如果开发板要用J-LINK 调试的话,还需要在开发环境中做如下修改。实际上,我们开发程序的时候80%都是在硬件上调试的。
    具体配置如下图所示:点击,在Debug选项里

    在选项卡DebugSettingFlash download 中我们设置成如下:

    到了这里就算是大功告成了。如果在新建工程中遇到什么问题,先不要急,可先参考野火M3光盘目录下提供的已经新建好的工程模板。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-18 22:10 , Processed in 0.119273 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.