第7章 CMSIS架构与STM32标准外设库
- 格式:ppt
- 大小:1.36 MB
- 文档页数:26
1CMSIS标准ARM公司于2008年11月12日发布了ARM Cortex微控制器软件接口标准CMSIS 1.0。
CMSIS是独立于供应商的Cortex-M处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简单的处理器软件接口,简化了软件复用工作,降低了Cortex-M上操作系统的移植难度,并减少了新入门的微控制器开发者的学习曲线和新产品的上市时间。
根据近期的调查研究,软件开发已经被嵌入式行业公认为最主要的开发成本,图4-1为近年来软件开发与硬件开发花费对比图。
因此,ARM与Atmel、IAR、KEIL、Luminary Micro、Micrium、NXP、SEGGER和ST等诸多芯片和软件工具厂商合作,将所有Cortex芯片厂商的产品的软件接口标准化,制定了CMSIS标准。
此举意在降低软件开发成本,尤其针对进行新设备项目开发或将已有的软件移植到其他芯片厂商提供的基于Cortex处理器的微控制器的情况。
有了该标准,芯片厂商就能够将他们的资源专注于对其产品的外设特性进行差异化,并且能够消除对微控制器进行编程时需要维持的不同的、互相不兼容的标准的需求,从而达到降低开发成本的目的。
如图1软件与硬件开发成本对比图CMSIS的现有标准是CMSIS 2.0,与之前的版本有了一些新的变化。
CMSIS 2.0标准包含Cortex-M0、Cortex-M3、Cortex-M4以及SVD(System View Description)这四部分。
目前,各芯片厂商也还没有都推出各自基于CMSIS标准的完整BSP包。
但未来的Cortex-M处理器应用将统一在CMSIS的标准之下是一个不可避免的趋势。
本节将以STM32F10x处理器为对象,介绍CMSIS 2.0标准的Cortex-M3部分。
4.1.1基于CMSIS标准的软件架构基于CMSIS 2.0标准的软件架构如图4-2所示。
与CMSIS 1.x版本相比,CMSIS 2.0去除了中间层,增加了一个可选的外设访问函数(Access Functions for Peripherals)。
stm32标准外设库使用详解分类:stm32 2011-07-17 10:57 2233人阅读评论(11) 收藏举报转载请注明出处:/lbl1234下载代码stm32标准外设库是stm32全系列芯片的外设驱动,有了它可以大大加速我们开发stm32。
首先从st公司的网站下载最新的stm32标准外设库,写本文时最新的版本是V3.5.0。
解压该zip文件,得到如下文件夹和文件STM32F10x_StdPeriph_Lib_V3.5.0\_htmrescLibrariesProjectUtilitiesRelease_Notes.htmlstm32f10x_stdperiph_lib_um.chm其中Libraries包含库的源代码,Project包含stm32各个外设的使用范例和一个工程模板,Utilities是使用st公司评估板的例子,stm32f10x_stdperiph_lib_um.chm教我们怎么用标准外设库。
工程目录结构既然准备使用32位单片机,应该是个不小项目,因此工程目录也应该做个规划。
这里我推荐一下我所使用的目录结构。
假设工程名字叫template,建一个名为template的文件夹,该目录下有个3个固定文件夹doc,src,include,doc用来存放工程相关的资料文件,src放源代码,在src下每个功能模块一个文件夹,include放各个模块都要使用的公共头文件。
output放编译输出文件,内含两个子文件夹obj和list。
template\docsrcincludeoutput\obj\list整理库代码由于Libraries下的CMSIS文件夹中很多代码是和编译器及芯片相关的,导致文件夹多且深度大,不利于工程维护,实际上一个项目往往是用固定的编译器和芯片,因此有必要对库进行整理。
在src下建立libstm32目录1. 把Libraries\STM32F10x_StdPeriph_Driver\下的内容拷贝到libstm32目录下2. 在libstm32目录下建立cmsis文件夹,把Libraries\CMSIS\CM3\CoreSupport\下的core_cm3.c,core_cm3.h;Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\下的stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h拷贝到cmsis文件夹中。
一、标准固件库简介本文下载的是STM32F4xx_DSP_StdPeriph_Lib_V1.5.0,其文件夹如下图所示:其中Project文件夹为各个开发环境(MDK-ARM、EWARM、TrueSTUDIO)的模板工程,Utilities文件夹为官方评估板的标准固件库应用例程,而真正的标准固件库在Libraries文件夹中。
在Libraries文件夹中:CMSIS文件夹主要包含于内核相关的文件;STM32F4xx_StdPeriph_Driver文件夹为STM32F4xx处理器外设相关的底层驱动。
以下为固件库移植时CMSIS文件夹中的重要源文件:core_cm4.h :内核功能的定义,比如NVIC相关寄存器的结构体和Systick配置。
在CMSIS/Include中core_cmFunc.h :内核核心功能接口头文件。
在CMSIS/Include中core_cmInstr.h :包含一些内核核心专用指令。
在CMSIS/Include中core_cmSimd.h :包含与编译器相关的处理。
在CMSIS/Include中stm32f4xx.h :包含了stm32f4的寄存器结构体的定义(类似于c51的reg52.h)。
在CMSIS\Device\ST\STM32F4xx\Include中system_stm32f4xx.h :system_stm32f4xx.c的头文件。
在CMSIS\Device\ST\STM32F4xx\Include中system_stm32f4xx.c :stm32f4的系统时钟配置。
在CMSIS\Device\ST\STM32F4xx\Source\Templates中startup_stm32f40_41xxx.s:启动文件:设定SP的初始值;设置PC的初始值;设置中断向量表的地址;配置时钟;设置堆栈;调用main。
这个启动文件先调用system_stm32f4xx.c里面的systeminit()在调用main()之前。
STM32固件库详解.blogs./emouse/archive/2011/11/29/2268441.html1.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 使用标准外设库开发的优势简单的说,使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解底层硬件细节就可以灵活规X的使用每一个外设。
标准外设库覆盖了从GPIO到定时器,再到CAN、I2C、SPI、UART和ADC等等的所有标准外设。
对应的C源代码只是用了最基本的C编程的知识,所有代码经过严格测试,易于理解和使用,并且配有完整的文档,非常方便进行二次开发和应用。
1.1.3 STM32F10XXX标准外设库结构与文件描述1. 标准外设库的文件结构在上一小节中已经介绍了使用标准外设库的开发的优势,因此对标准外设库的熟悉程度直接影响到程序的编写,下面让我们来认识一下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等等的所有标准外设。
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版本为基础介绍标准外设库的结构。
1、文件夹介绍网上下载STM32F4xx_DSP_StdPeriph_Lib_V1.4.0,其中Libraries文件夹下面就是固件库相关程序文件。
包括CMSIS和STM32F4xx_StdPeriph_Driver 文件夹CMSISCMSIS文件夹存放的是符合CMSIS规范的一些文件。
STM32F4xx_StdPeriph_Driver存放的是STM32F4xx标准外设固件库源码文件和对应的头文件。
1)main主程序中引用:stm32f4xx.h 头文件。
stm32f4xx.h 是 STM32F4 片上外设访问层头文件。
非常重要。
2)stm32f4xx.h中引用:<stdint.h> 、system_stm32f4xx.h、core_cm4.h、stm32f4xx_conf.h3)system_stm32f4xx.h 是片上外设接入层系统头文件。
主要是申明设置系统及总线时钟相关的函数。
4)core_cm4.h 文件,这个就是 CMSIS 核心文件,提供进入 M4 内核接口,这是 ARM 公司提供,对所有CM4 内核的芯片都一样。
5)stm32f4xx_conf.h 是外设驱动配置文件。
包括misc.h、stm32f4xx_rcc.h和各种外设头文件stm32f4xx_ppp.h6)misc.c 和 misc.h 是定义中断优先级分组以及 Systick 定时器相关的函数。
7)stm32f3xx_rcc.c 和 stm32f4xx_rcc.h 是与 RCC 相关的一些操作函数,作用主要是一些时钟的配置和使能。
在任何一个 STM32 工程 RCC 相关的源文件和头文件是必须添加的。
8)对于文件 stm32f4xx_ppp.c 和 stm32f4xx_ppp.h,这就是 stm32F4 标准外设固件库对应的源文件和头文件。
包括一些常用外设 GPIO,ADC,USART 等。
9)文件 Application.c 实际就是说是应用层代码。
STM32固件库详解1.1 基于标准外设库的软件开发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以上版本的文件结构大致相同,每个版本可能略有调整。
标准外设库的第一部分是CMSIS 和STM32F10x_StdPeriph_Driver,CMSIS 是独立于供应商的Cortex-M 处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简单的处理器软件接口,简化了软件复用工作,降低了Cortex-M 上操作系统的移植难度,并减少了新入门的微控制器开发者的学习曲线和新产品的上市时间。
STM32F10x_StdPeriph_Driver则包括了分别对应包括了所有外设对应驱动函数,这些驱动函数均使用C语言编写,并提供了统一的易于调用的函数接口,供开发者使用。
Project文件夹中则包括了ST官方的所有例程和基于不同编译器的项目模板,这些例程是学习和使用STM32的重要参考。
stm32代码架构
STM32代码架构包括底层驱动(如CMSIS、HAL、LL)、中间件(如FreeRTOS、lwIP、USB)、应用程序和用户代码。
每个部分都有不同的作用和功能,其结构和互动方式可能因应用的不同而有所不同。
底层驱动是和芯片硬件相关的代码,其目的是实现对硬件的底层控制和访问。
这些驱动通常由芯片厂商提供,其中CMSIS是对Cortex-M处理器核的系统架构的一种规范。
HAL(Hardware Abstraction Layer)是一个向上抽象的程序库,用于简化程序员对硬件的访问。
LL (Low Layer)是一个更底层的库,提供直接控制硬件的API。
中间件是位于底层驱动和应用程序之间的软件层。
它提供一些常见的功能,如操作系统、网络协议、USB、文件系统等。
常用的中间件包括FreeRTOS(实时操作系统)、lwIP(TCP/IP协议栈)、FATFS (文件系统)等。
应用程序是使用MCU来完成特定任务的代码,从底层驱动和中间件中获取必要的功能,完成特定的控制逻辑,如数据采集、控制执行等。
用户代码是在应用程序的基础上开发的代码,用于实现特定功能或者增加其他功能的代码块。
其中包括对其它模块的功能调用、算法的实现以及外设的服务等。
综上所述,STM32的代码架构包括了硬件驱动、中间件、应用程序和用户代码等多个层次。
可以根据不同应用的需求来选择合适的代码框架。
stm32标准外设库下载STM32标准外设库下载。
STM32标准外设库是ST公司为其STM32系列微控制器提供的一套完整的外设驱动库,它包含了丰富的外设驱动函数和示例代码,为开发者提供了便捷的开发工具。
本文将介绍如何下载STM32标准外设库,并简要说明其使用方法。
首先,我们需要前往ST官网的下载页面,找到STM32标准外设库的下载链接。
在搜索框中输入“STM32标准外设库”,即可找到相关的下载页面。
在下载页面中,我们可以选择所需的外设库版本和相应的开发工具,比如MDK、IAR等。
选择好版本和开发工具后,点击下载按钮即可开始下载。
下载完成后,我们需要解压下载的压缩包。
解压后,我们可以看到一个名为“STM32F10x_StdPeriph_Lib_V3.x.x”的文件夹,这就是我们需要的标准外设库文件夹。
接下来,我们将这个文件夹复制到我们的工程目录下,以便后续使用。
在工程中使用STM32标准外设库时,我们需要在工程中包含相应的头文件,并链接外设库的源文件。
以MDK为例,我们需要在工程设置中添加外设库的路径,并在编译选项中添加外设库的源文件。
这样,我们就可以在工程中使用STM32标准外设库提供的函数和示例代码了。
在使用STM32标准外设库时,我们可以通过查阅外设库的官方文档来了解每个外设的具体功能和使用方法。
外设库的官方文档提供了详细的外设驱动函数说明和示例代码,帮助开发者快速上手并使用各种外设功能。
除了官方文档,我们还可以参考一些开发者编写的教程和案例,这些资源对于理解外设库的使用方法和技巧非常有帮助。
在网络上,我们可以找到大量关于STM32标准外设库的教程和案例,这些资源可以帮助我们更好地使用外设库,并解决在开发过程中遇到的各种问题。
总的来说,STM32标准外设库是ST公司为STM32系列微控制器提供的一套完整的外设驱动库,它为开发者提供了丰富的外设驱动函数和示例代码,为开发者提供了便捷的开发工具。