新建基于标准固件库MDK5工程模板

1、STM32官方库文件夹介绍


如上图,是ST官方提供的STM32标准固件库的文件包结构;
STM32官方固件库下载地址:
“https://www.st.com/content/st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32-standard-peripheral-libraries/stsw-stm32054.html“

1.1.0、Libraries文件夹:
该文件夹下有CMSISSTM32F10x_StdPeriph_Driver两个目录;其中CMSIS目录下是启动文件STM32F10x_StdPeriph_Driver存放的是STM32固件库源码文件;源文件目录下inc目录存放的是类似于“stm32f10x_xxx.h”格式的头文件src目录下存放的是类似于"stm32f10x_xxx.c"格式的固件库源文件
其他两个不是特别重要的文件夹"Project"与"Utilities"分别存放的是官方提供的固件实例源码官方评估板的一些对应源码;

1.1.1、关键文件介绍
.\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport
该目录下对应着以下两个文件:

这些文件是CMSIS核心文件,提供进入CM3内核的接口,由ARM公司提供,这些都是在编程中无需修改的文件。

.\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
该目录下对应着以下几个文件:

其中system_stm32f10x.c与之对应的system_stm32f10x.h两个文件的功能是设置系统以及总线的时钟,文件中有一个非要重要的函数:SystemInit();这个函数在我们系统启动的时候都会去调用它,用来设置系统的整个时钟系统。
“stm32f10x.h”文件中主要是系统寄存器的定义申明以及包装内存的一些操作。
我们看到在该文件夹下还有另外一个重要的文件夹:startup 启动文件”;

之所以目录下有8个启动文件,是因为对于不同容量的芯片启动方式不一样,这里的容量指的是FLASH的大小;
小容量:FLASH≤32k
中容量:64k≤FLASH≤128k
大容量:256k≤FALSHml
其中startup_stm32f10x_hd.s**适用于大容量,startup_stm32f10x_md.s适用于中容量,startup_stm32f10x_ld.s适用于小容量;

2、新建模板所需准备好的东西

2.1.1、STM32F10x_StdPeriph_Lib_V3.5.0 固件包;注:文章开头有固件包下载地址
2.1.2、MDK5开发环境,当然使用其他版本的MDK-ARM都是无所谓的,由于作者我使用的是MDK-ARM-5;
大家最好是将工程中需要用到标准固件库中一些文件直接一一复制,再粘贴至同一处,方便管理,免得再在新建模板的时候找完这个一下找下一个。
咱们所需要的标准库工程文件基本就在这了,我把文件夹目录地址贴出来,为了简洁一点,就不一个一个截图给大家看了。
2.2.1、inc、src文件夹:STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\

2.2.2、core_cm3.c、core_cm3.h:
STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

2.2.3、startup_stm32f10x_hd.s、stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h:
\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

2.2.4、其他的几个文件
STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

3、手把手教你新建基于F103标准库工程模板

1、首先在随意地方创建一个名为“Template”文件夹;

2、在上个文件夹下再新建一个"USER"文件夹;

3、打开MDK5新建名为“TemPlate”工程项目;
3.1:点击“New uVision Project”;

3.2:新建Template工程文件

3.3:弹出该界面,展开STM32F103选项;

3.4:选择STM32F103XX系列,根据你们自己的芯片型号来选择;

3.5:上面的工作做完后,文件夹下的效果如下:

4、返回到TemPlate文件夹下,新建CORE、OBJ、STM32F10x_FWlib三个文件夹。

5、将前面在STM32提供的官方固件库中复制出来的文件一一粘贴到相应文件夹下,如下:



6、打开刚刚在MDK5中新建的项目工程,右键Target1,点击Manage Project Items,弹出对话框;

7、弹出的对话框中,在Group中新建三个组;

8、将文件夹下相应的文件添加至3个组中;


大家有没有注意到,我在FWLIB组只添加了两个文件,其实这个里面放的是相应的外设源文件,大家用到什么外设就添加什么就好了,但是一定要注意的是stm32f10x_rcc.c是必须得添加的,不然编译就会报错。
都添加好后,点击OK就行了。

9、接下来需要包含文件夹,让编译器可以找到这些我们添加过的文件;

在这里还需要宏定义一下,因为 3.5 版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的
宏定义变量。
不想打字的直接粘贴下面的英文就好了。
“STM32F10X_HD,USE_STDPERIPH_DRIVER"
然后点击OK。

有一些MDK的版本可能编译后会报错,因为这里默认本来是Use default compiler version6,我们要将其改为Use default compiler version5,然后点击OK,然后回到main.c文件下,按照下面第二张图编写一下程序之后编译就大功告成了。


1、新建基于标准固件库MDK5工程模板(STM32F103ZET6)相关推荐

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

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

  2. #STM32标准固件库的硬件SPI(NSS为软件)封装函数库

    #基于STM32标准固件库的硬件SPI(NSS为软件)封装函数库: 最近来回顾之前写过的SPI_Flash,打算重写一次SPI配置文件 spi协议最大的特点大概就是全双工了,因此stm32硬件spi的 ...

  3. STM32F103标准固件库寄存器及常用函数整理

    学习STM32其实就是学习它的寄存器以及函数的使用,能用单片机的资源实现自己想要的功能,从最开始的点亮一个led,到使用按键,串口,ADC/DAC,定时器计时计数,输出PWM,驱动电机,使用IIC,S ...

  4. 基于STM32F103C8T6的超声波模拟雷达设计。【C8T6最小系统板+标准固件库+1.8‘TFT-LCD屏】

    前言: 之前为做毕设一直在网上浏览关于STM32单片机的DIY项目,大多数设计都是关于智能家居方面的应用,通过浏览不同平台的内容发现了一个采用超声波测距并通过屏幕反馈障碍物位置的模拟雷达设计,感觉很有 ...

  5. Keil uVision5中配置stm32标准固件库v3.5

    1.创建文件夹Fwlib_template,4个子文件夹 (1)Doc:文档说明,开发日志 (2)Libaraies:2个子文件, CMSIS子文件: STM32F10x_StdPeriph_Driv ...

  6. 基于Marlin固件库桌面3D打印机软件开发

    0 系统组成 1硬件 原理框图 2  软件开发平台 Arduino 

  7. 新建STM32F427IIH标准库工程

    新建STM32F427IIH标准库工程 实验前准备:最新版本的固件库,开发板,Jlink,keil5 采用最新固件库版本"V1.8.0最新标准固件库"(可上官网下载) 这边介绍从零 ...

  8. stm32f4xx标准外设固件库

    原文网址:http://www.cnblogs.com/King-Gentleman/p/4369381.html STM32F4的相关资料:http://www.stmcu.org/document ...

  9. stm32f4xx标准外设固件库(By King先生)

    原文网址:http://www.cnblogs.com/King-Gentleman/p/4369381.html STM32F4的相关资料:http://www.stmcu.org/document ...

最新文章

  1. java程序设计案例教程 钱银中_《Java程序设计案例教程》【价格 目录 书评 正版】_中国图书网...
  2. 实例分析exec函数
  3. 软考-网络总结-协议
  4. cat 常用的日志分析架构方案_芯片失效分析常用方法及解决方案
  5. linux异地文件同步软件,rsync完成异地文件的同步
  6. 第3章:分布式文件系统 HDFS
  7. SAP Spartacus入口Component - StorefrontComponent
  8. django app中扩展users表
  9. 前端学习(3130):react-hello-react之回调形式的createRef
  10. 怎么在anaconda上安装python_我是如何用Anaconda来管理Python的
  11. 通过Cloudera Manager部署CDH5.15.1的webUI界面详解
  12. python支付程序源码_支付宝推出新活动,Python脚本能让你赚的更多!(附源码)...
  13. 理解R-CNN、SPP-NET、Fast R-CNN、Faster R-CNN、FPN博文整理
  14. python创建子窗口_python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
  15. 小兔子在终端给大家拜年啦
  16. WebService(1) 调用第三方服务
  17. 网络篇 网络设备的基本配置09
  18. 微软和谷歌又要“打”起来了!网友:太好了
  19. 射频中的 S参数 总结
  20. Alexa | Alexa通信扩展

热门文章

  1. python的for语句中i未被定义_python 报错 类名没有被定义
  2. 4个方面,系统总结个性化推荐系统
  3. 线程之间传递信息的几种方法 Android
  4. python---打印函数print延时且不按顺序输出
  5. python日历模块_Python日历模块总结
  6. tp5中渲染页面将时间戳转换为日期时间格式(Y-m-d H:i:s)
  7. 【将金令】1.5金评:洗尽铅华,静待多空拉锯
  8. Sil7172中文资料
  9. 断言(assert)方法
  10. PHP绕过strpos()