MDK5软件入门之——基础工程创建及下载和调试

简介: MDK5软件入门之——基础工程创建及下载和调试


MDK5软件入门


这里主要记录一下MDK5软件的介绍及使用。


MDK5简介


MDK 源自德国的 KEIL 公司,是 RealView MDK 的简称。在全球 MDK 被超过 10 万的嵌入式开发工程师使用。目前最新版本为:MDK5.14,该版本使用 uVision5 IDE 集成开发环境,是目前针对 ARM 处理器,尤其是 Cortex M 内核处理器的最佳开发工具

新建MDK5工程

在完成安装MDK5软件后,打开软件,点击Project->New uVision Project,如图所示:

20190331195636562.png


弹出新建工程界面:

2019033119570633.png

这里选择工程创建的目录位置,编辑工程名,(例如:test)新建文件夹USER,保存在这里。之后会弹出选择器件的对话框,根据STM32型号选择对应的型号就可以了,这里我根据我的STM32F103ZET6型号选择。

特别主要,一定要安装对于的器件pack才会显示这些内容,如果没得选择,先关闭MDK,下载对应的pack安装后再打开创建工程

20190331200031351.png

点击OK后会弹出运行环境选择对话框。20190331200113675.png

这个是MDK5新增的一个功能,在这里我们可以添加自己需要的组件,从而方便构建开发环境,不需要的话直接点击Cancel即可。

工程初步建立如下:

2019033120022126.png

这里就完成新建一个MDK5的工程了。


新建STM32开发环境

通过上面的操作已经新建了一个框架了。但还不够,还需要添加启动代码,以及.c文件等等。

启动代码是一段和硬件相关的汇编代码,必不可少,主要作用如下:


  1. 堆栈的初始化;
  2. 初始化程序计数器(PC);
  3. 设置向量表异常事件的入口地址;
  4. 调用main函数。

这里意法半导体(ST)公司提供了3个启动文件给我们,分别对应不同容量的STM32芯片。我们目前使用的基本都是大容量产品,所以选择startup_stm32f10x_hd.s作为我们的启动文件。

我们找到Target1->Source Group1->双击->设置打开文件类型为Asm Sourcefile->选择startup_stm32f10x_hd.s->点击Add,如图所示:

20190331201049907.png


现在就可以开始编写自己的代码了,但是现在的目录结构还是有点混乱,也就是工程下乱七八糟什么都有。

我们需要进行整理一下。

接下来,我们在 Project 工程目录下面,

  • 新建 3 个文件夹 CORE, OBJ 以及STM32F10x_FWLib。CORE 用来存放核心文件和启动文件,OBJ 是用来存放编译过程文件以及 hex 文件STM32F10x_FWLib 文件夹顾名思义用来存放 ST 官方提供的库函数源码文件。已有的 USER 目录除了用来放工程文件外,还用来存放主函数文件 main.c,以及其他包括 system_stm32f10x.c 等等。

20190331201520920.png


  • 下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。打开官方固件库包,定位到我们之前准备好的固件库包的目录下面,将目录下面的 src,inc 文件夹 copy 到我们刚才建立的 STM32F10x_FWLib 文件夹下面。src 存放的是固件库的.c 文件,inc 存放的是对应的.h 文件。

20190331201552342.png

  • 下面我们要将固件库包里面相关的启动文件复制到我们的工程目录 CORE 之下。打开官方固件库包,将文件 core_cm3.c和 文 件 core_cm3.h 复 制 到 CORE 下 面 去 。

然 后将 startup_stm32f10x_hd.s 文件复制到 CORE 下面。


  • 将三个文件 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的 Project目录之下。然后将下面的 4 个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 复制到 Project 目录下面。


  • 前面 8 个步骤,我们将需要的固件库相关文件复制到了我们的工程目录下面,下面我们将这些文件加入我们的工程中去。右键点击 Target1,选择 Manage Components。


20190331201714782.png

20190331201714782.png

  • 下面我们往 Group 里面添加我们需要的文件。我们按照步骤 10 的方法, 右键点击点击 Led,选择选择 Manage Components.然后选择需要添加文件的 Group,这里第一步我们选 择 FWLIB , 然 后 点 击 右 边 的 Add Files, 定 位 到 我 们 刚 才 建 立 的 目 录

STM32F10x_FWLib/src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close.可以看到 Files 列表下面包含我们添加的文件。这里需要说明一下,对于我们写代码,如果我们只用到了其中的某个外设,我们就可以不用添加没有用到的外设的库文件。这里我们全部添加进来是为了后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢,用户可以自行选择。


  • 用同样的方法,将 Groups 定位到 CORE 和 USER 下面,添加需要的文件。这里我们的 CORE 下面需要添加的文件为 core_cm3.c,startup_stm32f10x_hd.s ( 注意,默认添加的时候文件类型为.c, 也就是添加 startup_stm32f10x_hd.s 启动文件的时候,你需要选择文件类型为 为 All files 才能看得到这个文件),USER 目录下面需要添加的文件为 main.c,stm32f10x_it.c,system_stm32f10x.c.

这样我们需要添加的文件已经添加到我们的工程中了,最后点击 OK,回到工程主界面。


最后效果图如下:


20190331201746957.png

  • 接下来我们要编译工程,在编译之前我们首先要选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…”,然后选择目录为我们上面新建的 OBJ 目录。这里大家注意,如果我们不设置 Output 路径,那么默认的编译中间文件存放目录就是 MDK 自动生成的 Objects 目录和 Listings 目录。

20190331201816867.png

2019033120184192.png

  • 下面我们要告诉 MDK,在哪些路径之下搜索需要的头文件,也就是头文件目录。 这里大家要注意,对于任何一个工程,我们都需要把工程中引用到的所有头文件的路径都包含到进来。回到工程主菜单,点击魔术棒 ,出来一个菜单,然后点击 c/c++选项.然后点击

Include Paths 右边的按钮。弹出一个添加 path 的对话框,然后我们将图上面的 3 个目录添加进去。记住,keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path一定要定位到最后一级子目录。然后点击 OK.

20190331201900571.png

20190331201908550.png


20190331201931660.png

  • 接下来,我们再来编译工程,可以看到又报了很多同样的错误。为什么呢?这是因为 3.5 版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。按照步骤 16,定位到 c/c++界面,然后填写

“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面。这里解释一下,如果你用的是中容量那么 STM32F10X_HD 修改为 STM32F10X_MD,小容量修改为 STM32F10X_LD. 然后点击 OK。

20190331201943519.png

  1. 这样一个工程模版建立完毕。下面还需要配置,让编译之后能够生成 hex 文件。同样点击魔术棒,进入配置菜单,选择 Output。然后勾上下三个选项。 其中 Create HEX file 是编译生成 hex 文件,Browser Information 是可以查看变量和函数定义。

建好工程模板,以后再写程序便可直接复制粘贴使用。


相关文章
|
iOS开发
完整版在xcode打测试专用ipa包流程​
完整版在xcode打测试专用ipa包流程​
|
4月前
|
数据可视化 API 开发工具
影创SDK☀️三、工程默认配置,及基础测试建议
影创SDK☀️三、工程默认配置,及基础测试建议
|
Ubuntu 编译器 网络安全
RK3568开发笔记(七):在宿主机ubuntu上搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试
在之前的博文中已经搭建好了一个比较完善的ubuntu宿主机,都很完善了但是发现没有Qt交叉编译开发环境,所以还需要搭建一套Qt交叉编译开发环境。
|
iOS开发
完整版在xcode打测试专用ipa包流程
前言:有时候,想要把自己的程序运行在别人的iphone手机上,但又不能通过本地真机调试的方法安装,这个时候我们就要打一个测试专用的ipa包给远方的测试小伙伴们测试。
西门子S7-200 SMART项目的编译、如何下载、运行调试、上传项目
上篇文章中我们学习了西门子S7-200 SMART如何切换编程编辑器、输入LAD程序以及如何编辑程序,本篇我们来介绍编程软件STEP7-Micro/WIN SMART中项目的编译、下载、运行调试和上传。
西门子S7-200 SMART项目的编译、如何下载、运行调试、上传项目
Keil uVision5软件的操作与编写基础(入门)
一、如何新建一个空白文档 1.打开Keil uVision5,将会出现工作界面。如图所示: 2.点击【project】选项,再去点击【New uVision project...】选项。如图所示: 打开之后,会弹出一个界面。这时我们点击【新建文件夹】,我们先将新建的文件夹重命名为001. 打开001这个文件夹,并且将文件名命名为002。如图所示: 此时会弹出一个新界面Select Device for Target 'Target 1',这时候我们选择下图中的Atmel,然后再去找到AT89C51。 3.点击工作界面左上角的白色小纸(New),如图所示: 4. 然后保存这个文档,点击左上角的
1331 0
Keil uVision5软件的操作与编写基础(入门)
|
程序员 Android开发 开发者
Android开发:往项目工程里面新引入工具包的步骤
在Android开发过程中,有些时候会根据实际需要,要往项目里面引入工具包,作为初级开发者或者刚开始入门的Android开发者来说会不太熟练怎么引入,所以往项目工程里面新引入工具包也是必备技能。那么本篇博文就来分享一下给项目工程里面引入工具包的步骤,只分享给有需要的人。
195 0
Android开发:往项目工程里面新引入工具包的步骤
vc6工程打开辅助工具(让你的工程可以多开)
vc6工程打开辅助工具(让你的工程可以多开)
157 0
|
编解码 开发工具
Hi3516开发笔记(九):在QtCreator开发环境中引入海思sdk的bsp包,运行显示Qt界面
Hi3516开发笔记(九):在QtCreator开发环境中引入海思sdk的bsp包,运行显示Qt界面
Hi3516开发笔记(九):在QtCreator开发环境中引入海思sdk的bsp包,运行显示Qt界面
|
芯片 计算机视觉 内存技术
stm32开发笔记(一):库函数V3.5版本环境搭建以及工程模版配置
stm32开发笔记(一):库函数V3.5版本环境搭建以及工程模版配置
stm32开发笔记(一):库函数V3.5版本环境搭建以及工程模版配置