STM32固件库详解 基于标准外设库的软件开发
STM32标准外设库概述
STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API (application programming interface 应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。
ST公司2007年10月发布了版本的固件库,MDK 之前的版本均支持该库。2008年6月发布了版的固件库,从2008年9月推出的MDK 版本至今均使用版本的固件库。以后的版本相对之前的版本改动较大,本书使用目前较新的版本。
使用标准外设库开发的优势
简单的说,使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解底层硬件细节就可以灵活规范的使用每一个外设。标准外设库覆盖了从GPIO到定时器,再到CAN、I2C、SPI、UART和ADC等等的所有标准外设。对应的C源代码只是用了最基本的C编程的知识,所有代码经过严格测试,易于理解和使用,并且配有完整的文档,非常方便进行二次开发和应用。
STM32F10XXX标准外设库结构与文件描述
1. 标准外设库的文件结构
在上一小节中已经介绍了使用标准外设库的开发的优势,因此对标准外设库的熟悉程度直接影响到程序的编写,下面让我们来认识一下STM32F10XXX的标准外设库。STM32F10XXX的标准外设库经历众多的更新目前已经更新到最新的版本,开发环境中自带的标准外设库为版本,本书中以比较稳定而且较新的版本为基础介绍标准外设库的结构。
可以从ST的官方网站下载到各种版本的标准外设库,首先看一下版本标准外设库的文件结构,如图 5-3所示。以上版本的文件结构大致相同,每个版本可能略有调整。
图 5-3 STM32F10XXX 标准外设库文件结构 表 5-4中介绍了每个文件夹所包含的主要内容。 表 5-4 STM32F10XXX 标准外设库文件夹描述
本文件夹包含了所有的html页 Libraries CMSIS 面资源 见表 5-6 标准外设库驱动头文件 STM32F10x_StdPeriph_Driver inc 标准外设库驱动源文件 src
Project Template Examples MDK-ARM Raisonance RIDE的项目模板示例 IAR EWARM的项目模板示例 标准外设库驱动的完整例程 KEIL RVMDK的项目模板示例 RIDE EWARM 本文件夹包含了用于Utilities STM3210-EVAL STM3210B-EVAL和STM3210E-EVAL评估板的专用驱动 标准外设库的第一部分是CMSIS 和STM32F10x_StdPeriph_Driver,CMSIS 是独立于供应商的Cortex-M 处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简单的处理器软件接口,简化了软件复用工作,降低了Cortex-M 上操作系统的移植难度,并减少了新入门的微控制器开发者的学习曲线和新产品的上市时间。STM32F10x_StdPeriph_Driver则包括了分别对应包括了所有外设对应驱动函数,这些驱动函数均使用C语言编写,并提供了统一的易于调用的函数接口,供开发者使用。Project文件夹中则包括了ST官方的所有例程和基于不同编译器的项目模板,这些例程是学习和使用STM32的重要参考。Utilities包含了相关评估板的示例程序和驱动函数,供使用官方评估板的开发者使用,很多驱动函数同样可以作为学习的重要参考。
STM32F10xxx标准外设库体系结构如图 5-4所示。图中很好的展示了各层以及具体文件之间的联系,各文件的具体功能说明如表 5-5所示。
图 5-4 STM32F10xxx标准外设库体系结构 表 5-5 文件功能说明 文件名 功能描述 具体功能说明 访问Cortex-M3内核及其设备:NVIC,Cortex-M3内核及SysTick等 其设备文件 访问Cortex-M3的CPU寄存器和内核外设的函数 这个文件包含了STM32F10x全系列所有外微控制器专用头文设寄存器的定义(寄存器的基地址和布局)、 件 位定义、中断向量表、存储空间的地址映射等 函数SystemInit,用来初始化微控制器 微控制器专用系统文件 函数Sysem_ExtMemCtl,用来配置外部存储器控制器。它位于文件 /.c,在跳转到main前调用 SystemFrequncy,该值代表系统时钟频率
微控制器专用的中断处理程序列表(与头文件一致) 编译器启动代码 弱定义(Weak)的中断处理程序默认函数(可以被用户代码覆盖) 该文件是与编译器相关的 通过更改包含的外设头文件来选择固件库固件库配置文件 所使用的外设,在新建程序和进行功能变更之前应当首先修改对应的配置。 用户可以相应的加入自己的中断程序的代 码,对于指向同一个中断向量的多个不同中外设中断函数文件 断请求,用户可以通过判断外设的中断标志位来确定准确的中断源,执行相应的中断服务函数。 包括了相关外设的初始化配置和部分功能这部分是进行编程功能实现的重外设驱动函数文件 应用函数,要组成部分。 用户文件 2. 基于CMSIS标准的软件架构
用户程序文件,通过标准外设库提供的接口进行相应的外设配置和功能设计。 根据调查研究,软件开发已经被嵌入式行业公认为最主要的开发成本。对于ARM公司来说,一个ARM内核往往会授权给多个厂家,生产种类繁多的产品,如果没有一个通用的软件接口标准,那么当开发者在使用不同厂家的芯片时将极大的增加了软件开发成本,因此,ARM与Atmel、IAR、Keil、hami-nary Micro、Micrium、NXP、SEGGER和ST等诸多芯片和软件厂商合作,将所有Cortex芯片厂商产品的软件接口标准化,制定了CMSIS标准。此举意在降低软件开发成本,尤其针对新设备项目开发,或者将已有软件移植到其他芯片厂商提供的基于Cortex处理器的微控制器的情况。有了该标准,芯片厂商就能够将他们的资源专注于产品外设特性的差异化,并且消除对微控制器进行编程时需要维持的不同的、互相不兼容的标准的需求,从而达到降低开发成本的目的。
STM32固件库详解
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)