码迷,mamicode.com
首页 > 其他好文 > 详细

STM32工程建立

时间:2016-05-06 12:43:57      阅读:990      评论:0      收藏:0      [点我收藏+]

标签:



⑴在建立工程之前,我们建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里我们建立一个文件夹为《STM32工程模板》,然后再在该文件夹下新建6个文件夹,分别为: 《CMSIS》 、《Listings》 、《Output》 、《Project》 、《STM32F10x_Stdperiph_Driver》 、《User》 。《CMSIS》用于存放ARM公司提供的内核函数接口文件,《STM32F10x_Stdperiph_Driver》用于存放ST公司的库文件,《Listings》用于存放编译时产生的中间文件,《Output》用于存放生成的下载所需的文件,《Project》用于存放工程文件,《User》用于存放用户文件,即我们自己编写的各种源文件。这六个文件夹是工程项目的主干,为了使我们的工程更加完善,我们可以在添加一个批处理文件(用来清除工程编译调试过程中产生的垃圾文件)和文本文档(用来对工程做一个整体介绍)。最后我们的工程模板文件夹下的文件构成应该是如图所示:

技术分享

⑵向建立的工程文件夹中添加库文件。

 将库文件中的incsrc文件夹复制到模板工程文件夹下的《STM32F10x_Stdperiph_Driver》如图所示

技术分享

这是ST公司官方库文件,我们需要按照如图所示路径STM32F10x_StdPeriph_Lib_V3.5.0>Libraries>STM32F10x_StdPeriph_Driver将其中的incsrc复制到我们自己的工程的STM32F10x_StdPeriph_Driver文件夹中,如图。

技术分享

将库文件中DeviceSupport文件夹和CoreSupport文件夹下的相关文件复制到我们自己的工程模板文件夹下的CMSIS文件夹。如图所示。

技术分享

按图中红框中的路径STM32F10x_StdPeriph_Lib_V3.5.0>Libraries>CMSIS>CM3>DeviceSupport>ST>STM32F10x  目标文件夹下的所有四个文件复制到我们自己工程模板的CMSIS

技术分享

同样,如图红框中所示路径,将CoreSupport中的两个文件复制到我们的工程模板的CMSIS中。

最后我们的工程模板中的CMSIS中的文件如图所示

技术分享

 

将库文件中Project文件夹下的相关文件复制到工程模板文件夹下的User文件夹中。如图所示。

技术分享

至此,我们需要添加的库文件已经完成了。

使用MDK(Keil)新建工程模板

打开MDK软件,点击MDK菜单: Project >New Uvision Project ,然后将目录定位到刚才建立的工程模板中的Project文件夹下。工程命名为Template(可根据不同项目工程更改),点击保存。

  接下来会出现一个选择 Device 的界面,就是选择我们的芯片型号,这里我们定位到 STMicroelectronics 下面的 STM32F103ZE(针对我们的实验箱所用芯片是这个型号,如果使 用的是其他系列的芯片,选择相应的型号就可以了)

技术分享

技术分享

点击 OKMDK 会弹出一个对话框,如图所示

技术分享

这里我们直接点击否即可。得到如图所示界面。

技术分享

更改工程名(将默认的工程名改为“Template”的方法:选中工程,按“F2”键)并右击工程名,选择ManageComponents,得到如图所示。

技术分享

Grops里建立三个文件组,如图所示:

技术分享

并给每一个文件组添加对应文件,将 Groups 定位到USER 下面,添加需要的文件。这里我们的 USER下面我需要添加main.cstm32f10x_it.c 如图所示。

 

技术分享

Groups定位到CMSISCORE下面需要添加的文件为 core_cm3.csystem_stm32f10x.cstartup_stm32f10x_hd.s(注意,默认添加的时候文件类型为.c,也就是添加 startup_stm32f10x_hd.s启动文件的时候,你需要选择文件类型 为 All files 才能看得到这个文件此文件路径为CMSIS->startup->arm)

技术分享

Groups定位到STM32F10x_StdPeriph_Driver将目 STM32F10x_FWLib/src 下面的全部文件添加到工程中,这里需要说明一下,对于我们写代码,如果我们只用到了其中的某个外设,我们就可以不用添加没有用到的外设的库文件。例如我只用 GPIO,我可以只用添加 stm32f10x_gpio.c 其他的可以不用添加。这里我们全部添加进来是为了后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢,用户可以自行选择。如图所示

技术分享

工程配置

在配置工程前,我们首先把 main.c 文件里面的内容替换为如下内容:

int main(void)

{ 

while(1);

}

配置Target选项卡。具体操作如图所示。

技术分享

首先点击MDK中的TargetOptions按钮,进入到工程配置界面。

技术分享

配置Output选项卡,如图所示。

技术分享

选择 Output。然后勾上下三个选项。 其中 Create HEX file 是编 译生成 hex 文件,BrowserInformation 是可以查看变量和函数定义。还有就是我们要选择 生产的 hex 文件和项目中间文件放在哪个目录,点击“Select folder for Objects…”定位目录,我们的选择定位到我们的工程建立的Output目录下面,点击OK。如图所示。技术分享

配置Listing选项卡。如图所示

技术分享

此步骤与上一步配置Output选项卡一致。

配置C/C++选项卡。

与之前的步骤一样,定位到c/c++界面,然后填写  STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面(请注意,两个标识 符中间是英文输入法状态下的逗号不是句号)。这里解释一下,如果你用的是中容量那么 STM32F10X_HD 修改为 STM32F10X_MD,小容量修改为 STM32F10X_LD. 然后点击 OK 因为我们学校的实验箱使用的是大容量,所以要选择“STM32F10X_HD”如图所示。

技术分享

 

下面我们要告诉 MDK,在哪些路径之下搜索需要的头文件,也就是头文件路径。然后同样是在C/C++选项卡,继续点击 Include Paths右边的按钮。弹出一个添加 path 的对话框,然后我们将图上面的 3 个目录添加进去(\USER, \CMSIS,  \ STM32F10x_StdPeriph_Driver\inc)。记住,keil 只会在一级目录查找,所以如果你的目录 下面还有子目录,记得 path 一定要定位到最后一级子目录。然后点击 OK。如图所示

技术分享

到这里,我们的工程就建立好了,编译程序,我们会看到,没有错误也没有警告,Output文件夹里生成了可下载的HEX文件,如图所示。

技术分享

⑸完善工程

    我们在进行工程的编译和调试过程中会产生大量的中间文件,例如刚才我们新建立的工程,在编译成功后,在Output文件夹和Listings文件夹中共产生了几十兆的文件如图所示:

技术分享

技术分享

       这些文件在我们需要存储、拷贝传送工程的时候是多余的,所以我们可以通过批处理文件将其在不需要的时候删除,节省工程空间。

步骤:1、在工程文件夹下建立文本文档文件。命名为killkeil.txt

         2、在killkeil中添加如下所示内容。

              del *.bak /s

del *.ddk /s

del *.edk /s

del *.lst /s

del *.lnp /s

del *.mpf /s

del *.mpj /s

del *.obj /s

del *.omf /s

::del *.opt /s  ::不允许删除JLINK的设置

del *.plg /s

del *.rpt /s

del *.tmp /s

del *.__i /s

del *.crf /s

del *.o /s

del *.d /s

del *.axf /s

del *.tra /s

del *.dep /s          

del JLinkLog.txt /s

del *.iex /s

del *.htm /s

del *.sct /s

del *.map /s

exit

       3、将文本文档的扩展名改为.bat

这时我们的批处理文件就建立好了,当我们建立其他工程时可以直接将批处理文件复制到工程目录下。

Readme文件是对我们的工程做一个详细的介绍例如:项目时间、作者、功能、现象、引脚配置、注意事项等等作者想要表达给用户的一些内容可以在这里说明。例如我们的实验一中的Readme文件:

技术分享

JLINK 下载与调试程序

       在我们所建的工程中,代码比较简单,所以不需要硬件调试,我们直接一次就能成功。可是,如果你的代码工程比较大,难免存在一些 bug,这时,就有必要通过硬件调 试来解决问题了。 串口只能下载代码,并不能实时跟踪调试,而利用调试工具,比如 JLINKULINKSTLINK 等就可以实时跟踪程序,从而找到你程序中的 bug,使你的开发事半功倍。这里我们以 JLINK V8 为例,说说如何在线调试 STM32 JLINK V8 支持 JTAG SWD,同时 STM32 也支持 JTAG SWD。所以,我们有 2 种方 式可以用来调试,JTAG 调试的时候,占用的 IO 线比较多,而 SWD 调试的时候占用的 IO 线很 少,只需要两根即可。  JLINK V8 的驱动安装比较简单,我们在这里就不说了。在安装了 JLINK V8 的驱动之后, 我们接上 JLINK V8,并把 JTAG 口插到实验箱JLINK接口处,打开之前新建的工程,打开 Options for Target 选项卡,在 Debug 栏选择仿真工具为 Cortex-M/R J-LINK/J-Trace如图所示:

技术分享

上图中我们还勾选了 Runto main(),该选项选中后,只要点击仿真就会直接运行到 main 数,如果没选择这个选项,则会先执行 startup_stm32f10x_hd.s 文件的 Reset_Handler,再跳到 main 函数。 然后我们点击 Settings,设置 J-LINK 的一些参数,如图所示:

技术分享

图中,我们使用 J-LINKV8 SW 模式调试,因为我们 JTAG 需要占用比 SW 模式多很多的 IO 口,而在我们的实验箱上这些 IO 口可能被其他外设用到,可能造 成部分外设无法使用。所以,我们建议大家在调试的时候,一定要选择 SW 模式。Max Clock 可以点击 Auto Clk 来自动设置,图中我们设置 SWD 的调试速度为 10Mhz,这里,如果你的 USB 数据线比较差,那么可能会出问题,此时,你可以通过降低这里的速率来试试。 单击 OK,完成此部分设置,接下来我们还需要在 Utilities 选项卡里面设置下载时的目标编程器,如图所示:

技术分享

图中,我们选择 J-LINK来调试 Cortex M3,然后点击 Settings,设置如图所示:

技术分享

 

这里要根据不同的MCU选择 FLASH 的大小,因为我们实验箱使用的是 STM32F103ZET6 FLASH 大小为 512KB,所以我们点击 Add,并在 Programming Algorithm 里面选择 512K 号的 STM32。然后选中 Resetand Run 选项,以实现在编程后自动启动,其他默认设置即可。 设置完成之后,如上图所示。

在设置完之后,点击 OK,然后再点击 OK,回到 IDE 界面,编译一下工程。接下来我们 就可以通过 JLINK 下载代码和调试代码。 配置好 JLINK 之后,使用 JLINK 下载代码就非常简单,大家只需要点击 LOAD 按钮技术分享就可以进行程序下载。下载完成之后程序就可以直接在开发板执行。我们也可以用JLINK 进行程序仿真。点击技术分享开始仿真如果开发板的代码没被更新过,则会先更新代码,再仿真,你也可以通过按,只下载代码,而不进入仿真。

 

作者:燕山大学电气工程学院李兴浩

如果错误欢迎指正批评,转载请标明来源和作者

STM32工程建立

标签:

原文地址:http://blog.csdn.net/qq_34322603/article/details/51329509

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!