这里根据STM32不完全手册记录建立库函数版本的基于固件库的MDK5工程模板。

1、我们每一次新建工程都会新建一个文件夹存放所有文件。

2、点击MDK的菜单:Project—>New Uvision Project,新建工程文件,然后将目录定位在刚刚新建的文件夹之下,然后新建一个子文件夹重命名为USER(存放代码工程等文件),当然也不一定,比如很多人也喜欢新建为project,这些都是因人而异了。

接下来就是选择CPU界面,选择我们使用的芯片型号。

这里我使用的是STM32F103ZET6,所以我就依次选择STMicroelectronics—>STM32F1 Series—>STM32F103—>STM32F103ZE。

特别注意:一定要安装对应的器件pack才会显示这些内容,如果没得选择,请先安装对应的pack。

3、点击ok,MDK会弹出Manage Run-Time Environment对话框。

在这里我们可以添加自己需要的组件,从而更加方便的构建开发环境。

我们直接点Cancel,进入如下界面。

4、前3步我们只是建立一个框架,还需要添加启动代码以及c文件。

此时工程文件夹下面就是这些文件,xiaomo.uvprojx是工程文件,不能删除。这里的其他两个文件夹,Listings和Objects是MDK自动生成的文件夹,用于存放编译过程中产生的中间文件。我们可以把这两个文件夹删除,建立一个新文件夹重命名为OBJ,用来存放编译中间文件。

然后我们继续在工程目录下面新建三文件夹 COREOBJSTM32F10x_FWLib

  • CORE用于存放核心文件和启动文件
  • OBJ用于存放编译过程文件以及hex文件
  • STM32F10x_FWLib用于存放ST官方提供的库函数源码文件
  • USER用于存放工程文件和主函数文件main.c,以及其他包括system_stm32f10x.c等

5、下面我们将官方提供的源码文件复制到我们的工程目录文件夹下面。

在固件库中,打开STM32F10x_StdPeriph_Lib_V3.5.0》Libraries》STM32F10x_StdPeriph_Driver

然后我们将inc和src两个文件夹复制到我们刚刚建立的STM32F10x_FWLib文件夹下面

src文件夹存放的是固件库中的.c文件,而inc文件夹存放的是对应的.h文件。

6、将官方的固件库中相关的启动文件复制到我们的工程目录CORE下。

打开路劲STM32F10x_StdPeriph_Lib_V3.5.0》Libraries》CMSIS》CM3》DeviceSupport》ST》STM32F10x》startup》arm,这个文件夹里面都是启动文件,然后我们根据使用的芯片选择合适的启动文件。


具体选择如下:

  • 小容量:FLASH≤32K                           startup_stm32f10x_ld.s
  • 中容量:64K≤FLASH≤128K                 startup_stm32f10x_md.s
  • 大容量:256K≤FLASH                         startup_stm32f10x_hd.s

我使用的是STM32F103ZET6是大容量芯片,所以选用startup_stm32f10x_hd.s这个启动文件。

将这个文件复制到新建工程目录中的CORE文件夹中。

然后打开路径STM32F10x_StdPeriph_Lib_V3.5.0》Libraries》CMSIS》CM3》CoreSupport

也将该目录下得两个文件core_cm3.ccore_cm3.h复制到CORE文件夹中。

此时CORE文件夹下有如下三个文件。

7、打开路径STM32F10x_StdPeriph_Lib_V3.5.0》Libraries》CMSIS》CM3》DeviceSupport》ST》STM32F10x,将如下三个文件复制到工程目录下的USER中

再打开路径STM32F10x_StdPeriph_Lib_V3.5.0》Project》STM32F10x_StdPeriph_Template,将该目录下的四个文件main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h复制到USER目录中。

此时USER目录下有以下文件

8、到现在,我们已经将固件库中的相关文件复制到了我们的工程目录中了,然后我们需要将这些文件加入到我们的工程中。

在MDK5中,右击Target1,选择Manage Project Items。

然后会弹出如下界面,在Project Targets一栏我们可以自定义Target名字,双击即可修改名字。比如我给修改为xiaomo。

然后在Groups一栏,删掉Source Group1或者直接修改名字。然后新建三个Groups:USER、CORE、FWLIB,点击OK。

9、然后我们向Group中添加我们需要的文件。

首先选中Group然后点击右下角的Add Files,将工程目录下的USER文件夹中的三个c文件添加到Group中,

然后选中CORE再点击Add Files,然后选择CORE文件夹下得core_cm3.c和startup_stm32f10x_hd.s(注意:这里默认是选择c文件,所以我们需要在文件类型选择All files,然后才能选中.s文件)

再选中FWLIB,然后将STM32F10x_FWLib/src文件夹下的所有c文件添加到这个Group中。

添加完成之后就是如下图所示

点击OK保存。

在Project中展开就是这样

10、打开Options,选择Output,点击Select Folder for Objects,选择OBJ目录,将编译中间文件全部放在OBJ文件夹中,勾选Create HEX File,点击OK保存。

如果不设置Output路径,默认保存在自动生成的Objects和Listings目录中。

11、包含头文件路径。打开Options for Target,选择C/C++,点击Include Paths右边的按钮,弹出添加path对话框。

然后将工程中所有的头文件目录添加进去(注意:必须添加到最后一级子目录)

12、配置全局宏定义变量

打开Options for Target,选择C/C++,在Define一栏中输出

STM32F10x_HD,USE_STDPERIPH_DRIVER

在这里,如果使用的是中容量的芯片,就输入

STM32F10x_MD,USE_STDPERIPH_DRIVER

小容量就是

STM32F10x_LD,USE_STDPERIPH_DRIVER

输入完成点击OK保存。

然后编译, 0 Error(s), 0 Warning(s).

工程建立成功。

STM32F1xx固件库参见:https://download.csdn.net/download/xiaomo_haa/10939364

stm32(库函数)——新建基于固件库的MDK5工程模板相关推荐

  1. 嵌入式 新建基于固件库的MDK5工程模板

    1. 在目录下建立一个名为Template的文件夹 2. 打开软件,new一个新的project 3. 在刚才建立的Template文件夹下建立一个USER文件夹(放代码工程文件),然后保存 4. 然 ...

  2. 【STM32】新建基于STM32F40x 固件库的MDK5 工程

    00. 目录 文章目录 00. 目录 01. 前提条件 02. 创建工程步骤 03. 系统时钟配置 04. 添加其他功能函数 05. 附录 06. 声明 01. 前提条件 1.1 官方标准固件库 文件 ...

  3. MDK5新建工程详细教程-基于固件库

    大家好,因为自身对STM32接触的较多,今天向大家介绍一下如何在MDK5上新建工程. 给小伙伴们推荐几个网址,对学习STM32很有帮助. 正点原子官方论坛:STM32中文论坛:MDK官方:正点原子B站 ...

  4. 总结基于寄存器与基于固件库stm32编程的差异

    基于寄存器与基于固件库stm32编程方式有什么差异 总的来说是专业层面或者说是应用层面的区别 总的来说是专业层面或者说是应用层面的区别 从应用角度讲,寄存器相对来说是属于更底层的,类似于驱动层,而固件 ...

  5. STM32F4 HAL库开发 -- 新建基于 HAL 库的工程模板

    一.STM32CubeF4 固件包下载 下载:STM32CubeF4 MCU Firmware Package 二.新建基于 HAL 库的工程模板 1.新建文件夹 建立一个文件夹为 Template. ...

  6. STM32的2.02固件库提供的启动文件详解 stm32f10x_vector.s

    当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择.如此一来main函数似乎成为了理所当然的起点--因为C程序往往从main函数开始执行.但一个经常会被忽略的问题是:微控制器(单片 ...

  7. STM32基于固件库学习笔记(4)(通用定时器)TIM3定时1S中断

    STM32F103ZE系列定时器资源 有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器. 通用定时器:是一个通过可 ...

  8. STM32基于固件库学习笔记(11)RTC实时时钟

    实时时钟(RTC) 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx.STM32F102xx和STM32F103xx微控制器. 中容量产品是指闪存存储器容量在64K至128 ...

  9. STM32_基础入门_新建工程文件—基于固件库

    持续关注阿杰在线更新保姆式笔记~~坚持日更 1) 在建立工程之前,建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工 程都可以放在这个文件夹下面,这里我们建立一个文件夹为 Template. ...

最新文章

  1. 如何洞察行业中的应用场景?(上篇)
  2. 【项目】springboot中使用kaptcha生成验证码,登录时密码加盐处理
  3. 用MS SQL Reporting Services生成报表
  4. 如何在jieba分词中加自定义词典_Pyspark Word2Vec + jieba 训练词向量流程
  5. lpv4的地址格式由多少个字节组成_我们为什么有这么多字符编码格式?
  6. 信息学奥赛一本通(1210:因子分解)
  7. python while循环if_初入python 用户输入,if,(while 循环)
  8. 新功能:阿里云负载均衡SLB支持HTTP/HTTPS超时时间自定义功能
  9. NetBeans 时事通讯(刊号 # 80 - Nov 15, 2009)
  10. 项目清理和删除svn信息(转)
  11. Maven的pom.xml文件详解
  12. MATLAB BP神经网络的设计与优化
  13. 中国省市区乡县名称代码对照表
  14. C++通信录管理系统
  15. pycharm定时运行python脚本_Python脚本定期执行_执行python脚本_如何执行python脚本
  16. 微信小程序——读取显示用户头像昵称
  17. TB6612FNG直流电机驱动
  18. 小米手机超长续航优化的设置
  19. 自由职业一时爽,一直自由一直爽
  20. 图片链接打不开检测工具-免费链接失败检测软件

热门文章

  1. fcu,燃料电池控制器,质子交换膜燃料电池系统模型(PEMFC
  2. 微博营销我们应该知道些什么?
  3. 为什么说小度智能屏是下一代操作系统?
  4. 搜索法求解火柴棍等式问题 基于python
  5. Qt高仿Excel表格组件-支持冻结列、冻结行、内容自适应和合并单元格
  6. TRE(timed-release encryption)时释性加密
  7. echarts初始化显示到市级地图
  8. vue3 watch onTrack onRrigger
  9. knockout的options绑定
  10. CoreGraphics 画图,(转燕羽天空)