STM32开发环境--使用MDK建立一个工程

该工程模版是基于库函数基础制作而成,其中有借鉴相关资料。虽然工程模版一旦建立,以后任何项目只需套用即可,但考虑到长时间不使用,在将来某天可能会突然用到,再查询资料搭建比较费时间和精力。故在此做一个简单的教程,在方便自己以后查阅的同时,也希望可以帮助到别人。另水平有限,如有错误,欢迎指正!

声明:此文章为本人笔记,如若按照本教程制作出工程模版,在具体工程中造成任何损失,本人概不负责。

1、 工程使用相关资料说明:
a) 软件工具:MDK 5

b) STM官方库版本: STM32F10x_StdPeriph_Lib_V3.5.0

​​下载链接:

c) 借鉴正点原子的SYSTEM文件夹,包含功能有:延时函数、位带操作、串口  打印代码的库函数文件
2、 先在电脑任意位置创建一个工程文件夹。架构如下图所示:

说明:

ProjectNameExample:此为整个工程项目命名,可为任意文字;

V1:版本号,方便后期项目升级,可直接将V1文件夹复制成为V2.0等,命名可为任意文字;(可以不要)

CAREM3:此文件夹用于存放care—M3内核文件和启动文件之用。命名建议为字母、数字、下划线;汉字是否可以,未经测试;

HARDWARE:此文件夹中存放自创相关库函数使用,具体使用后面会有介绍;命名建议为字母、数字、下划线;

OBJ:此文件夹中是存放工程编译的中间文件以及最终生成的.hex文件,工程中需选择存放于此,后面会有介绍。命名建议为字母、数字、下划线;

STM32F10x_FWLib:此文件夹是存放部分STM官方库文件;命名建议为字母、数字、下划线;

SYSTEM:上文已有介绍。(可以不要)

USER:存放格式为.uvprojx的工程文件以及main.c文件和重要STM官方库文件;

3、 打开安装好的MDK软件,选择Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹USER。选择工程名为ProjectName(命名可以任意起)。如下图所示:

4、 在点击“保存”后会弹出一个画面(如下图),此时需选择MCU型号(我这里选择的是STM32F103C8T6)

5、 在点击“OK”后会弹出一个画面,如下图,直接点击取消即可。此画面为引导配置,个人觉得不好用,所以直接取消。

6、 然后再打开刚刚创建的工程文件夹,会发现USER目录下包含以下4个文件。

接下来就很重要了!需要将STM官方库STM32F10x_StdPeriph_Lib_V3.5.0文件夹中相关*.c\*.h等源码拷贝到工程文件下,具体操作如下:

1. CAREM3:中包含有3个文件;在STM官方库STM32F10x_StdPeriph_Lib_V3.5.0文件夹的路径:

1和2两个文件位置:

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

​​3文件的位置:

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

​注:文件3为启动文件,需要根据不同容量的MCU去选择:

​startup_stm32f10x_ld.s:小容量,一般为16K~64K的MCU使用。

startup_stm32f10x_md.s:中容量,一般为64K~128K的MCU使用。

startup_stm32f10x_Hd.s:大容量,一般为256K~512K的MCU使用。

2. HARDWARE:此文件夹中存放自创相关库函数使用,工程模版中可为空。本人在该文件夹下放了两个自己创的函数模块beep和led两个文件夹,分别封装的是蜂鸣器和led灯的端口配置情况的函数。建议大家每一个功能的.c和.h文件单独配置一个文件夹,方便后期查看和使用。

3. STM32F10x_FWLib:此文件夹是存放部分STM官方库文件,直接将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver包含的两个文件夹全部复制过来。其中inc中包含的是函数库中的.h文件,src中包含的是函数库中的.c文件。
4. USER:除了存放格式为.uvprojx的工程文件外,还需存放3个.c文件和.h文件。拷贝地址:

STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

注:拷贝完毕后,需要将main.c打开,将里面已有的源码全部清除。然后将main.c保存。

7、 接下来就需要在MDK软件进行相关配置了。

打开刚刚的USER目录下的,然后鼠标在工程中右键选择会弹出一下界面在弹出的界面需要进行相关文件的添加。具体操作如图所示。

​注:在为CAREM3添加文件时有点特殊,因为其他文件夹都是添加.c文件,而这个里面还要添加一个.s的启动文件。具体操作如下图所示:

完成以上操作后,点击魔术棒弹出如下画面,点击按照图片进行配置。

然后在切换至界面。然后按照下图step 1~4进行配置。其中要特别注意step 2 和step 4 。所有设置完成一定要点击“ok”

8、 在main函数中添加如下代码,点击编译,若没有错误,工程模版即建立完成。若有错误请按照上述步骤查找问题原因,修改完成后重新编译之前需要将“V1”中“OBJ”中所有编译产生的中间文件全部删除掉后重新编译。

9、 完成。

STM32开发环境--使用MDK建立一个工程的更多相关文章

  1. ubuntu linux下建立stm32开发环境: 程序烧录 openocd+openjtag

    原文出处: http://blog.csdn.net/embbnux/article/details/17619621 之前建立stm32开发环境,程序也已经编译好生成main.bin,接下来就是要把 ...

  2. Linux下STM32开发环境的搭建

    目录 一.概述 1.目的 2.开发环境描述 3.Eclipse构建的STM32集成开发环境结构 4.GDB / GDB Server 调试模型 二.搭建步骤 三.详细的搭建过程 1.安装eclipse ...

  3. ubuntu下安装stm32开发环境

    在windowns下开发stm32刚开始学最烦的就是创建工程模板,都不知道为什么要那样设置,而且步骤繁多.现在我告诉大家一个好消息,在linux下配置stm32开发环境包括创建工程,使用JLink仿真 ...

  4. windows下STM32开发环境的搭建

    一.概述 1.说明 笔者已经写了一篇Linux下STM32开发环境的搭建 ,这两篇文章的最区别在于开发环境所处的系统平台不一样,而其实这个区别对于开发环境的搭建其实影响不大,制作局部上的操作上发生了改 ...

  5. VS Code 搭建stm32开发环境

    MCU免费开发环境 一般芯片厂家会提供各种开发IDE方案,通常其中就包括其自家的集成IDE,如: 意法半导体 STM32CubeIDE NXP Codewarrior TI CCS 另外也可以用ecl ...

  6. 搭建Spring开发环境并编写第一个Spring小程序

    搭建Spring开发环境并编写第一个Spring小程序 2015-05-27      0个评论    来源:茕夜   收藏    我要投稿 一.前面,我写了一篇Spring框架的基础知识文章,里面没 ...

  7. 嵌入式STM32开发环境之Keil5的安装(附资源)--

    全文copy,原文见https://blog.csdn.net/weixin_42602730/article/details/81007685 --------------------------- ...

  8. VC6下OpenGL 开发环境的构建外加一个简单的二维网络棋盘绘制示例

    一.安装GLUT 工具包 GLUT 不是OpenGL 所必须的,但它会给我们的学习带来一定的方便,推荐安装. Windows 环境下的GLUT 本地下载地址:glut-install.zip(大小约为 ...

  9. Struts2开发环境搭建,及一个简单登录功能实例

    首先是搭建Struts2环境. 第一步 下载Struts2去Struts官网 http://struts.apache.org/ 下载Struts2组件.截至目前,struts2最新版本为2.3.1. ...

随机推荐

  1. hbase表结构 + hbase集群架构及表存储机制

    本博文的主要内容有    .hbase读取数据过程 .HBase表结构 .附带PPT http://hbase.apache.org/ 读写的时候,就需要用hbase了,换句话说,就是读写的时候.需要 ...

  2. hdu1325 Is It A Tree? 基础并查集

    #include <stdio.h> #include <string.h> ], g[]; int find(int x) //并查集的查找,找到共同的父亲 { if (f[ ...

  3. C++类 单冒号

    1.继承 class Base { }; class Derived : public Base { }; 示列: class Base   { public: int a=10;  }; class ...

  4. Python文件将日志文件中每天的日志拿出来

    file_log.txt文件内容如下: with open('file_log.txt', 'r', encoding='utf-8') as f: for i in f: s = i.split() ...

  5. YII2修改backend模块报错An Error occurred while handling another error: exception 'yii\base\InvalidRouteException' with message 'Unable to resolve the request "site/error".' in E:\project\demo\vendor\yiisoft

    报错内容: 原因:没有修改common/config/bootstrap.php里的别名 修改后:

  6. json字符串和字典类型的相互转换

    在开发过程中,有时候需要将json字符串转为字典类型,反之亦然,通常采用.Net的开源类库Newtonsoft.Json进行序列化,这里我也是采用这个,不过我更喜欢写扩展方法方便在项目的调用. 首先新 ...

  7. iframe及其引出的页面跳转问题

    前提:在前一段的工作中碰到了一些页面跳转,子页面跳到父页面上的等等问题,当时页面总是跳不对,或者跳错,要不就是不需要重新打开窗口,却又重新打开一个了,特此搜寻网上各大博客论坛,加上项目经验整理一篇文章 ...

  8. IOS存储目录documents你在哪里啊

    iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory ...

  9. 46 Simple Python Exercises-Higher order functions and list comprehensions

    26. Using the higher order function reduce(), write a function max_in_list() that takes a list of nu ...

  10. Hadoop分布式集群安装

        环境准备     操作系统使用ubuntu-16.04.2 64位 JDK使用jdk1.8 Hadoop使用Hadoop 2.8版本     镜像下载  操作系统     操作系统使用ubun ...