好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

STM32固件库详解.doc

14页
  • 卖家[上传人]:s9****2
  • 文档编号:547064481
  • 上传时间:2023-12-26
  • 文档格式:DOC
  • 文档大小:276KB
  • / 14 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 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版本标准外设库的文件结构,如图 53所示3.0以上版本的文件结构大致相同,每个版本可能略有调整图 53 STM32F10XXX V3.4标准外设库文件结构表 54中介绍了每个文件夹所包含的主要内容表 54 STM32F10XXX V3.4标准外设库文件夹描述STM32F10x_StdPeriph_Lib_V3.4.0_htmresc本文件夹包含了所有的html页面资源LibrariesCMSIS见表 56STM32F10x_StdPeriph_Driverinc标准外设库驱动头文件src标准外设库驱动源文件ProjectExamples标准外设库驱动的完整例程TemplateMDK-ARMKEIL RVMDK的项目模板示例RIDERaisonance RIDE的项目模板示例EWARMIAR EWARM的项目模板示例UtilitiesSTM3210-EVAL本文件夹包含了用于STM3210B-EVAL和STM3210E-EVAL评估板的专用驱动标准外设库的第一部分是CMSIS 和STM32F10x_StdPeriph_Driver,CMSIS 是独立于供应商的Cortex-M 处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简单的处理器软件接口,简化了软件复用工作,降低了Cortex-M 上操作系统的移植难度,并减少了新入门的微控制器开发者的学习曲线和新产品的上市时间。

      STM32F10x_StdPeriph_Driver则包括了分别对应包括了所有外设对应驱动函数,这些驱动函数均使用C语言编写,并提供了统一的易于调用的函数接口,供开发者使用Project文件夹中则包括了ST官方的所有例程和基于不同编译器的项目模板,这些例程是学习和使用STM32的重要参考Utilities包含了相关评估板的示例程序和驱动函数,供使用官方评估板的开发者使用,很多驱动函数同样可以作为学习的重要参考STM32F10xxx标准外设库体系结构如图 54所示图中很好的展示了各层以及具体文件之间的联系,各文件的具体功能说明如表 55所示图 54 STM32F10xxx标准外设库体系结构表 55 文件功能说明文件名功能描述具体功能说明core_cm3.hcore_cm3.cCortex-M3内核及其设备文件访问Cortex-M3内核及其设备:NVIC,SysTick等访问Cortex-M3的CPU寄存器和内核外设的函数stm32f10x.h微控制器专用头文件这个文件包含了STM32F10x全系列所有外设寄存器的定义(寄存器的基地址和布局)、位定义、中断向量表、存储空间的地址映射等system_stm32f10x.hsystem_stm32f10x.c微控制器专用系统文件函数SystemInit,用来初始化微控制器函数Sysem_ExtMemCtl,用来配置外部存储器控制器。

      它位于文件startup_stm32f10x_xx.s /.c,在跳转到main前调用SystemFrequncy,该值代表系统时钟频率startup_stm32f10x_Xd.s编译器启动代码微控制器专用的中断处理程序列表(与头文件一致)弱定义(Weak)的中断处理程序默认函数(可以被用户代码覆盖) 该文件是与编译器相关的stm32f10x_conf.h固件库配置文件通过更改包含的外设头文件来选择固件库所使用的外设,在新建程序和进行功能变更之前应当首先修改对应的配置stm32f10x_it.hstm32f10x_it.c外设中断函数文件用户可以相应的加入自己的中断程序的代码,对于指向同一个中断向量的多个不同中断请求,用户可以通过判断外设的中断标志位来确定准确的中断源,执行相应的中断服务函数stm32f10x_ppp.hstm32f10x_ppp.c外设驱动函数文件包括了相关外设的初始化配置和部分功能应用函数,这部分是进行编程功能实现的重要组成部分Application.c用户文件用户程序文件,通过标准外设库提供的接口进行相应的外设配置和功能设计2. 基于CMSIS标准的软件架构根据调查研究,软件开发已经被嵌入式行业公认为最主要的开发成本。

      对于ARM公司来说,一个ARM内核往往会授权给多个厂家,生产种类繁多的产品,如果没有一个通用的软件接口标准,那么当开发者在使用不同厂家的芯片时将极大的增加了软件开发成本,因此,ARM与Atmel、IAR、Keil、hami-nary Micro、Micrium、NXP、SEGGER和ST等诸多芯片和软件厂商合作,将所有Cortex芯片厂商产品的软件接口标准化,制定了CMSIS标准此举意在降低软件开发成本,尤其针对新设备项目开发,或者将已有软件移植到其他芯片厂商提供的基于Cortex处理器的微控制器的情况有了该标准,芯片厂商就能够将他们的资源专注于产品外设特性的差异化,并且消除对微控制器进行编程时需要维持的不同的、互相不兼容的标准的需求,从而达到降低开发成本的目的如图 55所示,基于CMSIS标准的软件架构主要分为以下4层:用户应用层、操作系统及中间件接口层、CMSIS层、硬件寄存器层其中CMSIS层起着承上启下的作用:一方面该层对硬件寄存器层进行统一实现,屏蔽了不同厂商对Cortex-M系列微处理器核内外设寄存器的不同定义;另一方面又向上层的操作系统及中间件接口层和应用层提供接口,简化了应用程序开发难度,使开发人员能够在完全透明的情况下进行应用程序开发。

      也正是如此,CMSIS层的实现相对复杂图 55 CMSIS标准的软件架构层主要分为以下3 个部分:(1) 核内外设访问层(CPAL,Core Peripheral Access Layer):该层由ARM 负责实现包括对寄存器名称、地址的定义,对核寄存器、NVIC、调试子系统的访问接口定义以及对特殊用途寄存器的访问接口(例如:CONTROL,xPSR)定义由于对特殊寄存器的访问以内联方式定义,所以针对不同的编译器ARM 统一用来屏蔽差异该层定义的接口函数均是可重入的2) 片上外设访问层(DPAL, Device Peripheral Access Layer):该层由芯片厂商负责实现该层的实现与CPAL 类似,负责对硬件寄存器地址以及外设访问接口进行定义该层可调用CPAL 层提供的接口函数同时根据设备特性对异常向量表进行扩展,以处理相应外设的中断请求3) 外设访问函数(AFP, Access Functions for Peripherals):该层也由芯片厂商负责实现,主要是提供访问片上外设的访问函数,这一部分是可选的对一个Cortex-M 微控制系统而言,CMSIS 通过以上三个部分实现了:l 定义了访问外设寄存器和异常向量的通用方法;l 定义了核内外设的寄存器名称和核异常向量的名称;l 为RTOS 核定义了与设备独立的接口,包括Debug 通道。

      这样芯片厂商就能专注于对其产品的外设特性进行差异化,并且消除他们对微控制器进行编程时需要维持的不同的、互相不兼容的标准需求,以达到低成本开发的目的CMSIS中的具体文件结构如表 56所示表 56 CMSIS文件夹结构CMSISCoreDocumentationCMSIS文档CM3StartuparmMDK ARM编译器启动文件startup_stm32f10x_hd.s: 大容量产品启动文件startup_stm32f10x_md.s: 中容量产品启动文件startup_stm32f10x_ld.s: 小容量产品启动文件gcc_ride7GCC编译器启动文件iarIAR编译器启动文件TrueSTUDIOTrueSTUDIO编译器启动文件本文件夹包含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微控制器外设访问层源文件在实际开发过程中,根据应用程序的需要,可以采取2种方法使用标准外设库(StdPeriph_Lib):(1) 使用外设驱动:这时应用程序开发基于外设驱动的API(应用编程接口)。

      用户只需要配置文件”s。

      点击阅读更多内容
      相关文档
      礼仪讲授教案.docx 高考语文一轮复习讲义 第5部分 传统文化阅读·名句名篇默写.docx 高考语文一轮复习讲义 第11部分 写作 任务组五 微任务 作文书写——比天还大的事儿.docx 高考语文一轮复习讲义 第4部分 传统文化阅读 古诗词 任务组二 真题研练.docx 高考语文一轮复习讲义 第3部分 传统文化阅读 文言文(考点部分) 任务组三 任务四 仔细比对准确提取概括分析文意.docx 高考语文一轮复习讲义 第1部分 语言策略与技能 任务组二 任务五 看准对象因境设辞做到语言得体.docx 高考化学 1.传统文化与STSE 答案解析.docx 高考语文一轮复习讲义现代文阅读 专题16 Ⅱ 真题研练.docx 高考化学 专项拔高抢分练 9.反应热与反应历程.docx 高考化学 专项拔高抢分练 1.传统文化与STSE.docx 高考物理 板块三  气体实验定律和热力学定律的综合应用.docx 高考化学 二题型3 无机化工生产流程题.docx 高考语文一轮复习讲义 第4部分 写作 专题17 Ⅲ 突破二 绘声绘色巧用细节描写生动丰满.docx 高考数学 中档大题练1.docx 高考语文一轮复习讲义 第5部分 教材文言文点线面教材文言文复习综合试卷.docx 高考语文一轮复习讲义 第4部分 传统文化阅读 古诗词 任务组三 微任务一 聚焦诗意准确选择.docx 高考数学 创新融合4 数列与导数.docx 高考语文一轮复习讲义 第5部分 教材文言文点线面 教材文言文点线面 必修5课文1 归去来兮辞 并序.docx 高考语文一轮复习讲义 第11部分 写作 任务组五 任务二 “三管”齐下美“言”有术文采抢眼养颜.docx 高考数学 满分案例三 立体几何.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.