STM32工程建立



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

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

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

这是ST公司官方库文件,我们需要按照如图所示路径STM32F10x_StdPeriph_Lib_V3.5.0>Libraries>STM32F10x_StdPeriph_Driver将其中的inc和src复制到我们自己的工程的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(针对我们的实验箱所用芯片是这个型号,如果使
用的是其他系列的芯片,选择相应的型号就可以了)。

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

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

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

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

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

将Groups定位到CMSIS,CORE下面需要添加的文件为 core_cm3.c,system_stm32f10x.c,startup_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,这时,就有必要通过硬件调
试来解决问题了。
串口只能下载代码,并不能实时跟踪调试,而利用调试工具,比如 JLINK、ULINK、STLINK
等就可以实时跟踪程序,从而找到你程序中的 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
进行程序仿真。点击开始仿真如果开发板的代码没被更新过,则会先更新代码,再仿真,你也可以通过按,只下载代码,而不进入仿真。

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

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

时间: 2024-10-09 03:33:59

STM32工程建立的相关文章

stm32工程建立中关于宏定义和启动文件的选择

在STM32的学习过程中,第一步关于stm32工程的建立就会难倒很多人,因为他不像其他AVR 51单片机这些,options中的配置比较复杂,其中最让人头疼的就是关于c/c++ compiler选项中preprocessor这个选择框,现在我就对其中的两项进行说明,一是为了让以后学习STM32的同学能更快的了解,二是为了让我自己更好的复习. 如上图所示  其中 additional include directories下面的框需要添加工程内头文件所在的路径,'$PROJ_DIR$'表示的是工程

Eclipse中STM32工程建立步骤

前段时间一直在折腾linux系统上STM32的开发,网上一顿搜,费劲九牛二虎之力终于把环境搭好了(现在都有点忘了,后面再折腾环境搭建一定要写个教程,今天先不写了). 自从环境搭好之后,就基本抛弃MDK了,用了几个月,感觉Eclipse实在比MDK好用一百倍,用它写代码简直就是一种享受,下面趁着还熟,记录一下工程建立步骤: 先来张整体效果图: 第一步:File-new,新建project,选择C Project,如下图: 第二步:选择工程模板(STM32F10X C/C++Project),填写工

使用keil建立标准STM32工程模版

1.   模板工程的创建(超级详细版,使用的是keil 4.5版本) 1.1创建工程目录 良好的工程结构能让文件的管理更科学,让开发更容易更方便,希望大家养成良好的习惯,使用具有合理结构的工程目录,当你着手于较大的软件项目时,类别分明,层次合理的工程目录结构会让你的开发管理化繁为简. (1)首先在一个目录下创建主文件夹,名字按需求取,这里取名为:(0)工程模板 (2)在该文件夹里分别建立名字为Project和Source的文件夹.其中Project文件夹用来放置工程文件,而Source用来放置程

eclipse软件安装及python工程建立

原文地址:http://www.cnblogs.com/halfacre/archive/2012/07/22/2603848.html 安装python解释器 安装PyDev: 首先需要去Eclipse官网下载:http://www.eclipse.org/,Eclipse需要JDK支持,如果Eclipse无法正常运行,请到Java官网下载JDK安装:http://www.oracle.com/technetwork/java/javase/downloads. 打开Eclipse,找到Hel

STM32工程中出现 error: A1163E: Unknown opcode R0, , expecting opcode or Macro错误分析及处理

最近测试以前的一个程序,一般都是打开以前写的程序修改参数直接测试 但是发现以前的编译后出现错误. 奇怪了,以前的出现都是调试好了的啊,一般都是没有错误的,迅速找问题 跳转到错误代码行 代码区域 1 Heap_Size EQU 0x00000000 2 3 AREA HEAP, NOINIT, READWRITE, ALIGN=3 4 __heap_base 5 Heap_Mem SPACE Heap_Size 6 __heap_limit 7 8 PRESERVE8 9 THUMB ;指定为TH

red5研究(一):下载,工程建立、oflaDemo安装、demo测试

一.red5下载.添加工程到myeclipse 1,从官网上下载red51.01版本(我下载的是red51.0的版本),下载链接http://www.red5.org/downloads/red5/1_0_1/ 2,下载后的文件结构如下: 3,解压src.zip到当前目录,这个是red5的源文件.然后在myeclipse中添加一个新的java工程.把所有文件添加进这个工程中去. 4,如果是red51.0的版本的话,jdk要选择jdk1.6的版本,要不然会出现socket错误.如果是red51.0

C#窗体工程建立后如何修改工程文件名和命名空间

今天写了个C#的小测试程序,一开始使用的默认命名WindowsFormsApplication2,写完后觉得名字不好看,于是想改个名字,但是试了一下,想完整的改名还挺复杂,不但要改解决方案名,项目名,还要改命名空间名和文件夹名.顺序如下: 1. VS2010上解决方案名上右键->重命名 2. 项目名上右键->重命名 以上两步都很明显的. 改完后效果如下, 4. 接下来要改名代码中的名称空间名,任意打开一个程序文件,找到命名空间名,改掉,会出现报错,点击那个小红框,选择自动改名: 点击那个小红框

Ubuntu 系统下安装gcc-arm-none-eabi编译STM32工程

在使用rikirobot机器人做ROS下的导航实验是,粗心大意将底层控制板烧坏,买了个新的电路板重新开始.在编译商家各处的STM32源代码时,Ubunt下总是出现了/arm-none-eabi-gcc/bin/ld:cannot find -lstdc++的错误,这是一个链接错误,使用arm-none-eabi-gcc编译器时总是连接不到libstdc++.首先尝试使用网上给出的一种方法,原因认为是在64位系统下编译32位的工程需要把32位的库包含进来,使用如下命令 1 sudo apt-get

Keil5.15使用GCC编译器编译STM32工程

我们使用Keil一般使用ARMCC编译MCU工程代码.其实,Keil也是支持内嵌GCC编译器的.我们可以使用GCC来编译我们的工程代码. 一.下载GCC编译器 GCC编译器下载地址 二.安装GCC 我们可以把GCC解压到keil的安装目录下面.如下图 三.配置Keil使用GCC编译器 1.配置CC编译规则,Misc Controls 填写 -mcpu=cortex-m4 -mthumb -fdata-sections -ffunction-sections 2.Assembler中规则,Misc