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. 跟我一起玩Win32开发(19):浏览和打开文件

    在应用程序中,我们很经常要实现的功能,是Open文件或保存文件对话框,让用户来选择一个或N个文件.本文我将介绍两种思路,第一种方法较为复杂,第二种方法较为简单. 方法一:老规矩 这是一种传统方法,使用 ...

  2. Input对象2(貌似是独立标签)

    6.hidden隐藏域的样式表单:Hidden属性可以创建一个隐藏域,数据会被隐藏起来,因此用户是无法操作的.这样说来hidden好像没有什么用,事实上,正是出于安全的考虑,在多步操作数据的同时,用h ...

  3. C. Alyona and mex

    http://codeforces.com/contest/740/problem/C 构造思维题. 第一直觉就是区间长度+1的最小值就是答案. 然而不知道怎么去构造这个序列. 其实就是每个区间,都要 ...

  4. AJPFX总结List的三个子类的特点

    ArrayList:                        底层数据结构是数组,查询快,增删慢.                        线程不安全,效率高.              ...

  5. 【学习笔记】二:在HTML中使用JavaScript

    1.<script>标签 1)考虑到最大限度的浏览器兼容性和约定俗成,type属性使用:text/javascript. 2)标签建议放置到</body>标签前,提高用户体验( ...

  6. 初学者可能不知道的vue技巧

    前言 大家好,这里是@IT·平头哥联盟,我是首席甩锅官——老金,今天给大家分享的,一些日常中神秘而又简单的vue的实用小技巧,以及我在我司项目中实用vue的总结和坑,跟大家一起分享,希望能给其他攻城狮 ...

  7. 客户端配置snmpd

    [root@ localhost]#yum install net-snmp (3)安装后打开默认的/etc/snmp/snmpd.conf文件,更改如下配置: 1) 查找以下代码: # sec.na ...

  8. centos设置系统时间

    系统日期设定成1996年6月10日上午9点date -s 06/22/96date -s 09:00:00

  9. Oracle创建用户及权限设置

    oracle用户创建及权限设置 权限: create session create table unlimited tablespace connect resource dba 例: #sqlplu ...

  10. QTabelwidget 添加复选框

    QString sceneName = QString("%1(%2)").arg(sisList[i].sceneName).arg(sisList[i].sceneNo); Q ...