STM32固件库详解

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM32固件库详解

最近考试较多,教材编写暂停了一下,之前写了很多,只是每一章都感觉不是特别完整,

最近把其中的部分内容贴出来一下,欢迎指正。本文内容基于我对固件库的理解,按照便于理解的顺序进行整理介绍,部分参考了固件库的说明,但是也基本上重新表述并按照我理解的顺序进行重新编写。我的目的很简单,很多人写教程只是告诉你怎么做,不会告诉你为什么这么做,我就尽量吧前因后果都说清楚,这是我的出发点,水平所限,难免有很大的局限性,具体不足欢迎指正。

1.1基于标准外设库的软件开发

1.1.1 STM32标准外设库概述

STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设

的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,

无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。因此,使用固态函数库可

以大大减少用户的程序编写时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API (applicati on programmi ng

in terface应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。

ST公司2007年10月发布了V1.0版本的固件库,MDK ARM3.22之前的版本均支持该库。2008 年6月发布了V2.0版的固件库,从2008年9月推出的MDK ARM3.23版本至今均使用V2.0 版本的固件库。V3.0以后的版本相对之前的版本改动较大,本书使用目前较新的V3.4版本。

1.1.2使用标准外设库开发的优势

简单的说,使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解底层硬件细节就可以灵活规范的使用每一个外设。标准外设库覆盖了从GPIO到定时器,再到CAN、I2C、SP、UART和ADC等等的所有标准外设。对应的C源代码只是用了最基本的C编程的知识,所有代码经过严格测试,易于理解和使用,并且配有完整的文档,非常方便进行二次

开发和应用。

1.1.3 STM32F10XXX标准外设库结构与文件描述

1.标准外设库的文件结构在上一小节中已经介绍了使用标准外设库的开发的优势,因此对标准外设库的熟悉程度直接

影响到程序的编写,下面让我们来认识一下STM32F10XXX的标准外设库。STM32F10XXX的标准外设库经历众多的更新目前已经更新到最新的 3.5版本,开发环境中自带的标准外设库

为2.0.3版本,本书中以比较稳定而且较新的V3.4版本为基础介绍标准外设库的结构。

可以从ST的官方网站下载到各种版本的标准外设库,首先看一下 3.4版本标准外设库的文

件结构,如图5-3所示。3.0以上版本的文件结构大致相同,每个版本可能略有调整。

首上STM 32F 10x.£ldPe6ph,U b,U3A0

!. _htmr

Libraries.

;!

e A CMSIS

I a-1 cm! ardSvpRrf OtviceSuppor^

& ST

-, p

j.卡rm

gcc_nde7

,.TrueSHJDlO

D&eum«nt>!ion

9 拙IT M 10x_$td t>en p h .Driver

j., tnc

T Pvojeci

t J、STK132f lOw^&td^riph^E ■: jmples

* $T M )2f l(hc_Std Pie-rip h_T trnpi^te 亠:” UtflitiM

® “ STMJ2.EVAL

Common

.STM521O& EVAL

卜STM321DC.EVAL

» STM3210E.EVAL

i. STM321W&.EVAL _

L»艙斑《嶄戒戸「母客

图5-3 STM32F10XXX V3.4标准外设库文件结构表5-4中介绍了每个文件夹所包含的主要内容。

Cortex-M处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简单的处理器软件接

口,简化了软件复用工作,降低了Cortex-M上操作系统的移植难度,并减少了新入门的微

控制器开发者的学习曲线和新产品的上市时间。STM32F10x_StdPeriph_Driver则包括了分别对应包括了所有外设对应驱动函数,这些驱动函数均使用C语言编写,并提供了统一的易于

调用的函数接口,供开发者使用。Project文件夹中则包括了ST官方的所有例程和基于不同

编译器的项目模板,这些例程是学习和使用STM32的重要参考。Utilities包含了相关评估板的示例程序和驱动函数,供使用官方评估板的开发者使用,很多驱动函数同样可以作为学习的重要参考。

STM32F10xxx标准外设库体系结构如图5-4所示。图中很好的展示了各层以及具体文件之间

的联系,各文件的具体功能说明如表5-5所示。

P㈣YK治1 by ARM

■ on

WE" ◎誣典命m应才毎自

图5-4 STM32F10xxx标准外设库体系结构

2.基于CMSIS标准的软件架构

根据调查研究,软件开发已经被嵌入式行业公认为最主要的开发成本。对于ARM公司来说,

一个ARM内核往往会授权给多个厂家,生产种类繁多的产品,如果没有一个通用的软件接口标准,那么当开发者在使用不同厂家的芯片时将极大的增加了软件开发成本,因此,ARM

与Atmel、IAR、Keil、hami-nary Micro、Micrium、NXP、SEGGEF和ST等诸多芯片和软件厂商合作,将所有Cortex芯片厂商产品的软件接口标准化,制定了CMSIS标准。此举意在降

低软件开发成本,尤其针对新设备项目开发,或者将已有软件移植到其他芯片厂商提供的基

于Cortex处理器的微控制器的情况。有了该标准,芯片厂商就能够将他们的资源专注于产品外设特性的差异化,并且消除对微控制器进行编程时需要维持的不同的、互相不兼容的标

准的需求,从而达到降低开发成本的目的。

如图5-5所示,基于CMSIS标准的软件架构主要分为以下4层:用户应用层、操作系统及

中间件接口层、CMSIS层、硬件寄存器层。其中CMSIS层起着承上启下的作用:一方面该层对硬件寄存器层进行统一实现,屏蔽了不同厂商对Cortex-M系列微处理器核内外设寄存器

的不同定义;另一方面又向上层的操作系统及中间件接口层和应用层提供接口,简化了应用

程序开发难度,使开发人员能够在完全透明的情况下进行应用程序开发。也正是如此,CMSIS

层的实现相对复杂。

相关文档
最新文档