STM32固件库详解

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

STM32固件库详解

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

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

1.1.1 STM32标准外设库概述

STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API (application programming interface 应用编程界面)驱动,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、SPI、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以上版本的文件结构大致相同,每个版本可能略有调整。

图5-3 STM32F10XXX V3.4标准外设库文件结构

表5-4中介绍了每个文件夹所包含的主要容。

表5-4 STM32F10XXX V3.4标准外设库文件夹描述

STM32F10x_StdPeriph_Lib_V3.4. 0 _htmresc

本文件夹包含了所有的html页面资

Libraries CMSIS 见表5-6

STM32F10x_StdPeriph_Driver inc 标准外设库驱动头文件src 标准外设库驱动源文

标准外设库的第一部分是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 文件功能说明

文件名功能描述具体功能说明

core_cm3.h core_cm3.c Cortex-M3核及其设

备文件

访问Cortex-M3核及其设备:NVIC,SysTick等

访问Cortex-M3的CPU寄存器和核外设的函数

stm32f10x.h 微控制器专用头文

这个文件包含了STM32F10x全系列所有外设寄

存器的定义(寄存器的基地址和布局)、位定

义、中断向量表、存储空间的地址映射等

system_stm32f10x.h system_stm32f10x.c 微控制器专用系统

文件

函数SystemInit,用来初始化微控制器

函数Sysem_ExtMemCtl,用来配置外部存储器

控制器。它位于文件startup_stm32f10x_xx.s

/.c,在跳转到main前调用

SystemFrequncy,该值代表系统时钟频率

startup_stm32f10x_Xd.s 编译器启动代码微控制器专用的中断处理程序列表(与头文件一致)

弱定义(Weak)的中断处理程序默认函数(可以

相关文档
最新文档