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. MVC和MTV结构分析

    @font-face { font-family: "Times New Roman"; }@font-face { font-family: "宋体"; }@ ...

  2. UIImageView 使图片圆形的方法

    UIImageView 圆形的两种方法 1.cornerRadius (tableView,collectionView尽量避免使用,影响性能) //想要圆角 cornerRadius必须是 imag ...

  3. oracle错误:1067进程意外终止

    oracle错误:1067进程意外终止我Oracle安装完了之后可以运行的 ,过了一段时间不可以了,就上网找了一下,原来是自己的ip已经改变.我一直使用IP地址的. 将D:\oracle\produc ...

  4. 508 Most Frequent Subtree Sum 出现频率最高的子树和

    详见:https://leetcode.com/problems/most-frequent-subtree-sum/description/ C++: /** * Definition for a ...

  5. 浅析 Spark Shuffle 内存使用

    在使用 Spark 进行计算时,我们经常会碰到作业 (Job) Out Of Memory(OOM) 的情况,而且很大一部分情况是发生在 Shuffle 阶段.那么在 Spark Shuffle 中具 ...

  6. POJ1150he Last Non-zero Digit(组合)

    链接 题意从尾部找第一个非0的数 这样就可以考虑下怎样会形成0  这个都知道 只有因子2和因子5相遇会形成0 那这样可以先把所有的2和5先抽出来,这样就保证了其它的数相乘就不会再出现0了 这样就可以转 ...

  7. MySQL系列:隐式类型转化可能带来的坑

    在开发规范中,我们往往会要求研发避免在where条件中出现隐式类型转换,这么要求大概有以下两方面的原因: 隐式类型转换可能导致索引失效: 隐式类型转换可能产生非预期的结果. 注:这里说的是隐式类型转换 ...

  8. layout转Bitmap

    业务需求详细描述:最近产品说要在分享的商品图中添加一些其他图片和文字,然后拼接为一张图片,再分享到微信朋友圈,于是我就一脸懵逼了,但是没办法还是得做额! 然后整理了一下思路,主要有这么两条路线: 自己 ...

  9. http://bbs.chinaunix.net/thread-1463276-1-1.html

    http://bbs.chinaunix.net/thread-1463276-1-1.html

  10. 从源码中无法看出函数所在的js脚本的解决方法

    通过设置断点调试使js脚本自动出现