[其他ST产品] STM32固件库介绍和新建基于固件库的 MDK5工程模板

[复制链接]
2527|36
 楼主| 欢乐家园 发表于 2023-3-28 17:21 | 显示全部楼层 |阅读模式
什么是固件库?

STM32 固件库就是函数的集合

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

CMSIS 分为 3 个基本功能层:

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

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

评论

———————————————— 版权声明:本文为CSDN博主「Mr Harsh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_36831734/article/details/126983092  发表于 2023-3-28 17:21
小夏天的大西瓜 发表于 2023-3-28 17:35 | 显示全部楼层
STM32标准外设库之前的版本也称固件函数库或简称固件库
 楼主| 欢乐家园 发表于 2023-3-29 01:15 | 显示全部楼层
新建基于固件库的 MDK5 工程模板

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

keil5新建项目在USER下

839576423207d3922d.png

删除USER下的objects和Listings

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

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

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

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

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

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

下面我们将这些文件加入我们的工程中去。右键点击 Target1,选择 Manage Components
 楼主| 欢乐家园 发表于 2023-3-29 01:16 | 显示全部楼层
67420642320dd03ea4.png

    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)]

    选择选择 Manage Components.然后选择需要添加文件的 Group,这里第一步我们选 择 FWLIB , 然 后 点 击 右 边 的 Add Files, 定 位 到 我 们 刚 才 建 立 的 目 录STM32F10x_FWLib/src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close.可以看到 Files 列表下面包含我们添加的文件。
 楼主| 欢乐家园 发表于 2023-3-29 01:17 | 显示全部楼层
将 Groups 定位到 CORE 和 USER 下面,添加需要的文件。这里我们的 CORE 下面需要添加的文件为 core_cm3.c,startup_stm32f10x_hd.s

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

313556423210c642e3.png
 楼主| 欢乐家园 发表于 2023-3-29 01:17 | 显示全部楼层
接下来我们要编译工程,在编译之前我们首先要选择编译中间文件编译后存放目录。
方法是点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…”,然后选
择目录为我们上面新建的 OBJ 目录。这里大家注意,如果我们不设置 Output 路径,那么默认的编译中间文件存放目录就是 MDK 自动生成的 Objects 目录和 Listings 目录
 楼主| 欢乐家园 发表于 2023-3-29 01:17 | 显示全部楼层
对于任何一个工程,我们都需要把工程中引用到的所有头文件的路径都包含到进来。回到工程主菜单,点击魔术棒 ,出来一个菜单,然后点击 c/c++选项.然后点击
Include Paths 右边的按钮。弹出一个添加 path 的对话框,然后我们将图上面的 3 个目录添加进去。记住,keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path一定要定位到最后一级子目录。然后点击 OK
 楼主| 欢乐家园 发表于 2023-3-29 01:19 | 显示全部楼层
将正点原子的SYSTEM文件将.c和.h文件导入项目 9701564232183f2f72.png
 楼主| 欢乐家园 发表于 2023-3-29 01:20 | 显示全部楼层
本文源代码:https://download.csdn.net/download/qq_36831734/86615348
jiaxw 发表于 2023-3-30 20:41 | 显示全部楼层
怎么能让不同的芯片公司生产的 Cortex-M3 芯片能在软件上基本兼容
zhuhuis 发表于 2023-3-30 20:47 | 显示全部楼层
外设访问层呢
songqian17 发表于 2023-3-30 20:53 | 显示全部楼层
定义硬件寄存器的地址以及外设的访问函数
huanghuac 发表于 2023-3-30 21:05 | 显示全部楼层
中间层,向下负责与内核和各个外设直接打交道,向上提供实时操作系统用户程序调用的函数接口。
shimx 发表于 2023-3-30 21:14 | 显示全部楼层
欢乐家园 发表于 2023-3-29 01:16
Project Targets 一栏,我们将 Target 名字修改为 Template,然后在 Groups 一栏删掉一个 Source Grou ...

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

这是啥意思?
51xlf 发表于 2023-4-2 16:39 | 显示全部楼层
一个完整的嵌入式系统软件开发解决方案
fengm 发表于 2023-4-2 17:30 | 显示全部楼层
提供了完整的硬件驱动框架,可以满足开发者实现各种功能的应用
earlmax 发表于 2023-4-2 17:43 | 显示全部楼层
通过包含头文件和链接库文件,可以调用固件库中提供的函数和API,快速实现对硬件外设的控制和操作。
tabmone 发表于 2023-4-2 17:52 | 显示全部楼层
STM32固件库包含了各种微控制器型号的驱动程序和库文件,可以直接引用到工程中。
everyrobin 发表于 2023-4-2 18:01 | 显示全部楼层
对于每个STM32系列微控制器,STMicroelectronics都会提供相应的固件库
wangdezhi 发表于 2023-4-2 18:34 | 显示全部楼层
在实际开发过程中,还可以根据需要添加其他文件和文件夹,例如外设驱动代码、应用程序逻辑代码等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

114

主题

1067

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部