电子产品世界 » 论坛首页 » 高校社团 » 坤创E-Geek/天科大新电社 » 大白带你重玩STM32系列(四)------STM32的库函数(固件库)


共7条 1/1 1 跳转至

大白带你重玩STM32系列(四)------STM32的库函数(固件库)

助工
2017-04-14 20:58:27    评分

在上一讲中,我们学习了如何使用寄存器法对STM32GPIO口进行操作。在本节往后的三节中,我们继续学习如何通过标准库函数的方式实现对GPIO口的操作。首先,我们先来详细的说明一下,什么叫做STM32的库函数。

一般来说STM32的开发,相对来讲,使用标准库进行开发这一方法目前来看还是广泛被大多数开发者所采用的。虽然现在ST公司也早已推出了HAL库,并配合STM32CubeMX一起用,也非常方便,但是作为初学来说,还是学习标准库更能搞懂STM32,也更容易了解到其中寄存器的相关知识点。自底向上学习,这样才能以不变应万变,胜任STM32系列的各种新的以及不同类型的芯片。

好了,首先来说一下,什么叫做标准库。传说中的库函数,到底是何方神圣,又到底是怎么一回事。

STM32标准外设库也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需非常深入的掌握底层硬件细节,开发者就可以轻松应用每一个外设。因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。

那么我们改如何获取固件库呢?

第一种方法,上官网下载。官网的下载链接请摸我:

http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-libraries/stsw-stm32054.html

不过从官网下载,你还要验证一下邮箱哦~

第二种方法,从各大论坛社区下载。推荐从国内ST社区下载,链接请摸我:

http://www.stmcu.org/document/detail/index/id-213160

注意这个下载链接下有两个压缩包,part1part2都下载到同一个路径下,解压第一个压缩包part1即可。

下载完成并解压后,我们可以看到这样一个文件夹。这个就是ST官网给我们提供的和STM32F10x相关的全部的库函数文件了。下面我们一起来看一下,这个文件夹下,究竟有些什么内容。

由上图可以看出,STM32F10x_StdPeriph_Lib_V3.5.0目录(文件夹)下包含了固件库的全部文件,该目录下的stm32f10x_stdperiph_lib_um.chm文件是固件库的英文说明书。STM32F10x_StdPeriph_Lib_V3.5.0目录下包含了4个子目录,这么庞大的组织结构,想必对于第一次接触的同学们来说,已经是一脸懵逼了。到底这些文件夹里面都是些什么,以及其中的文件都有一些什么作用。让我们一起来对这些文件夹挨个解读:

(1)_htmresc 重要指数零颗星:☆☆☆

这个文件夹打开之后我们可以看到其内部就是两张图片,都是和ST公司logo有关的图片,这和以后我们写代码没有任何关系。因此,这个文件夹,可以完全忽略。

(2)Libraries 重要指数三颗星:★★★

这个文件夹是库文件的家,里面包含了系统文件和大量的头文件、源文件,是必须使用的。因此这里是需要我们重点搞明白的地方。下图是Libraries 文件夹的目录结构。

上图中,CMSISCortex Microcontroller Software Interface Standard的缩写,翻译过来就是“基于Cortex内核的微控制器软件端口标准”,实质上CMSIS子目录下的CM3子目录的CoreSupport子目录中,包含内核的头文件core_cm3.h和源文件core_cm3.c ,以及设备驱动支持文件stm32f10x.hsystem_stm32f10x.hsystem_stm32f10x.c、另外还有STM32F10x\startup目录下的启动代码。

core_cm3.hcore_cm3.c 分别是内核访问层的头文件和源文件。

stm32f10x.hsystem_stm32f10x.hsystem_stm32f10x.c是外设访问层的头文件和源文件。简而言之,就是访问Cortex-M3外设的核心文件,每个外设还有单独的库文件,存放在STM32F10x_StdPeriph_Driver这个子目录下。

stm32f10x.h这个文件包含了STM32F10x全系列所有的外设寄存器的定义(寄存器的基地址和布局)、位定义、中断向量表、存储空间的地址映射等。

system_stm32f10x.hsystem_stm32f10x.c包含用于初始化微控制器的函数SystemInit(),用来配置外部存储器控制器函数System_ExtMemCtl()。在跳转到用户入口main之前,SystemInit()就会被调用,这也是很多朋友们奇怪,为什么自己什么时钟都没有配置,程序却仍然能正常运行的原因。

STM32F10x_StdPeriph_Driver子目录下就是各种外设的.h(头文件)和.c(源文件),该目录下的inc子目录下都是.h头文件,src目录下都是.c源文件。例如,要想使用IO端口,就需要stm32f10x_gpio.hstm32f10x_gpio.c,那么就要在工程中包含这两个文件,而这两个文件是GPIO操作固件库。

(3)Project 重要指数两颗星:★★☆

这个文件夹下是官方写的例子程序,我们可以通过学习这些例程来入门提高,也可以根据这些例程进行修改来快速构建自己的工程。总之,这些是非常丰富的资源,有将近100种例程,这些如果我们能够加以利用,用好了的话,将是一笔不小的财富。

Project\STM32F10x_StdPeriph_Template路径下,还能找到几个关键文件:

stm32f10x_conf.h是固件库配置文件,通过更改包含的外设头文件来选择固件所使用的外设,在新建程序和进行功能变更之前应当首先修改对应的配置。

stm32f10x_it.cstm32f10x_it.h是外设中断函数文件。用户可以在其中相应的位置加入自己的中断程序的代码,对于指向同一个中断向量的多个不同中断请求,用户可以通过判断外设的中断标志位来确定准确的中断源,执行相应的中断服务函数。

(4)Utilities 重要指数一颗星:★☆☆

这个文件夹下则是官方评估板的文件,对于一般的场合,我们对于这个文件夹所采取的态度应该是和(1)中的_htmresc文件夹一样,不理不睬即可。

以上就是固件库文件夹下的全部内容了,对于这些内容楼主还是觉得很有必要去搞清楚的。俗话说:“知己知彼,百战不殆”。把库函数文件夹的结构,以及每个文件夹的内容搞清楚了,以后在使用固件库编程的时候,就知道这么个庞大复杂的文件夹里面,到底都“隐藏”了一些什么秘密。从而会给自己的学习,和编程带来很大的益处。

本节我们就暂时介绍一下STM32的固件库(库函数),下一节带领着大家一起,我们亲自动手,一步一步的讲解,如何新建一个属于自己的固件库工程。并在以后的学习当中,如何使用这个固件库模板。


敬请期待:大白带你重玩STM32系列(五)------新建一个STM32的固件库工程





关键词: STM32     系列     ------STM32     固件    

专家
2017-04-14 22:55:37    评分
2楼
棒棒的,祝老师

菜鸟
2017-04-16 10:03:38    评分
3楼

专家
2017-04-16 10:04:25    评分
4楼
很好的资料,支持一下。

管理员
2017-04-17 02:07:00    评分
5楼
谢谢楼主分享 涨姿势了

专家
2017-04-17 13:51:27    评分
6楼
很细节

菜鸟
2017-04-21 07:47:26    评分
7楼
明白

共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]