文章目录

  • 一、MDK简介
  • 二、建立STM32工程模板

一、MDK简介

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

二、建立STM32工程模板

步骤如下:

  1. 在建立工程之前,建议大家在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里我们建立一个文件夹为STM32。

  2. 点击 MDK 的菜单:Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹STM32之下,在这个目录下面建立子文件夹 Project (将代码工程文件都放在 “Project”目录下面,或者用什么单词都可以,看个人喜好了),然后定位到 Project 目录下面,我们的工程文件就都保存到 Project 文件夹下面。工程命名为 Led (这里的名字任凭喜好,大多数喜欢命名为Tempate),点击保存。
    依次按照下图顺序完成。


3)接下来会出现一个选择 CPU 的界面,就是选择我们的芯片型号。如图 3.3.3 所示,因为 STM32F103 所使用的 STM32 型号为 STM32F103ZET6,所以在这里我们选择:
STMicroelectronics - STM32F1 - Series - STM32F103 - STM32F103ZET6,最后点击OK即可。

当然上图是针对144引脚,如果是64引脚的芯片之前步骤不变,最后一步换为STM32F103RC即可。

特别注意: 一定要安装对应的器件 pack 才会显示这些内容哦!!

4)点击 OK,MDK 会弹出 Manage Run-Time Environment 对话框:

这是 MDK5 新增的一个功能,在这个界面,我们可以添加自己需要的组件,从而方便构建开发环境,不过这里不做介绍。所以我们直接点击 Cancel 即可。随后出现下图界面:

到这里,我们还只是建了一个框架,还需要添加启动代码,以及.c 文件等。此时可以看到 Project 文件夹下有两个文件夹和两个文件:

这里我们说明一下, Led.uvprojx 是工程文件,非常关键,不能轻易删除。Listings 和 Objects文件夹是 MDK 自动生成的文件夹,用于存放编译过程产生的中间文件。这里,我们把两个文件夹删除,我们会在下一步骤中新建一个 OBJ 文件夹,用来存放编译中间文件。当然,我们不删除这两个文件夹也是没有关系的,只是我们不用它而已。

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

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

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

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

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

也可直接点击下图红色方框中的图标

10) Project Targets一栏,我们将Target名字修改为 Led,然后在Groups一栏删掉一个Source Group1,建立三个 Groups:USER,CORE,FWLIB。然后点击 OK,可以看到我们的 Target
名字以及 Groups 情况。


11)下面我们往 Group 里面添加我们需要的文件。我们按照步骤 10 的方法, 右键点击点击 Led,选择选择 Manage Components.然后选择需要添加文件的 Group,这里第一步我们选 择 FWLIB , 然 后 点 击 右 边 的 Add Files, 定 位 到 我 们 刚 才 建 立 的 目 录
STM32F10x_FWLib/src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close.可以看到 Files 列表下面包含我们添加的文件。这里需要说明一下,对于我们写代码,如果我们只用到了其中的某个外设,我们就可以不用添加没有用到的外设的库文件。这里我们全部添加进来是为了后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢,用户可以自行选择。

12)用同样的方法,将 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,回到工程主界面。


最后效果图如下:

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


14) 下面我们点击编译按钮,编译工程,可以看到很多报错,因为找不到头文件。

15) 下面我们要告诉 MDK,在哪些路径之下搜索需要的头文件,也就是头文件目录。 这里大家要注意,对于任何一个工程,我们都需要把工程中引用到的所有头文件的路径都包含到进来。回到工程主菜单,点击魔术棒 ,出来一个菜单,然后点击 c/c++选项.然后点击
Include Paths 右边的按钮。弹出一个添加 path 的对话框,然后我们将图上面的 3 个目录添加进去。记住,keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path一定要定位到最后一级子目录。然后点击 OK.


16) 接下来,我们再来编译工程,可以看到又报了很多同样的错误。为什么呢?这是因为 3.5 版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。按照步骤 16,定位到 c/c++界面,然后填写
“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面。这里解释一下,如果你用的是中容量那么 STM32F10X_HD 修改为 STM32F10X_MD,小容量修改为 STM32F10X_LD. 然后点击 OK。

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

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

MDK5软件入门之新建工程项目模板相关推荐

  1. 韦东山 IMX6ULL和正点原子_「正点原子NANO STM32开发板资料连载」第三章 MDK5 软件入门1...

    1)实验平台:ALIENTEK NANO STM32F411 V1开发板 2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第三章 M ...

  2. MDK5(Keil5)新建一个新空白工程模板

    MDK5(Keil5)新建一个新空白工程模板 写在前面 一.MDK5器件支持包的安装 二.MDK新建工程模板 0.先准备你所要开发的芯片的固件包 1.复制所需文件到工程包中 2.把工程文件引入MDK5 ...

  3. PR软件入门教程 Adobe Premiere Pro 快速入门指南

    原文(包含图片)链接:https://www.prjianji.com/1.html 了解如何开始使用面向电影制作人.电视节目制作人.新闻记者.学生和视频制作人员的非线性编辑软件 Premiere P ...

  4. grunt从入门到自定义项目模板

    文章还可在我的github上找到,排版更友好一点:grunt从入门到自定义项目模板 一.Grunt入门介绍 1. Grunt是神马 基于任务的命令行构建工具(针对JavaScript项目) 链接:ht ...

  5. 【Niagara 01】Tridium N4使用——入门及新建站点

    Tridium N4使用 第一节 入门及新建station 新建Station 站点的导入及管理 站点的访问 第一节 入门及新建station 安装好软件之后,根据提示进行申请License(Lice ...

  6. VScode软件入门:用户自定义代码块+常用快捷键+常用扩展插件

    目录 VScode软件入门 VScode用户自定义代码块 用户自定义代码块 VScode快捷键 html文件快速创建html结构 谷歌快捷键 vscode扩展插件 Auto Close Tag: Au ...

  7. 2021爱智先行者—软件入门及远程控制开关灯

    [本文正在参与"2021爱智先行者-征文大赛"活动] https://bbs.csdn.net/topics/602601454 上一篇介绍硬件的最后说了,嵌入式应用中的体验好坏最 ...

  8. 标签制作软件中如何导出标签模板为PDF文件?

    最近小编遇到有些客户问在标签制作软件中设计好的标签模板,能不能导出PDF文件保存,小编的回答是当然可以,而且操作也是非常简单的,接下来小编给大家演示下是如何操作的. 首先在标签制作软件中新建一个标签, ...

  9. STM32CubeMX实战教程(一)——软件入门

    软件入门 前言 新建工程 界面简介 MCU 外设配置 时钟树 工程设置 工具 生成代码 代码分析 main.c gpio.c stm32f4xx_it.c 程序下载 现象 结语 前言 STM32Cub ...

  10. (PC+WAP)网络APP软件下载类pbootcms网站模板 APP应用软件官网网站源码下载

    商品介绍 (PC+WAP)网络APP软件下载类pbootcms网站模板 APP应用软件官网网站源码下载PbootCMS内核开发的网站模板,该模板适用于 APP网站.APP软件官网 等企业,当然其他行 ...

最新文章

  1. PyTorch机器学习自动化:自动框架搜索、超参优化
  2. 如何获取html页面上的按钮列表,如何从一个html页面获取单选按钮的值到另一个?...
  3. 聚焦点showModalDialog的一些方法
  4. UVA Mapping the Swaps
  5. Angular list列表绑定的一个例子
  6. 中国工程院院士和科学院院士有什么区别,谁贡献很大却没有入院士?
  7. 克服跨洋网络延迟,使用Docker Hub Mirror加速Docker官方镜像下载
  8. 极简代码(三)—— 向量加法
  9. python写csv文件按升序排列_用python给csv里的数据排序的具体代码
  10. 其实我的直觉告诉了我的未来
  11. Gatech OMSCS的申请和学习之奥妙
  12. 文件路径的正斜杠(/)与反斜杠(\)
  13. 1688接口:item_search - 按关键字搜索商品
  14. Microsoft Visual C++ Build Tools下载/解决Visual C++ 14.0 is required问题
  15. 测试人必备的工具(常用的测试平台)
  16. MATLAB中subs函数
  17. 闲鱼双11端侧实践总结
  18. 一个用于网络摄像机的开源软件 --- mjpg-streamer
  19. Android MediaPlayer中的RTSP(一):RTSP简介
  20. Hi3516EV200使用UART1笔记

热门文章

  1. 听说你是程序员,请问你知道龙书、虎书、鲸书、魔法书、犀牛书...指的是哪些书么?...
  2. 硬笔行书字帖3500常用字_2018年【成年人实用硬笔行书】一对一直播培训简介
  3. java 连接 timesten_极简Java连接TimesTen程序
  4. R语言分布的卡方拟合优度检验
  5. 迈信ep100交流伺服 含原理图、PCB图、C源代码等生产资 料。
  6. python寻峰,寻找峰值
  7. 电力系统微型计算机继电保护2018,2018年4月高等教育自学考试电力系统微型计算机继电保护试题及答案.docx...
  8. 居家短期任务赚钱好不好做容易学习吗?
  9. 游戏中的数学:向量数学(vector math)
  10. 火狐浏览器不弹出窗口_Firefox选项卡的Vista样式弹出窗口预览