打印
[其他ST产品]

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

[复制链接]
1930|36
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
什么是固件库?

STM32 固件库就是函数的集合

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

CMSIS 分为 3 个基本功能层:

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

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

使用特权

评论回复
评论
欢乐家园 2023-3-28 17:21 回复TA
———————————————— 版权声明:本文为CSDN博主「Mr Harsh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_36831734/article/details/126983092 
沙发
小夏天的大西瓜| | 2023-3-28 17:35 | 只看该作者
STM32标准外设库之前的版本也称固件函数库或简称固件库

使用特权

评论回复
板凳
欢乐家园|  楼主 | 2023-3-29 01:15 | 只看该作者
新建基于固件库的 MDK5 工程模板

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

keil5新建项目在USER下



删除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 | 只看该作者


    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 列表下面包含我们添加的文件。

使用特权

评论回复
5
欢乐家园|  楼主 | 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.

使用特权

评论回复
6
欢乐家园|  楼主 | 2023-3-29 01:17 | 只看该作者
接下来我们要编译工程,在编译之前我们首先要选择编译中间文件编译后存放目录。
方法是点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…”,然后选
择目录为我们上面新建的 OBJ 目录。这里大家注意,如果我们不设置 Output 路径,那么默认的编译中间文件存放目录就是 MDK 自动生成的 Objects 目录和 Listings 目录

使用特权

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

使用特权

评论回复
8
欢乐家园|  楼主 | 2023-3-29 01:19 | 只看该作者
将正点原子的SYSTEM文件将.c和.h文件导入项目

使用特权

评论回复
9
欢乐家园|  楼主 | 2023-3-29 01:20 | 只看该作者
本文源代码:https://download.csdn.net/download/qq_36831734/86615348

使用特权

评论回复
10
jiaxw| | 2023-3-30 20:41 | 只看该作者
怎么能让不同的芯片公司生产的 Cortex-M3 芯片能在软件上基本兼容

使用特权

评论回复
11
zhuhuis| | 2023-3-30 20:47 | 只看该作者
外设访问层呢

使用特权

评论回复
12
songqian17| | 2023-3-30 20:53 | 只看该作者
定义硬件寄存器的地址以及外设的访问函数

使用特权

评论回复
13
huanghuac| | 2023-3-30 21:05 | 只看该作者
中间层,向下负责与内核和各个外设直接打交道,向上提供实时操作系统用户程序调用的函数接口。

使用特权

评论回复
14
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)]

这是啥意思?

使用特权

评论回复
15
51xlf| | 2023-4-2 16:39 | 只看该作者
一个完整的嵌入式系统软件开发解决方案

使用特权

评论回复
16
fengm| | 2023-4-2 17:30 | 只看该作者
提供了完整的硬件驱动框架,可以满足开发者实现各种功能的应用

使用特权

评论回复
17
earlmax| | 2023-4-2 17:43 | 只看该作者
通过包含头文件和链接库文件,可以调用固件库中提供的函数和API,快速实现对硬件外设的控制和操作。

使用特权

评论回复
18
tabmone| | 2023-4-2 17:52 | 只看该作者
STM32固件库包含了各种微控制器型号的驱动程序和库文件,可以直接引用到工程中。

使用特权

评论回复
19
everyrobin| | 2023-4-2 18:01 | 只看该作者
对于每个STM32系列微控制器,STMicroelectronics都会提供相应的固件库

使用特权

评论回复
20
wangdezhi| | 2023-4-2 18:34 | 只看该作者
在实际开发过程中,还可以根据需要添加其他文件和文件夹,例如外设驱动代码、应用程序逻辑代码等。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

106

主题

941

帖子

1

粉丝