STM32_3.5固件库详解 免费下载
基于ST官方V3.5固件库的STM32新建工程心得

基于ST官方V3.5固件库的STM32新建工程心得之前笔记有寄存器版本的新建工程步骤,这里介绍下基于ST官方V3.5固件库的STM32新建工程,和寄存器新建工程类似,在其基础上添加库文件。
1、WINSOWS环境下新建工程文件夹test →inc 存放自己的库文件src 存放自己的.C文件out 存放自己的输出文件txt 存放技术文档Libraries 拷贝的官方库文件到自己的工程文件夹下将打包文件夹下system目录下的inc和src文件夹中的3个文件或复制inc 和src到test文件夹下2、打开keil,新建一个工程将工程保存到自己新建的工程文件夹test的根目录选择芯片型号在弹出的是否自动导入启动代码的选项卡中选择否3、点击manage project items图标进行工程组管理test →CMSIS (Cortex微控制器软件接口标准)放启动代码内核文件STD_DRIVER (驱动程序放封装好的函数)SYSTEMMAINSRC在CMSIS工程组下添加以下文件:Libraries/CMSIS/CM3/Core Support/core_cm3.cLibraries/CMSIS/CM3/Devicesupport/ST/STM32F10x/system_stm32f10x.cLibraries/CMSIS/CM3/Devicesupport/ST/STM32F10x/startu p/arm/startup_st m32f10x_hd.s(.s文件可能在目录下被过滤,选择查看.s文件才能找到)至此,管理组CMSIS目录下共有3个文件在STD_DRIVER工程组目录下添加以下文件:Libraries/STM32F10x_StdPeriph_Driver/所有.c文件(这里暂时全部添加,以后可以用到哪个添加哪个)工程组设置完毕,点击确定保存4、从标准库文件夹STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Template/stm32f10x_conf.h 拷贝到新建工程文件夹test的inc文件夹下stm32f10x_it.c 拷贝到新建工程文件夹test的src文件夹下stm32f10x_it.h 拷贝到新建工程文件夹test的inc文件夹下5、点击Opetions for Target图标进行工程配置Device选项卡是芯片,新建工程时候已经选择Target选项卡晶振8.0MHzOutput选项卡Select Folder for Objects选择输出文件路径为创建文件夹test目录下的out,勾选Create HEX File,生成HEX烧写文件Listing选项卡Select Folder for Listing选择列表文件输出路径为test的outC/C++选项卡这里要添加两个宏:STM32F10X_HD,USE_STDPERIPH_DRIVER,指定芯片为大容量产品,使用ST官方的标准固件库Include Paths添加指定所有库文件路径,这里包含了Libraries文件夹下的标准库文件和test文件夹下自己定义的库文件有4个路径:test/inctest\Libraries\CMSIS\CM3\CoreSupporttest\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10xtest\Libraries\STM32F10x_StdPeriph_Driver\incDebug选项卡选择使用Jlink仿真调试Utilities选项卡去掉Use debug Driver选项前的勾选,然后选择Jlink在setting中选择FLASH,我们的芯片是大容量512K,可以选择勾选Reset and Run,烧写玩程序自动复位并运行。
固件库v3.5使用

固件库v3.5使用首先下载固件库STM32-v3.50移植环境:Keil uVision41.固件库目录介绍。
_htmresc:ST(意法半导体)Logo,包含两张图片。
Libraries:外围设备的驱动文件(STM32F10x_StdPeriph_Driver)和重要的系统文件(CMSIS)。
两个文件夹的内容稍后介绍。
Project:大量的外设例程和各个软件的工程模版,开发的时候可以在原来的基础上加以修改。
其中Kei 模版为MDK-ARMUtilities:评估板相关文件。
stm32f10x_stdperiph_lib_um.chm:由固件库中的注释生成的帮助文档。
2.固件库移植。
(1)建立一个工程文件夹,里面建立相应的目录用来区分文件的类别。
例如:D:\TestLibraries、User、StartUp、CMSIS、Project(2)将固件库中的文件拷贝到上面的相应目录下。
1)直接拷贝固件库中的Libraries放在Test根目录下,并且将CMSIS中剪切出来直接放在Test目录下,直接成为一个文件夹。
并将STM32F10x_StdPeriph_Driver目录下的src和inc文件夹剪切出来放到Libraries目录下。
2)在CMSIS中,将CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup中为启动文件,将其剪切出来放到Test根目录下,单独成文一个文件夹,并根据开发板的型号选择相应的启动文件,确定无误后该文件夹中的其他启动文件就可以直接删除了。
其他的文件夹的其他文件是重要的系统文件,不要进行移动和修改。
例如:本历程使用的是startup_stm32f10x_hd.sSTM32F10x_LD:STM32小容量产品STM32F10x_MD:STM32中容量产品STM32F10x_HD:STM32大容量产品3)User中放置main()函数,里面加上#include “stm32f10x.h”,另外从stm32\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template中拷贝stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h、system_stm32f10x.c四个文件。
STM32固件库v3.5变更指南

STM32 固件库中文使用手册只到 V2.0,其后未再更新。本文就 V3.5 对 V2.0 的常用部件 变更做简要说明。
பைடு நூலகம்
无不同
ADC_
无不同
BKP_
DMA_
void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DataNumber); V3.5 多出 向通道 x 的 CNDTR 寄存器写入数据传输数量
#endif /* STM32F10X_CL */
#ifdef STM32F10X_CL void RCC_AHBPeriphResetCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); #endif /* STM32F10X_CL */
无不同
void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); V3.5 void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); V3.5 void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); V3.5 void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); V3.5 void TIM1_SetIC1Prescaler(u16 TIM1_IC1Prescaler); V2.0 void TIM1_SetIC2Prescaler(u16 TIM1_IC2Prescaler); V2.0 void TIM1_SetIC3Prescaler(u16 TIM1_IC3Prescaler); V2.0 void TIM1_SetIC4Prescaler(u16 TIM1_IC4Prescaler); V2.0 功能:设置输入捕获预分频值(TIM_ICPSC_DIV1、TIM_ICPSC_DIV2、TIM_ICPSC_DIV4、 TIM_ICPSC_DIV8),分别为输入每 1、2、4 和 8 个边沿触发一次捕获
STM32固件库V3.5.0的CMSIS文件解析

STM32固件库V3.5.0的CMSIS文件解析1.首先选择启动文件:根据自己所用芯片的型号,选择正确的启动文件。
例如选择STM32F107系列的处理器,我们就选择startup_stm32f10x_hd.s。
在这个文件里首先要定义自己堆栈的大小,根据自己的需要确定。
文件中已经定义好了中断向量的位置及堆栈的初始化操作。
/* Reset handler*/Reset_Handler PROCEXPORT Reset_Handler [WEAK]IMPORT __mainIMPORT SystemInitLDR R0, =SystemInitBLX R0LDR R0, =__mainBX R0ENDP通过上面的代码可以看到先执行SystemInit()函数在进入main()函数。
SystemInit()函数在文件system_stm32f10x.c中有定义。
2.stm32f10x.h:这个头文件包含了STM32的大部份定义:①定义了芯片的类型,例如:#define STM32F10X_CL②定义是否包含标准外设库,#defined USE_STDPERIPH_DRIVER③定义外部振荡器频率,#defined HSE_V ALUE上面的三个定义,最好在编译器选项中定义好,这样就不用修改stm32f10x.h文件,最好不要修改这个文件。
④采用枚举的方式定义中断号。
⑤包含core_cm3.h,system_stm32f10x.h。
#include "core_cm3.h"#include "system_stm32f10x.h"#include <stdint.h>⑥定义数据类型,例如:typedef uint32_t u32此外还定义了FlagStatus,ITStatus及ErrorStatus等。
⑦定义外设结构体,地址及用到的常量。
⑧包含stm32f10x_conf.h来配置外设。
STM32 3.5库文件中文说明

STM32库文件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版本为基础介绍标准外设库的结构。
STM32_3.5固件库详解 免费下载

图 5‐3 STM32F10XXX V3.4 标准外设库文件结构 表 5‐4 中介绍了每个文件夹所包含的主要内容。 表 5‐4 STM32F10XXX V3.4 标准外设库文件夹描述
STM32F10x_StdPeriph_Lib_V3.4.0 _htmresc
本文件夹包含了所有的 html 页面资 源
system_stm32f10x.c 文件
函数 Sysem_ExtMemCtl,用来配置外部存储器 控制器。它位于文件 startup_stm32f10x_xx.s /.c,在跳转到 main 前调用 SystemFrequncy,该值代表系统时钟频率
startup_stm32f10x_Xd.s 编译器启动码
微控制器专用的中断处理程序列表(与头文件 一致) 弱定义(Weak)的中断处理程序默认函数(可以 被用户代码覆盖) 该文件是与编译器相关的
关于STM32F103 V3.5.0固件库stm32f10x_conf.h文件

关于STM32F103 V3.5.0 固件库stm32f10x_conf.h 文件最近项目使用STM32,又重新熟悉了一下STM32 的工程建立与程序设计,总结了一下,发现了之前没有发现的技巧与设置。
关于STM32F103 的V3.5.0固件库,使用起来,挺方便,移植性也不错,当然,如果使用Keil uVesion4 开始的话,首先需要设置好工作环境,才可以正常的编译。
为什么会有:main.c里面怎么来的stm32f10x_conf.h 文件?我搜索了一下代码,发现来自:主头文件#include “stm32f10x.h”若是使用ST 公司为STM32 开发的固件库,就会包括头文件:stm32f10x_conf.h。
打开stm32f10x_conf.h 文件一看,原来,只有:#include “stm32f10x.h”还不够,如果要使用外设什么的,还要在这里打开配置开关,不用的外设可以不加入头文件,看来设计的挺巧妙的。
这样使用外设库时,只要配置好就行了,在main.c 里只使用一个:#include “stm32f10x.h”就可以了。
看来如果不配置好stm32f10x_conf.h,当使用外设如ADC TIM USART 时,根据无法编译通过。
因为没有在项目里加入头文件调用,这里若全不选,根本不能调用固件外设库,即使你把固件库文件加入了工程里。
当然,你可以在main.c 里面全部加入需要的头文件来解决,不过我觉得配置stm32f10x_conf.h 简单方便,有组织。
在这里,加入了需要使用的固件库外设文件,但还不够,还需要设置如下:还加入头文件路径:根据使用的外设固件库配置一下:stm32f10x_conf.h,如果使用systick 系统滴答定时器等,只要在stm32f10x_conf.h 里,取消#include “misc.h”前面的注释,即包含这个misc.h 文件即可,否则,滴答定时器不工作。
STM32程序3种下载方式说明

STM32程序3种下载方式说明下面介绍U-Link、J-Link和ISP下载STM32程序的配置方法,以MDK3.24为例,也可以使用MDK3.80或者更高版本的MDK,过程类似。
此文档仅供学习和交流使用。
STM32程序U-Link下载说明(1)ULink下载工具如图1所示。
图1 ULink下载工具(2)双击MDK安装文件图标进行安装,在后续出现的窗口中依次点击Next按钮,直到安装完成(默认安装路径是C:\Keil,建议换个路径名,比如C:\Keil MDK324文件目录下,以防止与51单片机开发环境冲突)。
安装好后,未输入License的MDK,在开发时会有代码量的限制。
(3)输入License:选择File菜单下的License Management子菜单,如图2所示。
图2 File菜单下的License Management子菜单(4)将License序列号拷贝到License Management中的NewLicense ID Code(LIC)中,点击ADD LIC完成,如图3所示。
图3 输入License序列号(5)运行序列号生成程序,打开破解补丁:(部分杀毒软件可能会将这个文件误报为病毒文件,这时不必理会杀毒软件的警告,并将这个文件设为信任文件或者直接关掉杀毒软件),运行压缩包中程序,按图4所示配置,将Target下拉选项选中“arm”。
图4 输入CID,获得序列号将Keil软件“License Management”对话框中的Computer CID中的内容:拷贝到此程序的CID中:,然后点击按钮,获得序列号。
(6)将生成的序列号拷贝到“License Management”对话框的LIC区域中:然后,点击“Add LIC”,出现图5所示的内容,点击“Close”关闭对话框。
图5 添加LIC序列号(7)将文件夹Bin目录中的3个文件“UL2ARM_RDI.dll”、“UL2ARM_ULINK1.dll”、“UL2CM3_ULINK1.dll”拷贝到MDK安装目录下的\ARM\Bin 目录中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
system_stm32f10x.c 文件
函数 Sysem_ExtMemCtl,用来配置外部存储器 控制器。它位于文件 startup_stm32f10x_xx.s /.c,在跳转到 main 前调用 SystemFrequncy,该值代表系统时钟频率
startup_stm32f10x_Xd.s 编译器启动代码
外设中断函数文件
用户可以相应的加入自己的中断程序的代码, 对于指向同一个中断向量的多个不同中断请 求,用户可以通过判断外设的中断标志位来确 定准确的中断源,执行相应的中断服务函数。
stm32f10x_ppp.h stm32f10x_ppp.c
外设驱动函数文件
包括了相关外设的初始化配置和部分功能应 用函数,这部分是进行编程功能实现的重要组 成部分。
Application.c
用户文件
用户程序文件,通过标准外设库提供的接口进 行相应的外设配置和功能设计。
2. 基于 CMSIS 标准的软件架构 根据调查研究,软件开发已经被嵌入式行业公认为最主要的开发成本。对于 ARM 公司来说, 一个 ARM 内核往往会授权给多个厂家,生产种类繁多的产品,如果没有一个通用的软件接 口标准,那么当开发者在使用不同厂家的芯片时将极大的增加了软件开发成本,因此,ARM 与 Atmel、IAR、Keil、hami‐nary Micro、Micrium、NXP、SEGGER 和 ST 等诸多芯片和软件厂 商合作,将所有 Cortex 芯片厂商产品的软件接口标准化,制定了 CMSIS 标准。此举意在降 低软件开发成本,尤其针对新设备项目开发,或者将已有软件移植到其他芯片厂商提供的基 于 Cortex 处理器的微控制器的情况。有了该标准,芯片厂商就能够将他们的资源专注于产 品外设特性的差异化,并且消除对微控制器进行编程时需要维持的不同的、互相不兼容的标 准的需求,从而达到降低开发成本的目的。 如图 5‐5 所示,基于 CMSIS 标准的软件架构主要分为以下 4 层:用户应用层、操作系统及 中间件接口层、CMSIS 层、硬件寄存器层。其中 CMSIS 层起着承上启下的作用:一方面该层 对硬件寄存器层进行统一实现,屏蔽了不同厂商对 Cortex‐M 系列微处理器核内外设寄存器 的不同定义;另一方面又向上层的操作系统及中间件接口层和应用层提供接口,简化了应用 程序开发难度,使开发人员能够在完全透明的情况下进行应用程序开发。也正是如此,CMSIS 层的实现相对复杂。
图 5‐3 STM32F10XXX V3.4 标准外设库文件结构 表 5‐4 中介绍了每个文件夹所包含的主要内容。 表 5‐4 STM32F10XXX V3.4 标准外设库文件夹描述
STM32F10x_StdPeriph_Lib_V3.4.0 _htmresc
本文件夹包含了所有的 html 页面资 源
startup_stm32f10x_hd.s: 大容量产品启动文件 MDK ARM 编 译 器 启 startup_stm32f10x_md.s: 中容量产品启动文件 动文件 startup_stm32f10x_ld.s: 小容量产品启动文件
TrueSTUDIO
TrueSTUDIO 编译器启动 文件
(3) 外设访问函数(AFP, Access Functions for Peripherals):该层也由芯片厂商负责实现,主要 是提供访问片上外设的访问函数,这一部分是可选的。
对一个 Cortex‐M 微控制系统而言,CMSIS 通过以上三个部分实现了: l 定义了访问外设寄存器和异常向量的通用方法; l 定义了核内外设的寄存器名称和核异常向量的名称; l 为 RTOS 核定义了与设备独立的接口,包括 Debug 通道。 这样芯片厂商就能专注于对其产品的外设特性进行差异化,并且消除他们对微控制器进
Libraries
CMSIS
见表 5‐6
STM32F10x_StdPeriph_Driver src
inc
标准外设库驱动头文件
标准外设库驱动源文 件
Project Template
RIDE
Examples
标准外设库驱动的完整例程
MDK‐ARM
KEIL RVMDK 的项目模板示例
Raisonance RIDE 的项 目模板示例数stm32f10x.h
微 控 制 器 专 用 头 文 这个文件包含了 STM32F10x 全系列所有外设寄 存器的定义(寄存器的基地址和布局)、位定
件 义、中断向量表、存储空间的地址映射等
system_stm32f10x.h 微 控 制 器 专 用 系 统 函数 SystemInit,用来初始化微控制器
微控制器专用的中断处理程序列表(与头文件 一致) 弱定义(Weak)的中断处理程序默认函数(可以 被用户代码覆盖) 该文件是与编译器相关的
stm32f10x_conf.h
固件库配置文件
通过更改包含的外设头文件来选择固件库所 使用的外设,在新建程序和进行功能变更之前 应当首先修改对应的配置。
stm32f10x_it.h stm32f10x_it.c
行编程时需要维持的不同的、互相不兼容的标准需求,以达到低成本开发的目的。CMSIS 中 的具体文件结构如表 5‐6 所示。 表 5‐6 CMSIS 文件夹结构
CMSIS
CMSIS 文
Core
Documentation 档
CM3
gcc_ride7 iar
Startup
arm
GCC 编译器 启动文件
IAR 编 译 器 启动文件
图 5‐5 CMSIS 标准的软件架构 层主要分为以下 3 个部分: (1) 核内外设访问层(CPAL,Core Peripheral Access Layer):该层由 ARM 负责实现。包括对 寄存器名称、地址的定义,对核寄存器、NVIC、调试子系统的访问接口定义以及对特殊用途 寄存器的访问接口(例如:CONTROL,xPSR)定义。由于对特殊寄存器的访问以内联方式定 义,所以针对不同的编译器 ARM 统一用来屏蔽差异。该层定义的接口函数均是可重入的。 (2) 片上外设访问层(DPAL, Device Peripheral Access Layer):该层由芯片厂商负责实现。该层 的实现与 CPAL 类似,负责对硬件寄存器地址以及外设访问接口进行定义。该层可调用 CPAL 层提供的接口函数同时根据设备特性对异常向量表进行扩展,以处理相应外设的中断请求。
图 5‐4 STM32F10xxx 标准外设库体系结构 表 5‐5 文件功能说明
文件名
功能描述
具体功能说明
core_cm3.h core_cm3.c
访问 Cortex‐M3 内核及其设备:NVIC,SysTick
Cortex‐M3 内核及其 等
设备文件
访问 Cortex‐M3 的 CPU 寄存器和内核外设的函
在实际开发过程中,根据应用程序的需要,可以采取 2 种方法使用标准外设库(StdPeriph_Lib): (1) 使用外设驱动:这时应用程序开发基于外设驱动的 API(应用编程接口)。用户只需要配置 文件”stm32f10x_conf.h”,并使用相应的文件”stm32f10x_ppp.h/.c”即可。 (2) 不使用外设驱动:这时应用程序开发基于外设的寄存器结构和位定义文件。 这两种方法的优缺点在“使用标准外设库开发的优势”小节中已经有了具体的介绍,这里仍要 说明的是,使用使用标准外设库进行开发可以极大的减小软件开发的工作量,也是目前嵌入 式系统开发的一个趋势。 标准外设库(StdPeriph_Lib)支持 STM32F10xxx 系列全部成员:大容量,中容量和小容量产品。 从表 5‐6 中也可以看出,启动文件已经对不同的系列进行了划分,实际开发中根据使用的
本文件夹包含 STMF10xxx CMSIS 文件:微控制器外 设访问层和内核设备访问 层: core_cm3.h : CMSIS 的 Cortex‐M3 内核设备访问 层头文件 core_cm3.c : CMSIS 的 Cortex‐M3 内核设备访问 层源文件 stm32f10x.h : CMSIS 的 Cortex‐M3 STM32f10xxx 微 控制器外设访问层头文件 system_stm32f10x.h : CMSIS 的 Cortex‐M3 STM32f10xxx 微控制器外 设访问层头文件 system_stm32f10x.c : CMSIS 的 Cortex‐M3 STM32f10xxx 微控制器外 设访问层源文件
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 以上版本的文件结构大致相同,每个版本可能略有调整。