版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、STM32固件库详解基于标准外设库的软件开发STM32标准外设库概述STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包, 它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还 包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间 API,通过使用固件函数库,无需深入掌握底层硬件细节, 开发者就可以轻松应用每 一个外设。因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开 发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个 器件的开发都由一个通用 API (applicatio n programmi
2、ng in terface应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。ST公司2007年10月发布了版本的固件库,MDK之前的版本均支持该库。2008年6 月发布了版的固件库,从 2008年9月推出的MDK版本至今均使用版本的固件库。 以后的版本相对之前的版本改动较大,本书使用目前较新的版本。使用标准外设库开发的优势简单的说,使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解 底层硬件细节就可以灵活规范的使用每一个外设。标准外设库覆盖了从GPIO到定时 器,再到CAN I2C、SPI、UART和 ADC等等的所有标准外设。对应的 C源代码只是 用了最
3、基本的C编程的知识,所有代码经过严格测试,易于理解和使用,并且配有 完整的文档,非常方便进行二次开发和应用。STM32F10XXX标准外设库结构与文件描述1.标准外设库的文件结构在上一小节中已经介绍了使用标准外设库的开发的优势,因此对标准外设库的熟悉 程度直接影响到程序的编写,下面让我们来认识一下STM32F10XX的标准外设库STM32F10XX的标准外设库经历众多的更新目前已经更新到最新的版本,开发环境 中自带的标准外设库为版本,本书中以比较稳定而且较新的版本为基础介绍标准外 设库的结构。可以从ST的官方网站下载到各种版本的标准外设库,首先看一下版本标准外设库的文件结构,如图5-3所示。以
4、上版本的文件结构大致相同, 每个版本可能略有调整。直 X STM 32F1 th.StdPenph.G b.VKOj _HmrOc.librariei- 上 CM)吉占&Tstartupgc<_nde7II卜山"TfweSTUDlOD&euMfHUbon(&-.X 5TM*髀 KhLStdlZrJp扎Xef4 inct . (hrojec:t h STM 321j mplc-s* j. $TM)2f 10x_$tdO-riph_TerripiJt<-亠、:.UtAbn自 上 STMJ2.EVALComtnon$TM32mEVALL > STM
5、32iDC.EVAL STM32KOE.EVAL$TMJ21COT_tVAL»首悔3誥®|闻疋一术禄客图5-3 STM32F10XXX标准外设库文件结构表5-4中介绍了每个文件夹所包含的主要内容表5-4 STM32F10XXX标准外设库文件夹描述本文件夹包含了所有的html页 面资源LibrariesCMSIS见表5-6STM32F10x_StdPeriph_Driverinc标准外设库驱动头文件src标准外设库驱动源文件ProjectExamples标准外设库驱动的完整例程TemplateMDK-ARMKEIL RVMDK勺项目模板示例RIDERaiso nance RI
6、DE 的项目模板示例EWARMIAR EWAR的项目模板示例UtilitiesSTM3210-EVAL本文件夹包含了用于STM3210B-EVA 和STM3210E-EVA评估板的专用驱动标准外设库的第一部分是 CMSIS和STM32F10x_StdPeriph_Driver , CMSIS是独立于 供应商的Cortex-M处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简 单的处理器软件接口,简化了软件复用工作,降低了 Cortex-M上操作系统的移植 难度,并减少了新入门的微控制器开发者的学习曲线和新产品的上市时间。STM32F10x_StdPeriph_Driver则包括了分别对应包
7、括了所有外设对应驱动函数,这些驱动函数均使用C语言编写,并提供了统一的易于调用的函数接口,供开发者使 用。Project文件夹中则包括了 ST官方的所有例程和基于不同编译器的项目模板, 这些例程是学习和使用STM32的重要参考。Utilities包含了相关评估板的示例程序和驱动函数,供使用官方评估板的开发者使用,很多驱动函数同样可以作为学习 的重要参考。STM32F10xxx标准外设库体系结构如图5-4所示。图中很好的展示了各层以及具体 文件之间的联系,各文件的具体功能说明如表5-5所示。图5-4 STM32F10xxx标准外设库体系结构表5-5文件功能说明文件名功能描述具体功能说明Corte
8、x-M3内核及其设备文件访问Cortex-M3内核及其设备:NVIC, SysTick 等访问Cortex-M3的CPUS存器和内核外设的 函数微控制器专用头文 件这个文件包含了 STM32F10x全系列所有外 设寄存器的定义(寄存器的基地址和布局)、 位定义、中断向量表、存储空间的地址映射 等微控制器专用系统文件函数SystemInit ,用来初始化微控制器函数Sysem_ExtMemCtl用来配置外部存储器控制器。它位于文件/.c,在跳转到main 前调用SystemFrequncy,该值代表系统时钟频率编译器启动代码微控制器专用的中断处理程序列表(与头文 件一致)弱定义(Weak)的中断
9、处理程序默认函数(可 以被用户代码覆盖)该文件是与编译器相 关的固件库配置文件通过更改包含的外设头文件来选择固件库 所使用的外设,在新建程序和进行功能变更 之前应当首先修改对应的配置。外设中断函数文件用户可以相应的加入自己的中断程序的代 码,对于指向同一个中断向量的多个不同中 断请求,用户可以通过判断外设的中断标志 位来确定准确的中断源,执行相应的中断服 务函数。外设驱动函数文件包括了相关外设的初始化配置和部分功能 应用函数,这部分是进行编程功能实现的重 要组成部分。用户文件用户程序文件,通过标准外设库提供的接口 进行相应的外设配置和功能设计。2.基于CMSIS标准的软件架构根据调查研究,软件
10、开发已经被嵌入式行业公认为最主要的开发成本。对于ARM公司来说,一个ARM内核往往会授权给多个厂家,生产种类繁多的产品,如果没有一 个通用的软件接口标准,那么当开发者在使用不同厂家的芯片时将极大的增加了软件开发成本,因此, ARM与 Atmel、IAR、Keil、hami-nary Micro 、Micrium、NXR SEGGE和ST等诸多芯片和软件厂商合作,将所有Cortex芯片厂商产品的软件接口标准化,制定了 CMSIS标准。此举意在降低软件开发成本,尤其针对新设备项目开 发,或者将已有软件移植到其他芯片厂商提供的基于Cortex处理器的微控制器的情况。有了该标准,芯片厂商就能够将他们的
11、资源专注于产品外设特性的差异化,并且消除对微控制器进行编程时需要维持的不同的、互相不兼容的标准的需求,从而 达到降低开发成本的目的。如图5-5所示,基于CMSIS标准的软件架构主要分为以下 4层:用户应用层、操作 系统及中间件接口层、CMSIS层、硬件寄存器层。其中 CMSIS层起着承上启下的作 用:一方面该层对硬件寄存器层进行统一实现,屏蔽了不同厂商对Cortex-M系列微 处理器核内外设寄存器的不同定义;另一方面又向上层的操作系统及中间件接口层 和应用层提供接口,简化了应用程序开发难度,使开发人员能够在完全透明的情况 下进行应用程序开发。也正是如此,CMSIS层的实现相对复杂。图5-5 C
12、MSIS标准的软件架构层主要分为以下3个部分:(1) 核内外设访问层(CPAL Core Peripheral Access Layer ):该层由 ARM负责 实现。包括对寄存器名称、地址的定义,对核寄存器、NVIC调试子系统的访问接口定义以及对特殊用途寄存器的访问接口(例如:CONTROLxPSR定义。由于对特殊寄存器的访问以内联方式定义,所以针对不同的编译器ARM统一用来屏蔽差异。该层定义的接口函数均是可重入的。(2) 片上外设访问层(DPAL, Device Peripheral Access Layer ):该层由芯片厂 商负责实现。该层的实现与 CPAL类似,负责对硬件寄存器地址以
13、及外设访问接口进行定义。该层可调用 CPAL层提供的接口函数同时根据设备特性对异常向量表进 行扩展,以处理相应外设的中断请求。(3) 外设访问函数(AFP, Access Functions for Peripherals):该层也由芯片厂商负责实现,主要是提供访问片上外设的访问函数,这一部分是可选的。对一个Cortex-M微控制系统而言,CMSIS通过以上三个部分实现了:l定义了访问外设寄存器和异常向量的通用方法;l定义了核内外设的寄存器名称和核异常向量的名称;l为RTOS核定义了与设备独立的接口,包括Debug通道。这样芯片厂商就能专注于对其产品的外设特性进行差异化,并且消除他们对微控制
14、器进行编程时需要维持的不同的、互相不兼容的标准需求,以达到低成本开发的目的。 CMSIS中的具体文件结构如表5-6所示。表5-6 CMSIS文件夹结构CMSISCoreDocume ntati onCMSIS文档CM3StartupMDKARM编译器启arm动文件:大 容量 产品 启动 文件:中 容量 产品 启动 文件:小 容量 产品启动文件gcc_ride7GCC编译器启动文件iarIAR编译器启动文件TrueSTUDIOTrueSTUDIO 编译器启动文件本文件夹包含 STMFIOxxxCMSIS文件:微控制器外设 访问层和内核设备访问 层::CMSIS的 Cortex-M3 内核设备访问
15、层头文件:CMSIS的 Cortex-M3 内核 设备访问层源文件:CMSIS的 Cortex-M3 STM32f10xxx微控制器外 设访问层头文件:CMSIS的 Cortex-M3 STM32f10xxx微控制器外 设访问层头文件:CMSIS的 Cortex-M3 STM32f10xxx微控制器外 设访问层源文件在实际开发过程中,根据应用程序的需要,可以采取2种方法使用标准外设库(StdPeriph_Lib)(1) 使用外设驱动:这时应用程序开发基于外设驱动的API(应用编程接口)。用户只需要配置文件”,并使用相应的文件”.c ”即可。(2) 不使用外设驱动:这时应用程序开发基于外设的寄存
16、器结构和位定义文件。这两种方法的优缺点在“使用标准外设库开发的优势” 小节中已经有了具体的介绍, 这里仍要说明的是,使用使用标准外设库进行开发可以极大的减小软件开发的工作 量,也是目前嵌入式系统开发的一个趋势。标准外设库(StdPeriph_Lib)支持STM32F10xxx系列全部成员:大容量,中容量和小容量产品。从表5-6中也可以看出,启动文件已经对不同的系列进行了划分,实际 开发中根据使用的STM3旷品具体型号,用户可以通过文件” ”中的预处理define或者通过开发环境中的全局设置来配置标准外设库(StdPeriph_Lib),一个define对应一个产品系列。下面列出支持的产品系列S
17、TM32F10x_LD STM32小容量产品STM32F10x_MDSTM32 中容量产品STM32F10x_HD STM32大 容量产品在库文件中这些define的具体作用范围是:l文件“”中的中断IRQ定义l启动文件中的向量表,小容量,中容量,大容量产品各有一个启动文件l外设存储器映像和寄存器物理地址l产品设置:外部晶振(HSE)的值等l系统配置函数因此通过宏定义这种方式,可以使标准外设库适用于不同系列的产品,同时也方便 与不同产品之间的软件移植,极大的方便了软件的开发。STM32F10XXX标准外设库的使用标准外设库中包含了众多的变量定义和功能函数,如果不能了解他们的命名规范和使用规律将
18、会给编程带来很大的麻烦,本节将主要叙述标准外设库中的相关规范, 通过这些规范的学习可以更加灵活的使用固件库,同时也将极大增强程序的规范性和易读性,同时标准外设库中的这种规范也值得我们在进行其他相关的开发时使用 和借鉴。1.缩写定义标准外设库中的主要外设均采用了缩写的形式,通过这些缩写可以很容易的辨认对 应的外设。缩写外设/单元ADC模数转换器BKP备份寄存器CAN控制器局域网模块CECCRCCRC计算单元DAC数模转换器DBGMCU调试支持DMA直接内存存取控制器EXTI外部中断事件控制器FLASH闪存存储器FSMC灵活的静态存储器控制器GPIO通用输入输出I2CI2C 接口IWDG独立看门狗
19、PWR电源/功耗控制RCC复位与时钟控制器RTC实时时钟SDIOSDIO 接口SPI串行外设接口TIM定时器USART通用同步/异步收发器WWDG窗口看门狗2.命名规则标准外设库遵从以下命名规则PPP表示任一外设缩写,例如:ADC源程序文件和头文件命名都以“ stm32f10x_ ”作为开头,例如:。常量仅被应用于一个文件的, 定义于该文件中;被应用于多个文件的,在对应头文件中定义。所有常量都由英文 字母大写书写。寄存器作为常量处理。他们的命名都由英文字母大写书写。在大多 数情况下,他们采用与缩写规范一致。夕卜设函数的命名以该外设的缩写加下划线为 开头。每个单词的第一个字母都由英文字母大写书写
20、,例如:SPI_SendData在函数名中,只允许存在一个下划线,用以分隔外设缩写和函数名的其它部分。对于函 数命名,总的来说有以下规则:l名为PPP_Init的函数,其功能是根据PPP_InitTypeDef中指定的参数,初始化外 设PPP例如TIMnit.l名为PPP_Delnit的函数,其功能为复位外设 PPP的所有寄存器至缺省值,例如 TIM_Del nit.l名为PPP_Init的函数,其功能为通过设置 PPP_InitTypeDef结构中的各种参数 来定义外设的功能,例如:USARTnit .l名为PPP_Cm的函数,其功能为使能或者失能外设PPP例如:SPI_Cmd.l名为PPP
21、_ITConfig的函数,其功能为使能或者失能来自外设 PPP某中断源,例如:RCC_ITC onfig.l名为PPP_DMAConfig勺函数,其功能为使能或者失能外设 PPP的 DMA接口,例如: TIM1_DMACo nfig.l用以配置外设功能的函数,总是以字符串“Config ”结尾,例如GPIO_Pi nRemapCo nfig.l名为PPP_GetFlagStatus的函数,其功能为检查外设 PPP某标志位被设置与否,例如:l2C_GetFlagStatus.l名为PPP_ClearFlag的函数,其功能为清除外设 PPP标志位,例如:l2C_ClearFlag.l名为PPP_G
22、etITStatus的函数,其功能为判断来自外设PPP的中断发生与否,例如:l2C_GetlTStatus.l名为PPP_ClearITPendingBit的函数,其功能为清除外设PPP中断待处理标志位, 例如:I2C_ClearITPe ndin gBit.这样的命名方式非常便于程序的编写和阅读,以标准外设库中的示例函数为例,下 面摘录了中的一段程序。1 DMA_I ni tType Def DMA_I nitStructure;22 /* DMA1 channel1 configuration*/43 DMA_DeI ni t(DMA1_Cha nn el1);7 = ADC1_DR_Ad
23、dress;88 = (ui nt32_t )&ADC1C on vertedValue;109 = DMA_DIR_PeripheralSRC;1210 = 1;1411 = DMA_PeripheralI nc_Disable;1612 = DMA_MemoryI nc_Disable;1813 = DMA_PeripheralDataSize_HalfWord;2014 = DMA_MemoryDataSize_HalfWord;2215 = DMA_Mode_Circular;2416 = DMA_Priority_High;2617 = DMA_M2M_Disable;281
24、8 DMA_I nit(DMA1_Cha nn el1, & DMA_I ni tStructure);3019 /* En able DMA1 cha nn el1 */3220 DMA_Cmd(DMA1_Cha nn el1, ENABLE);这段程序完成了 DMA通道的配置,首先定义了 DMAnitType DMA_InitStructure , 接着配置DMA_InitType的各种参数,各参数的命名方式也均使用约定的命名方式, 从命名就能够很容易的看出各参数所指代的具体功能。功能参数配置完成后,使用 DMAnit(DMA1_Channell, &DMA_InitStr
25、ucture);完成相应外设的初始化,最后使 用DMA_Cmd(DMA1_Chann(SUABLE)使能相应外设。从这个例子就能够很容易的 看出标准外设库这种规范化的命名规则给编写和阅读程序带来的好处。3.变量定义在早期的版本中有24个变量定义,在Keil的安装根目录下,可以找到对应的定义,路径为:璧1 /* In eludes*/23 /* Exported types*/45 typedef signedlong s32;67 typedef signedshort s16;89 typedef signedchar s8;1011 typedef sig nedlong const sc
26、32; /* Read Only */1213 typedef sig nedshort const sc16;/* Read Only */1415 typedef sig ned1616 typedef volatile1817 typedef volatile2018 typedef volatile2219 typedef volatile2420 typedef volatile2621 typedef volatile2822 typedef un sig ned3023 typedef un sig ned3224 typedef un sig ned3425 typedef u
27、n sig ned3626 typedef un sig ned3827 typedef un sig nedchar const sc8; /* Read Only */signed long vs32;signed short vs16;sig ned char vs8;signed long const vsc32; /* Read Only */signed short const vsc16; /* Read Only */signed char const vsc8; /* Read Only */long u32;short u16;char u8;long const uc32
28、; /* Read Only */short const uc16; /* Read Only */char const uc8; /* Read Only */41 typedefvolatileun sig nedlong vu32;4243 typedefvolatileun sig nedshortvu16;4445 typedefvolatileun sig nedchar vu8;4647 typedefvolatileun sig nedlongconst vuc32; /* Read Only */4849 typedefvolatileun sig nedshortconst
29、 vuc16; /* Read Only */5051 typedefvolatileun sig nedcharconst vuc8; /* Read Only */以后的版本中使用了 CMSIS数据类型,变量的定义有所不同,但是出于兼容旧版本 的目的,以上的数据类型仍然兼容。CMSIS的 IO类型限定词如表5-7所示,CMSIS和STM32固件库的数据类型对比如表 5-8所示。这些数据类型可以在中找到具体的 定义,此部分定义如下。1 /*!< STM32F10x Sta ndard Peripheral Library old types (mai ntain ed forlegac
30、y purpose) */22 typedef int32_t s32;43 typedef int16_t s16;64 typedef int8_t s8;85 typedef const int32_t sc32;/*!< Read Only */106 typedef const in t16_t sc16;/*!< Read Only */127 typedef const int8_t sc8; /*!< Read Only */148 typedef _IO in t32_t vs32;169 typedef _IO in t16_t vs16;1810 typ
31、edef _IO in t8_t vs8;2011 typedef _I in t32_t vsc32;/*!< Read Only */2212 typedef _I in t16_t vsc16;/*!< Read Only */2413 typedef _I in t8_t vsc8;/*!< Read Only */2614 typedef uin t32_t u32;2815 typedef uin t16_t u16;3016 typedef uin t8_t u8;3217 typedef const uin t32_t uc32;/*!< Read On
32、ly */3418 typedef const ui nt16_t uc16;/*!< Read Only */3637 typedef const uin t8_t uc8; /*!< Read Only */3838 typedef _IO uin t32_t vu32;4039 typedef _IO ui nt16_t vu16;4240 typedef _IO uin t8_t vu8;4441 typedef _I ui nt32_t vuc32;/*!< Read Only */4642 typedef _I ui nt16_t vuc16;/*!< Re
33、ad Only */4843 typedef _I uin t8_t vuc8;/*!< Read Only */表5-7 CMSIS IO 类型限定词IO类限定词#defi ne描述volatile const只读访问_Ovolatile只写访问Ovolatile读和写访问表5-8固件库与CMSIS数据类型对比固件库类型CMSIS类型描述s32in t32_t易挥发只读有符号32位数据s16in t16_t易挥发只读有符号16位数据s8int8_t易挥发只读有符号8位数据sc32const in t32_t只读有符号32位数据sc16const in t16_t只读有符号16位数据sc
34、8const in t8_t只读有符号8位数据vs32O in t32_t易挥发读写访问有符号32位数据vs16O in t16_t易挥发读写访问有符号16位数据vs8O int8_t易挥发读写访问有符号8位数据vsc32in t32_t易挥发只读有符号32位数据vsc16in t16_t易挥发只读有符号16位数据vsc8int8_t易挥发只读有符号8位数据u32uin t32_t无符号32位数据u16uin t16_t无符号16位数据u8uin t8_t无符号8位数据uc32const uin t32_t只读无符号32位数据uc16const uin t16_t只读无符号16位数据uc8co
35、nst uin t8_t只读无符号8位数据vu32O uin t32_t易挥发读写访问无符号32位数据vu16O uin t16_t易挥发读写访问无符号16位数据vu8O uin t8_t易挥发读写访问无符号8位数据vuc32uin t32_t易挥发只读无符号32位数据vuc16uin t16_t易挥发只读无符号16位数据vuc8uin t8_t易挥发只读无符号8位数据文件中还包含了常用的布尔形变量定义,如:1 typedef en umRESET = 0, SET = !RESET FlagStatus, ITStatus;22 typedef enu mDISABLE = 0, ENABL
36、E = !DISABLE Fun ctio nalState;43 #define IS_FUNCTIONAL_STATE(STATE) (STATE) = DISABLE) | (STATE)=ENABLE)67 typedef enu mERROR = 0, SUCCESS = !ERROR ErrorStatus;不同版本的标准外设库的变量定义略有不同,如版本中就没有之前版本的TRUE和FALSE的定义,用户也可以根据自己的需求按照上面的格式定义自己的布尔形变量。 在使用标准外设库进行开发遇到相关的定义问题时应首先找到对应的头文件定义。前面几个小节已经详细介绍了标准外设库的组成结构以及部
37、分主要文件的功能描 述,那么如果在开发中使用标准外设库需要哪些描述呢下面就进行简要的介绍,这 儿介绍的使用方法是与开发环境无关的,在不同的开发环境中可能在操作方式上略 有不同,但是总体的流程都是一样的,下一小节将介绍在MDK ARI开发环境下使用标准外设库的详细过程。首先新建一个项目并设置工具链对应的启动文件,可以使用标准外设库中提供的模 板,也可以自己根据自己的需求新建。标准外设库中已经提供了不同工具链对应的 文件,位于目录下。其次按照使用产品的具体型号选择具体的启动文件,加入工程。文件主要按照使用 产品的容量进行区分,根据产品容量进行选择即可。每个文件的具体含义可以在 “”文件中找到对应的
38、说明,摘录如下:1 #if !defined (STM32F10X_LD&&!defined (STM32F10X_LD_VL&&!defined(STM32F10X_MD& & !defi ned (STM32F10X_MD_VL& & !defi ned (STM32F10X_HD)&& !defi ned (STM32F10X_HD_VL) && !defi ned (STM32F10X_XL) && !defi ned (STM32F10X_CL)22 /* #define
39、STM32F10X_LD /*!< STM32F10X_LDS TM32Lowdensity devices*/43 /* #define STM32F10X_LD_VL /*!< STM32F10X_LD_VLS TM32Low densityValue Line devices */64 /* #define STM32F10X_MD */*!< STM32F10X_MD: STM32 Medium densitydevices */89 /* #define STM32F10X_MD_VL */ /*!< STM32F10X_MD_VL: STM32 Medium
40、density Value Line devices */ /* #define STM32F10X_HD /*!< STM32F10X_HD:STM32 High den sity devices */1011/*#define STM32F10X_HD_VL /*!< STM32F10X_HD_VSTM32High densityvalue line devices */1213/* #define STM32F10X_XL /*!< STM32F10X_XLSTM32XL-density devices*/1415/* #define STM32F10X_C*/ /*!
41、< STM32F10X_CLSTM32Connectivity linedevices */1617 #endif1819/* Tip: To avoid modifying this file each time you need to switch betweenthese2021 devices, you can defi ne the device in your toolcha in compilerpreprocessor.2222 - Low-density devices are STM32F101xx, STM32F102xx and STM32F103xxmicroc
42、 on trollers2423 where the Flash memory density ranges between 16 and 32 Kbytes.2624 - Low-density value line devices are STM32F100xx microcontrollerswhere the Flash25 29 memory density ranges between 16 and 32 Kbytes.3031 - Medium-density devices are STM32F101xx,STM32F102x>and STM32F103xx microc
43、 on trollers3232 where the Flash memory density ranges between 64 and 128 Kbytes.3433 - Medium-density value line devices are STM32F100xx microcontrollerswhere the3634 Flash memory density ranges between 64 and 128 Kbytes.3835 - High-density devices are STM32F101xx and STM32F103xxmicroc on trollers
44、where4036 the Flash memory den sity ran ges betwee n 256 and 512 Kbytes.4237 - High-density value line devices are STM32F100xx microcontrollerswhere the4438 Flash memory density ranges between 256 and 512 Kbytes.4639 - XL-density devices are STM32F101xxnd STM32F103xxmicrocontrollerswhere4840 the Fla
45、sh memory density ranges between 512 and 1024 Kbytes.5041 - Conn ectivity line devices are STM32F105xx and STM32F107xxmicroco ntrollers.5242 */%“”是整个标准外设库的入口文件,这个文件包含了STM32F10x全系列所有外设寄存器的定义(寄存器的基地址和布局)、位定义、中断向量表、存储空间的地址映 射等。为了是这个文件适用于不同系列的产品,程序中是通过宏定义来实现不同产 品的匹配的,上面这段程序的注释中已经详细给出了每个启动文件所对应的产品系 列,与之对
46、应,也要相应的修改这个入口文件,需要根据所使用的产品系列正确的 注释/去掉相应的注释define。在这段程序的下方同样有这样的一个注释程序/*#defi ne USE_STDPERIPH_DRIVER*/用于选择是否使用标准外设库,如果保留这 个注释,则用户开发程序可以基于直接访问“”中定义的外设寄存器,所有的操作 均基于寄存器完成,目前不使用固件库的单片机开发,如51、AVR MSP43C等其实都是采用此种方式,通过在对应型号的头文件中进行外设寄存器等方面的定义,从 而在程序中对相应的寄存器操作完成相应的功能设计。如果去掉/*#define USE_STDPERIPH_DRIVER*注释,则是使用标准外设库进行开 发,用户需要使用在文件“”中,选择要用的外设,外设同样是通过注释/去掉注释的方式来选择。示例程序如下:1 /* Uncommenthe line below to enable peripheral header file inclusion*/22 #include ""43 /* #include "" */67
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烧碱盐水工诚信测试考核试卷含答案
- 工业气体液化工成果强化考核试卷含答案
- 腐蚀控制工操作水平测试考核试卷含答案
- 丁苯橡胶装置操作工冲突管理水平考核试卷含答案
- 低压成套设备装配配线工岗位工艺分析考核试卷含答案
- 模型制作工岗前事故预防考核试卷含答案
- 露天采矿单斗铲司机岗位评优竞赛考核试卷含答案
- 整模脱模工岗前实践理论考核试卷含答案
- 化工结晶工岗位安全责任制考核试卷含答案
- 电力电容器卷制工岗前安全文化考核试卷含答案
- 税收征收管理法 课件
- JJF 2256-2025体重秤校准规范
- 双百社工培训课件
- 本科专业申报汇报
- DB3717T 14-2023 芍药鲜切花促成栽培生产技术规程
- 创业园区入驻指南
- 个人简历模板(5套完整版)
- 江苏省苏州市2023-2024学年高一年级上册期中数学试题
- 2024年国航股份地面服务部招聘笔试参考题库附带答案详解
- 海信入职在线测评题库
- 集装箱七点检查表
评论
0/150
提交评论