STM32固件库使用手册的中文翻译.doc

上传人:小** 文档编号:545832 上传时间:2018-10-23 格式:DOC 页数:68 大小:958KB
返回 下载 相关 举报
STM32固件库使用手册的中文翻译.doc_第1页
第1页 / 共68页
STM32固件库使用手册的中文翻译.doc_第2页
第2页 / 共68页
点击查看更多>>
资源描述

《STM32固件库使用手册的中文翻译.doc》由会员分享,可在线阅读,更多相关《STM32固件库使用手册的中文翻译.doc(68页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、|UM0427 用户手册32位基于ARM微控制器STM32F101xx与STM32F103xx固件函数库介绍本手册介绍了32位基于ARM微控制器STM32F101xx与STM32F103xx的固件函数库。该函数库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库,无需深入掌握细节,用户也可以轻松应用每一个外设。因此,使用本固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API (application

2、programming interface 应用编程界面 )驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。所有的驱动源代码都符合“Strict ANSI-C”标准(项目于范例文件符合扩充 ANSI-C标准)。我们已经把驱动源代码文档化,他们同时兼容MISRA-C 2004标准(根据需要,我们可以提供兼容矩阵)。由于整个固态函数库按照“Strict ANSI-C”标准编写,它不受不同开发环境的影响。仅对话启动文件取决于开发环境。该固态函数库通过校验所有库函数的输入值来实现实时错误检测。该动态校验提高了软件的鲁棒性。实时检测适合于用户应用程序的开发和调试。但这会增加了成本,可以在最

3、终应用程序代码中移去,以优化代码大小和执行速度。想要了解更多细节,请参阅Section 2.5。因为该固件库是通用的,并且包括了所有外设的功能,所以应用程序代码的大小和执行速度可能不是最优的。对大多数应用程序来说,用户可以直接使用之,对于那些在代码大小和执行速度方面有严格要求的应用程序,该固件库驱动程序可以作为如何设置外设的一份参考资料,根据实际需求对其进行调整。此份固件库用户手册的整体架构如下: 定义,文档约定和固态函数库规则。 固态函数库概述(包的内容,库的架构),安装指南,库使用实例。 固件库具体描述:设置架构和每个外设的函数。 |STM32F101xx和STM32F103xx在整个文档

4、中被写作STM32F101x。|1.文档和库规范本用户手册和固态函数库按照以下章节所描述的规范编写。1.1缩写Table 1. 本文档所有缩写定义缩写 外设/单元ADC 模数转换器BKP 备份寄存器CAN 控制器局域网模块DMA 直接内存存取控制器EXTI 外部中断事件控制器FLASH 闪存存储器GPIO 通用输入输出I2C 内部集成电路IWDG 独立看门狗NVIC 嵌套中断向量列表控制器PWR 电源/功耗控制RCC 复位与时钟控制器RTC 实时时钟SPI 串行外设接口SysTick 系统嘀嗒定时器TIM 通用定时器TIM1 高级控制定时器USART 通用同步异步接收发射端WWDG 窗口看门狗

5、1.2命名规则固态函数库遵从以下命名规则:PPP表示任一外设缩写,例如:ADC。更多缩写相关信息参阅章节1.1 缩写。系统、源程序文件和头文件命名都以“stm32f10x_” 作为开头,例如:stm32f10x_conf.h 。常量仅被应用于一个文件的,定义于该文件中;被应用于多个文件的,在对应头文件中定义。所有常量都由英文字母大写书写。寄存器作为常量处理。他们的命名都由英文字母大写书写。在大多数情况下,他们采用与缩写规范与本用户手册一致。外设函数的命名以该外设的缩写加下划线为开头。每个单词的第一个字母都由英文字母|大写书写,例如:SPI_SendData。在函数名中,只允许存在一个下划线,用

6、以分隔外设缩写和函数名的其它部分。名为PPP_Init的函数,其功能是根据PPP_InitTypeDef中指定的参数,初始化外设PPP,例如TIM_Init.名为PPP_DeInit 的函数,其功能为复位外设PPP 的所有寄存器至缺省值,例如TIM_DeInit.名为PPP_StructInit的函数,其功能为通过设置PPP_InitTypeDef 结构中的各种参数来定义外设的功能,例如:USART_StructInit.名为PPP_Cmd的函数,其功能为使能或者失能外设PPP,例如: SPI_Cmd.名为PPP_ITConfig的函数,其功能为使能或者失能来自外设PPP某中断源,例如: RC

7、C_ITConfig.名为PPP_DMAConfig的函数,其功能为使能或者失能外设PPP的DMA 接口,例如:TIM1_DMAConfig.用以配置外设功能的函数,总是以字符串“Config”结尾,例如GPIO_PinRemapConfig .名为PPP_GetFlagStatus的函数,其功能为检查外设PPP某标志位被设置与否,例如:I2C_GetFlagStatus.名为PPP_ClearFlag的函数,其功能为清除外设 PPP标志位,例如: I2C_ClearFlag.名为PPP_GetITStatus的函数,其功能为判断来自外设PPP的中断发生与否,例如:I2C_GetITStatu

8、s.名为PPP_ClearITPendingBit 的函数,其功能为清除外设PPP中断待处理标志位,例如: I2C_ClearITPendingBit.1.3编码规则本章节描述了固态函书库的编码规则。1.3.1变量固态函数库定义了24个变量类型,他们的类型和大小是固定的。在文件stm32f10x_type.h中我们定义了这些变量:typedef signed long s32;typedef signed short s16;|typedef signed char s8;typedef signed long const sc32; /* Read Only */typedef signed

9、 short const sc16; /* Read Only */typedef signed char const sc8; /* Read Only */typedef volatile signed long vs32;typedef volatile signed short vs16;typedef volatile signed char vs8;typedef volatile signed long const vsc32; /* Read Only */typedef volatile signed short const vsc16; /* Read Only */typ

10、edef volatile signed char const vsc8; /* Read Only */typedef unsigned long u32;typedef unsigned short u16;typedef unsigned char u8;typedef unsigned long const uc32; /* Read Only */typedef unsigned short const uc16; /* Read Only */typedef unsigned char const uc8; /* Read Only */typedef volatile unsig

11、ned long vu32;typedef volatile unsigned short vu16;typedef volatile unsigned char vu8;typedef volatile unsigned long const vuc32; /* Read Only */typedef volatile unsigned short const vuc16; /* Read Only */typedef volatile unsigned char const vuc8; /* Read Only */1.3.2布尔型在文件stm32f10x_type.h中,布尔形变量被定义

12、如下:Typedef enumFALSE = 0,TRUE = !FALSE bool;1.3.3 标志位状态类型在文件stm32f10x_type.h中,我们定义标志位类型(FlagStatus type)的2个可能值为“设置”与“重置”(SET or RESET)。typedef enumRESET = 0, SET = !RESET FlagStatus;1.3.4 功能状态类型|在文件stm32f10x_type.h中,我们定义功能状态类型(FunctionalState type)的2个可能值为“使能”与“失能 ”(ENABLE or DISABLE)。typedef enumDIS

13、ABLE = 0,ENABLE = !DISABLE FunctionalState;1.3.5 错误状态类型在文件stm32f10x_type.h中,我们错误状态类型类型(ErrorStatus type)的2个可能值为“成功”与“出错 ”(SUCCESS or ERROR)。Typedef enum ERROR = 0,SUCCESS = !ERROR ErrorStatus;1.3.6 外设用户可以通过指向各个外设的指针访问各外设的控制寄存器。这些指针所指向的数据结构与各个外设的控制寄存器布局一一对应。外设控制寄存器结构文件stm32f10x_map.h包含了所有外设控制寄存器的结构,下

14、例为SPI寄存器结构的声明:/*- Serial Peripheral Interface -*/typedef structvu16 CR1; u16 RESERVED0;vu16 CR2;u16 RESERVED1;vu16 SR;u16 RESERVED2;vu16 DR;u16 RESERVED3;vu16 CRCPR;u16 RESERVED4;vu16 RXCRCR;u16 RESERVED5;|vu16 TXCRCR;u16 RESERVED6; SPI_TypeDef;寄存器命名遵循上节的寄存器缩写命名规则。RESERVEDi(i 为一个整数索引值)表示被保留区域。外设声明文件

15、stm32f10x_map.h包含了所有外设的声明,下例为 SPI外设的声明:#ifndef EXT#Define EXT extern#endif.#define PERIPH_BASE (u32)0x40000000)#define APB1PERIPH_BASE PERIPH_BASE#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)./* SPI2 Base Address definition*/#define SPI2_BASE (APB1PERIPH_BASE + 0x3800)./* SPI2 peripheral declarati

16、on*/#ifndef DEBUG.#ifdef _SPI2 #define SPI2 (SPI_TypeDef *) SPI2_BASE)#endif /*_SPI2 */.#else /* DEBUG */. #ifdef _SPI2 EXT SPI_TypeDef *SPI2;#endif /*_SPI2 */.#endif /* DEBUG */如果用户希望使用外设SPI,那么必须在文件stm32f10x_conf.h中定义_SPI 标签。通过定义标签_SPIn,用户可以访问外设SPIn的寄存器。例如,用户必须在文件stm32f10x_conf.h中定义标签 _SPI2,否则是不能访问

17、SPI2的寄存器的。在文件stm32f10x_conf.h中,用户可以按照下例定义标签 _SPI 和 _SPIn。#define _SPI #define _SPI1 #define _SPI2每个外设都有若干寄存器专门分配给标志位。我们按照相应的结构定义这些寄存器。标志位的命名,同样遵循上节的外设缩写规范,以PPP_FLAG_开始。对于不同的外设,|标志位都被定义在相应的文件stm32f10x_ppp.h中。用户想要进入除错(DEBUG)模式的话,必须在文件stm32f10x_conf.h中定义标签DEBUG。这样会在 SRAM的外设结构部分创建一个指针。因此我们可以简化除错过程,并且通过转

18、储外设获得来获得所有寄存器的状态。在所有情况下,SPI2都是一个指向外设SPI2首地址的指针。变量DEBUG可以仿照下例定义:#define DEBUG 1可以初始化DEBUG模式与文件stm32f10x_lib.c中如下:#ifdef DEBUGvoid debug(void) .#ifdef _SPI2SPI2 = (SPI_TypeDef *) SPI2_BASE;#endif /*_SPI2 */. #endif /* DEBUG*/Note:1 当用户选择DEBUG 模式,宏assert_param被扩展,同时运行时间检查功能也在固态函数库代码中被激活。2 进入DEBUG模式会增大代

19、码的尺寸,降低代码的运行效率。因此,我们强烈建议仅仅在除错的时候使用相应代码,在最终的应用程序中,删除它们。|2. 固件函数库2.1压缩包描述STM32F10x固件函数库被压缩在一个zip文件中。解压该文件会产生一个文件夹:STM32F10xFWLibFWLib,包含如下所示的子文件夹:Figure 1:固件函数库文件夹结构2.1.1 文件夹Examples文件夹Examples,对应每一个STM32外设,都包含一个子文件夹。这些子文件夹包含了整套文件,组成典型的例子,来示范如何使用对应外设。这些文件有:readme.txt:每个例子的简单描述和使用说明。stm32f10x_conf.h:该头

20、文件设置了所有使用到的外设,由不同的“DEFINE” 语句组成。stm32f10x_it.c:该源文件包含了所有的中断处理程序(如果未使用中断,则所有的函数体都为空)。stm32f10x.it.h:该头文件包含了所有的中断处理程序的原形。main.c:例程代码。注:所有的例程的使用,都不受不同软件开发环境的影响。|2.1.2 文件夹Library文件夹Library包含组成固件函数库核心的所有子文件夹和文件: 子文件夹inc包含了固件函数库所需的头文件,用户无需修改该文件夹:-stm32f10x_type.h:所有其他文件使用的通用数据类型和枚举。- stm32f10x_map.h:外设存储器

21、映像和寄存器数据结构。- stm32f10x_lib.h:主头文件夹,包含了其他头文件。- stm32f10x_ppp.h:每个外设对应一个头文件,包含了该外设使用的函数原形,数据结构和枚举。- cortexm3_macro.h: 文件cortexm3_macro.s对应的头文件。 子文件夹src包含了固件函数库所需的源文件,用户无需修改该文件夹:-stm32f10x_ppp.c:每个外设对应一个源文件,包含了该外设使用的函数体。- stm32f10x_lib.c:初始化所有外设的指针。注:所有代码都按照Strict ANSI-C标准书写,都不受不同软件开发环境的影响。2.1.3 文件夹Pro

22、ject文件夹Project 包含了一个标准的程序项目模板,包括库文件的编译和所有用户可修改的文件,可用以建立新的工程。- stm32f10x_conf.h:项目配置头文件,默认为设置了所有的外设。- stm32f10x_it.c:该源文件包含了所有的中断处理程序(所有的函数体默认为空)。stm32f10x_it.h:该头文件包含了所有的中断处理程序的原形。main.c:主函数体文件夹EWARM,RVMDK , RIDE:用于不同开发环境使用,详情查询各文件夹下的文件readme.txt。2.2固件函数库文件描述Table 2列举和描述了固件函数库使用的所有文件。固件函数库的体系和文件相互包括

23、的联系表示在Figure 2中。每一个外设都有一个对应的源文件:stm32f10x_ppp.c和一个对应的头文件:stm32f10x_ppp.h。文件stm32f10x_ppp.c包含了使用外设PPP所需的所有固件函数。提供所有外设一个存储器映像文件stm32f10x_map.h。它包含了所有寄存器的声明,既可以用于Debug模式也可以用于release模式。头文件stm32f10x_lib.h包含了所有外设头文件的头文件。它是唯一一个用户需要包括在自己应用中的文件,起到应用和库之间界面的作用。文件stm32f10x_conf.h是唯一一个需要由用户修改的文件。它作为应用和库之间的界面,指定了一系列参数。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com