您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 5--STM32固件库详解
STM32固件库详解STM32标准外设库概述•STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API(applicationprogramminginterface应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。•ST公司2007年10月发布了V1.0版本的固件库,MDKARM3.22之前的版本均支持该库。2008年6月发布了V2.0版的固件库,从2008年9月推出的MDKARM3.23版本至今均使用V2.0版本的固件库。V3.0以后的版本相对之前的版本改动较大,本书使用目前较新的V3.4版本。使用标准外设库开发的优势•使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解底层硬件细节就可以灵活规范的使用每一个外设。标准外设库覆盖了从GPIO到定时器,再到CAN、I2C、SPI、UART和ADC等等的所有标准外设。对应的C源代码只是用了最基本的C编程的知识,所有代码经过严格测试,易于理解和使用,并且配有完整的文档,非常方便进行二次开发和应用。标准外设库的文件结构Project:标准外设库驱动实例STM32F10x_StdPeriph_Driver标准外设库驱动Utilities:包含了用于STM32-EVAL评估板的专用驱动CMSIS是独立于供应商的Cortex-M处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简单的处理器软件接口STM32F10x_StdPeriph_Driver则包括了分别对应包括了所有外设对应驱动函数标准外设库文件夹描述STM32F10x_StdPeriph_Lib_V3.4.0_htmresc本文件夹包含了所有的html页面资源LibrariesCMSISSTM32F10x_StdPeriph_Driverinc标准外设库驱动头文件src标准外设库驱动源文件ProjectExamples标准外设库驱动的完整例程Template标准外设库驱动的工程模板标准外设库体系结构标准外设库体系结构•core_cm4.h文件位于\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Include目录下面的,这个就是CMSIS核心文件,提供进入M4内核接口,这是ARM公司提供,对所有CM4内核的芯片都一样。你永远都不需要修改这个文件,所以这里我们就点到为止。•stm32f4xx.h和system_stm32f4xx.h文件存放在文件夹•\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include下面。•system_stm32f4xx.h是片上外设接入层系统头文件。主要是申明设置系统及总线时钟相关的函数。与其对应的源文件system_stm32f4xx.c在目录•\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates可以找到。这个里面有一个非常重要的SystemInit()函数申明,这个函数在我们系统启动的时候都会调用,用来设置系统的整个系统和总线时钟。标准外设库体系结构•stm32f4xx.h是STM32F4片上外设访问层头文件。这个文件就相当重要了,只要你做STM32F4开发,你几乎时刻都要查看这个文件相关的定义。这个文件打开可以看到,里面非常多的结构体以及宏定义。这个文件里面主要是系统寄存器定义申明以及包装内存操作。同时该文件还包含了一些时钟相关的定义,FPU和MPU单元开启定义,中断相关定义等等。••stm32f4xx_it.c,stm32f4xx_it.h以及stm32f4xx_conf.h等文件,我们可以从\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates文件夹中找到。这几个文件我们后面新建工程也有用到。stm32f4xx_it.c和stm32f4xx_it.h里面是用来编写中断服务函数,中断服务函数也可以随意编写在工程里面的任意一个文件里面。•stm32f4xx_conf.h是外设驱动配置文件。文件打开可以看到一堆的#include,这里你建立工程的时候,可以注释掉一些你不用的外设头文件。标准外设库体系结构•misc.c,misc.h,stm32f4xx_ppp.c,stm32f4xx_ppp.h以及stm32f4xx_rcc.c和tm32f4xx_rcc.h文件,这些文件存放在目录Libraries\STM32F4xx_StdPeriph_Driver。这些文件是STM32F4标准的外设库文件。其中misc.c和misc.h是定义中断优先级分组以及Systick定时器相关的函数。•stm32f3xx_rcc.c和stm32f4xx_rcc.h是与RCC相关的一些操作函数,作用主要是一些时钟的配置和使能。在任何一个STM32工程RCC相关的源文件和头文件是必须添加的。•对于文件stm32f4xx_ppp.c和stm32f4xx_ppp.h,这就是stm32F4标准外设固件库对应的源文件和头文件。包括一些常用外设GPIO,ADC,USART等。•文件Application.c实际就是说是应用层代码。这个文件名称可以任意取了。我们工程中,直接取名为main.c。CMSIS标准软件架构CMSIS是独立于供应商的Cortex-M处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简单的处理器软件接口,简化了软件复用工作,降低了Cortex-M上操作系统的移植难度,并减少了新入门的微控制器开发者的学习曲线和新产品的上市时间CMSIS分为3个基本功能层:1)核内外设访问层:ARM公司提供的访问,定义处理器内部寄存器地址以及功能函数。2)中间件访问层:定义访问中间件的通用API。由ARM提供,芯片厂商根据需要更新。3)外设访问层:定义硬件寄存器的地址以及外设的访问函数。库文件介绍MDK5•MDK源自德国的KEIL公司,是RealViewMDK的简称。在全球MDK被超过10万的嵌入式开发工程师使用。目前最新版本为:MDK5.10,该版本使用uVision5IDE集成开发环境,是目前针对ARM处理器,尤其是CortexM内核处理器的最佳开发工具。••MDK5向后兼容MDK4和MDK3等,以前的项目同样可以在MDK5上进行开发(但是头文件方面得全部自己添加),MDK5同时加强了针对Cortex-M微控制器开发的支持,并且对传统的开发模式和界面进行升级,MDK5由两个部分组成:MDKCore和SoftwarePacks。其中,SoftwarePacks可以独立于工具链进行新芯片支持和中间库的升级。•MDKCore又分成四个部分:uVisionIDEwithEditor(编辑器),ARMC/C++Compiler(编译器),PackInstaller(包安装器),uVisionDebuggerwithTrace(调试跟踪器)。uVisionIDE从MDK4.7版本开始就加入了代码提示功能和语法动态检测等实用功能,相对于以往的IDE改进很大。••SoftwarePacks(包安装器)又分为:Device(芯片支持),CMSIS(ARMCortex微控制器软件接口标准)和Mdidleware(中间库)三个小部分,通过包安装器,我们可以安装最新的组件,从而支持新的器件、提供新的设备驱动库以及最新例程等,加速产品开发进度。新建基于固件库的工程模板•1)在建立工程之前,我们建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工•程都可以放在这个文件夹下面,这里我们建立一个文件夹为Template。这是工程的根目录文件夹。然后为了方便我们存放工程需要的一些其他文件,这里我们还新建下面子文件夹USER。至于这些文件夹名字,实际上是可以任取的,我们这样取名只是为了方便识别。•2)打开Keil,点击Keil的菜单:Project–NewUvisionProject,然后将目录定位到刚才建立的文件夹Template之下的USER子目录,同时,工程取名为Template之后点击保存,我们的工程文件就都保存到USER文件夹下面。•3)接下来会出现一个选择Device的界面,就是选择我们的芯片型号,这里我们定位到•STMicroelectronics下面的STM32F103ZE。这里我们选择STMicroelectronicsSTM32F4SeriesSTM32F103STM32F103ZE(如果使用的是其他系列的芯片,选择相应的型号就可以了。特别注意:一定要安装对应的器件pack才会显示这些内容)。•点击OK,MDK会弹出ManageRun-TimeEnvironment对话框•这是MDK5新增的一个功能,在这个界面,我们可以添加自己需要的组件,从而方便构建开发环境,不过这里我们不做介绍。我们直接点击Cancel,即可•4)到这里,我们只是建了一个框架,还需要添加启动代码以及.c文件等。现在我们可以看到USER目录下面包含2个文件夹和2个文件Template.uvprojx是工程文件,非常关键,不能轻易删除Listings和Objects文件夹是MDK自动生成的文件夹,用于存放编译过程中产生的中间文件。删除这两个文件夹(我们会在下一步骤中新建一个OBJ文件夹用来存放编译中间文件;当然不删除这两个文件夹也没有关系)•5)接下来,在Template工程目录下新建3个文件夹CORE、OBJ以及STM32F10x_FWLib。–CORE用来存放核心文件和启动文件–OBJ用来存放编译过程文件以及hex文件–STM32F10x_FWLib用来存放ST官方提供的库函数源码文件–已有的USER除了用来存放工程文件以外还用来存放主函数文件main.c和system_stm32f10x.c等•6)下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。打开官方固件库包,定位到我们之前准备好的固件库包的目录:•\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下面,将目录下面的src,inc文件夹copy到我们刚才建立的STM32F10x_FWLib文件夹下面。src中存放的是固件库的.c文件,inc存放的是固件库的.h文件•7)下面我们要将固件库包里面相关的启动文件复制到我们的工程目录CORE之下。打开官方固件库包,定位到目录•\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下面,将文件startup_stm32f10x_hd.s复制到CORE目录下面。然后定位到目录\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport,将里面的头文件core_cm3.h和core_cm3.h同样复制到CORE目录下面。–现在CORE文件夹下包含:startup_stm32f10x_hd.s,core_cm3.c,core_cm3.h•8)定位到\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32
本文标题:5--STM32固件库详解
链接地址:https://www.777doc.com/doc-2860240 .html