STM32固件库介绍和新建基于固件库的 MDK5工程模板

什么是固件库?

STM32 固件库就是函数的集合

为了能让不同的芯片公司生产的 Cortex-M3 芯片能在软件上基本兼容,和芯片生产商共同提出了一套标准 CMSIS 标准(Cortex Microcontroller Software Interface Standard) ,翻译过来是“ARM Cortex™ 微控制器软件接口标准”。

CMSIS 分为 3 个基本功能层:

  1. 核内外设访问层:ARM 公司提供的访问,定义处理器内部寄存器地址以及功能函数。
  2. 中间件访问层:定义访问中间件的通用 API,也是 ARM 公司提供。
  3. 外设访问层:定义硬件寄存器的地址以及外设的访问函数。

CMSIS 层在整个系统中是处于中间层,向下负责与内核和各个外设直接打交道,向上提供实时操作系统用户程序调用的函数接口。如果没有 CMSIS 标准,那么各个芯片公司就会设计自己喜欢的风格的库函数,而 CMSIS 标准就是要强制规定,芯片生产公司设计的库
函数必须按照 CMSIS 这套规范来设计。

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

  1. 建立一个文件夹,并在其下新建USER目录

  2. keil5新建项目在USER下

  3. 删除USER下的objects和Listings

  4. 在根目录下新建CORE,OBJ,以及LIB文件夹

  5. STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下面,
    将目录下面的* src,inc 文件夹 *复制 到我们刚才建立的 STM32F10x_FWLib 文件夹下面。

  6. 目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下面,将文件 core_cm3.c、core_cm3.h 复制到 CORE 下 面 去 。

  7. *STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm *下面,将里面 startup_stm32f10x_hd.s 文件复制到 CORE 下面。

  8. 定位为STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x将里面的三个文件stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的 USER目录之下。

  9. 定位于STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下面的 4 个 文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 复制到 USER 目录下面

  10. 下面我们将这些文件加入我们的工程中去。右键点击 Target1,选择 Manage Components

  1. Project Targets 一栏,我们将 Target 名字修改为 Template,然后在 Groups 一栏删掉一个 Source Group1,建立三个 Groups:USER,CORE,FWLIB。然后点击 OK,可以看到我们的 Target名字以及 Groups 情况。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iNjHaPI5-1663773677099)(file://C:\Users\lym\AppData\Roaming\marktext\images\2022-09-21-18-22-46-image.png?msec=1663773666350)]

  1. 选择选择 Manage Components.然后选择需要添加文件的 Group,这里第一步我们选 择 FWLIB , 然 后 点 击 右 边 的 Add Files, 定 位 到 我 们 刚 才 建 立 的 目 录STM32F10x_FWLib/src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close.可以看到 Files 列表下面包含我们添加的文件。

  2. 将 Groups 定位到 CORE 和 USER 下面,添加需要的文件。这里我们的 CORE 下面需要添加的文件为 core_cm3.c,startup_stm32f10x_hd.s

  3. USER 目录下面需要添加的文件为 main.c,stm32f10x_it.c,system_stm32f10x.c.

  4. 接下来我们要编译工程,在编译之前我们首先要选择编译中间文件编译后存放目录。
    方法是点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…”,然后选
    择目录为我们上面新建的 OBJ 目录。这里大家注意,如果我们不设置 Output 路径,那么默认的编译中间文件存放目录就是 MDK 自动生成的 Objects 目录和 Listings 目录

  5. 对于任何一个工程,我们都需要把工程中引用到的所有头文件的路径都包含到进来。回到工程主菜单,点击魔术棒 ,出来一个菜单,然后点击 c/c++选项.然后点击
    Include Paths 右边的按钮。弹出一个添加 path 的对话框,然后我们将图上面的 3 个目录添加进去。记住,keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path一定要定位到最后一级子目录。然后点击 OK

  6. 将正点原子的SYSTEM文件将.c和.h文件导入项目

本文源文件下载

猜你喜欢

转载自blog.csdn.net/qq_36831734/article/details/126983092