您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页项目1 MDK开发环境的使用和配置

项目1 MDK开发环境的使用和配置

来源:筏尚旅游网


MDK的操作与设置

1.新建工程

先在Windows文件夹中建立自己的项目文件夹,目录结构如下:

图1 实训项目目录结构

以自己的班级姓名学号建一个文件夹,做为实训项目的根文件夹,下面建立子文件夹:BSP(存放实验板相关驱动程序)、INC(存放ST标准外设库的头文件)、LIB(存放ST标准外设库)、项目1 LEDTest(根据具体项目命名),项目1 LEDTest下再建MDK和App子文件夹,MDK用来存放uVision工程项目配置信息, App用来存放项目的源程序。

其中BSP、INC和LIB中的文件都由实训教材配套给出,将相应的文件拷贝到对应文件夹中,由所有实训项目共同使用。

而针对某个实训项目编写的应用程序,如项目1 LEDTest,都保存到各自的类似“项目x 项目名”文件夹的子文件夹App。

双击桌面uVision4图标,启动Keil uVision4,点击菜单栏Project-New uVision Project,选择工程的保存位置,保存位置选择在之前建立的MDK文件夹下,工程命名LedTest.uvproj,如图2所示。

图2保存路径的选择

在弹出的界面中选择所使用的芯片型号,实训使用的CPU芯片型号为STMicroelectronics的STM32F107VCT6,所以选择STM32F107VC,如图3所示。

图3选择芯片型号

芯片选择完成后软件会弹出一个提示框,提示是否要拷贝STM32启动代码并添加到我们新建的工程中,由于我们使用新版本标准外设库中提供的启动代码,因此此处选择否。如图4所示。

图4拷贝启动代码选择“否”

接下来建立了一个新的工程,默认的目标名称Target1,下面有一个组Source Group 1,因为还没有编写和添加任何程序文件,所以工程窗口的组Source Group 1是一个空的组。

图5 MDK uVision环境

2.添加程序文件

在Keil MDK开发环境,为了项目工程的维护性,建议将程序拷贝到一个项目文件夹中管理。在我们实训项目中,要求项目的应用程序保存在App文件夹里(可以再建立子文件夹)。

添加程序文件到工程项目,在左侧Project窗口中对Target 1右击,如图6所示,单击Manage Components。出现如所图7示界面。

图6,项目文件管理

图7项目文件管理Manage Components窗口

在这个界面里可以方便的添加工程的相关文件。也可以在工程项目窗口对应的Group上右键Add Group和Add Files to Group来添加文件,只是这种方式更方便集中的添加和管理。按照图8所示,将项目当前的目标名称Target 1重命名为“LED”,建立两个Group,点击Groups一栏右上角图标,依次新建App、LIB两个组,点击对应的组后,再点击右下方Add Files添加相应的文件到对应的组中。

将 “班级姓名学号\\项目1 LEDTest\\App”文件夹下的文件main.c添加到App组中,Lib组添加“班级姓名学号\\Lib”文件夹下STM32StdPeriphLib.lib文件。至此,已经将对应的文件全部加入工程中。

根据不同实训项目的需要,可以分别建立或删除组,并为组添加或删除相应的文件。

图8 编辑组并添加对应文件

文件添加完成后的工程管理窗口如图9所示。

图 9 工程窗口变化

项目文件管理窗口也可以通过工具栏按钮打开。

在Keil的工程项目中添加程序文件,除了上面已经有了程序源文件,还可以利用Keil uVision的编辑环境,新建程序源文件,保存到指定路径,然后再通过上面的步骤添加到项目中。

创建源程序文件,选择菜单“File --New..”,出现编辑窗口,如图5-1所示。在编辑窗口中输入程序,完成后点击保存按钮,选择保存路径(按前面所说目录结构,保存到项目文件夹App下)。保存之后,要注意到源程序并没有自动加到工程中来,还需要手动添加,此时可以参考上面的方法。

3.项目参数配置

接下来需要针对工程项目进行一些参数设置,以适合我们的实验板和软件开发环境。 在Keil uVision中,每个工程项目(project)可以建立多个目标(target),每个目标有自己独立的配置,这样使得一个工程项目的源程序,可以根据不同的配置,生成不同的目标代码,以便在多种硬件平台上运行。

为LEDTest工程项目的LED目标进行配置,首先在工具栏上select target下拉框中选择LED目标(因为当前项目只建立了一个目标,所以下拉框中只有一个目标“LED”显示)。然后点击target options按钮Target ‘LED’,如图10所示。

,也可以在工程窗口中LED上右击,选择第一项Options for

图10 项目选择和项目配置

弹出Options窗口如图11所示。在这个窗口中共有10个选项卡,第一个选项卡Device用于选择使用的器件,由于在新建工程的时候已经选择这里可以不用在选择。

当前的目标配置如果在后期要更换使用的芯片时可以在这个选项卡中更换芯片。如果使用了启动代码,同时还要注意更换对应的启动文件。

在Target选项卡中,一般只需要保持默认设置即可。

图11 Target选项设置

在如图11所示Output选项卡中主要注意两项,一是选择输出文件夹,选择之前工程目录中MDK文件夹下新建Obj文件夹,这样编译过程中生成的.o等目标代码文件都保存在该Obj文件夹。

在下面还有一个Create HEX File选项,用于选择是否生成hex文件,如果编译好的程序要写片,或者要提供给别人下载到芯片中而不希望别人知道源码时可以提供HEX文件。

图12 Output选项设置

在Listing选项卡下同样可以选择Listing对应的文件夹,这里选择“项目1 LEDTest\\MDK\\List”文件夹,下方的复选框可以选择需要生成的调试信息,这里保持默认即可,如图13所示。

图13 Listing选项设置

C/C++选项卡中的设置比较重要,如图14所示,选项卡中主要有两个地方需要注意,首先是整个工程当前目标的宏定义。

在ST的标准外设库中很多功能都是通过宏定义来实现的,由于ST公司的标准外设库是针对STM32一系列芯片设计,因此需要通过宏定义来进行针对性的选择。这种选择有两种方式,一是直接改动宏定义部分的库文件,缺点是需要更改一些功能时不是很方便,建议尽量不更改库文件的方式下实现功能的配置和使用,另一种方式就是在工程的设置中添加宏定义。比如标准库中的两个宏定义,USE_STDPERIPH_DRIVER表示使用标准外设库进行程序开发,STM32F10X_CL表示使用的是STM32F10X系列Connectivity Line系列器件。

在我们的所有实训中直接使用.lib库,不使用标准外设库源代码,所以不需要定义USE_STDPERIPH_DRIVER、STM32F10X_CL。

图14 C/C++选项设置

需要说明的是在程序开发过程中不光库文件可以通过宏定义的方式进行程序功能配置,我们自己开发的应用程序也可以参考库文件的这种形式,通过相关的宏定义进行一些参数配置。ST STM32的标准外设库在程序组织性、层次性、规范性等方面都值得我们去学习的。

在该选项卡中进行的宏定义是这对当前Target ”LED”有效的,对每一个“Group”同样可以设置作用于Group的宏定义。

Language/Code Generation一栏中主要是针对程序语言所所的一些优化和配置,默认情况下保持默认即可。

接下来一个重要的设置就是设置工程所包含的头文件目录,如图15所示,点击Include Paths一栏右侧图标,弹出如所示的对话框。点击对话框右上角图标,添加工程所包括的头文件路径,添加头文件路径的时候要把当前工程目录中包含头文件的路径都添加进去,如所示,添加了以下几个路径:

..\\App; ..\\..\\LIB; ..\\..\\INC;

..\\..\\INC\\CMSIS_INC

图15 添加头文件包含路径

如果有用户自己编写的头文件也要相应的加上引用路径。仔细观察可以发现在标注外设库中头文件的引用为:#include \"stm32f10x.h\",在C语言的中,双引号表示编译器从用户目录开始搜索,如果未找到才回去系统目录去查找,MDK的安装目录中同样存在对应的库文件,路径为Keil\\ARM\\INC\\ST\\STM32F10x,但是由于不同的版本所内含的库文件不同,如MDK的V4.21版本中则内置了V3.4版本的库文件,V4.53版本内置了V3.5.0版本的库文件,而之前的版本中很多内置了V2.0版本的库文件,因此为了保持工程所使用的库文件和引用的头文件的一致性,同时也方便工程文件拷贝到其他电脑上运行,建议都按照本实训项目手册介绍的方式从自己的目录中引用头文件。

至此,我们的工程项目建立和配置完成,现在可以编译项目了,点击工具栏的Build或者Rebuild按钮,编译输出窗口会输出编译相关信息。

图 16 编译工具栏

图17 编译输出窗口

4.程序调试与下载设置

在头文件引用路径添加完成后,就可以进行相关的编译工作了。为了能将生成的代码下载到实验板运行,还要完成有关程序调试和下载的相关设置。

有关调试的设置在Options窗口的Debug选项卡中,之前的Asm和Linker选项卡保持默认。Debug选项卡如图18所示。

在此选项卡中主要完成程序调试的相关设置,选项卡主要分为两个部分,左侧是使用模拟器进行仿真与调试的方式,点选后软件会进入模拟器调试。

右侧是使用仿真器连接硬件开发平台进行调试,首先从右侧选择所使用的仿真器,这里使用的是J-Link仿真器,故在下拉框中选择J-LINK/J-Trace Cortex,在两侧的下方可以通过勾选对应的复选框来选择是否需要在调试开始时下载程序和运行到主程序,其他部分的设置保持默认即可。

图18调试工具设置

点击右侧Settings按钮,进入J-Link的设置界面,如果此时仿真器和硬件开发平台已经正确连接就会出现如图19所示的界面,同时系统系统任务栏中会自动弹出J-Link的控制软件。

从界面中可以读出当前的J-Link SN号以及相应的版本信息,如果没有出现相关信息请检查相关驱动程序是否正确安装,并到系统的设备管理器中通用串行总线控制设备一项检查系统有没有识别出J-Link,右侧则可以读取所连接的设备信息,如果没有出现类似的信息请检查硬件连接。在此选项卡中可以进行J-Link的端口、速度等设置,这里只需要保持默认就可以了。

图19 J-Link 设置窗口

1

设置好了Debug选项卡中有关选项后还需要设置Flash Download选项卡,如图20所示。 本选项卡主要设置烧写Flash时的相关参数,这里主要设置两个部分,一个是设置程序下载的一些配置,选择Erase Sectors表示下载程序的时候擦除对应Flash扇区,勾选后面三项,分别表示下载程序,下载后校验,程序下载后复位并运行。

接下来需要选择所使用的Flash,点击Add,添加所使用的芯片类型,实验板使用的是STM32F107VC,属于ST的Connectivity Line系列,因此选择STM32F10X Connectivity Line Flash。完成使用J-Link进行程序调试的配置。

1STM32F10X内核集成了串行/JTAG调试接口SWJ-DP(Serial Wire and JTAG)。这是标准的ARM CoreSight调试接口,包括JTAG-DP接口(使用5个引脚)和SW-DP(使用两个引脚)。引脚分配如表 5-9所示。两种方式都可以进行程序的调试和下载,但是SW方式更节省端口,只需要两根线就可以,多余的I/O可以释放用作普通用途,SW方式和JTAG方式在普通程序调试下载与调试过程中并无明显差别,如果想使用SW的方式调试程序只需要在Port的下拉列表中选择SW即可。选择完成后如果硬件连接正确同样能够读取芯片的信息。 表5 SWJ调试端口引脚 SWJ-DP端口 引脚名称 JTMS/SWDIO JTCK/SWCLK JTDI JTDO/TRACESWO JNTRST 类型 输入 输入 输入 输出 输入 JTAG 调试接口 描述 JTAG模式选择 JTAG时钟 JTAG数据输入 JTAG数据输出 JTAG模块复位 类型 输入/输出 输入 —— —— —— SW 调试接口 调试功能 串行数据输入/输出 串行时钟 —— 跟踪时为TRACESWO信号 —— PA13 PA14 PA15 PB3 PB4 引脚分配

图20 Flash烧写参数设置

最后选择程序下载按钮所对应的工具配置,在Utilities选项卡,同样选择J-LINK/J-Trace Cortex。这样就可以通过

按钮,将程序直接下载到Flash中。通过

可以将程序下载

到Flash,同时进入仿真调试状态。

图21 设置程序下载菜单对应的工具

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务