零死角玩转初级-4、初识stm32库_第1页
零死角玩转初级-4、初识stm32库_第2页
零死角玩转初级-4、初识stm32库_第3页
零死角玩转初级-4、初识stm32库_第4页
零死角玩转初级-4、初识stm32库_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

0、友情《零死角玩转STM32》系列 四个部分组成,根据野火STM32开发板旧版 写,重新排版,更适合初学者,步步为营,从入门到精通,从奔到系统,让您零死角玩转STM32。M3的世界,于野火 另外,野火团队历时一年精心打造的《STM32库开发实战指南》将于今年10月份由机械工业 的惊喜。是一本学习STM32必备的工具4、初STM32时,再回头看看这一章,相信你对STM32库又会有一个更深刻的认识。 之库开STM3251单片机的程序开发中,直接配置51单片机的寄存器,控制的工作方式,如中断,定时器等。配置的时候,常常要查阅寄存器表,看10。这些都是很琐碎的、机51单片机的相对来说较简单,而且资源很有限,所以可以STM32库是由ST公司针对STM32提供的函数接口,即API(ApplicationProgramInterface),开发者可调用这些函数接口来配置STM32的寄存器,使开发 当调用库的API的时候可以不用挖空心思去了解库底层的寄存器操作,就像当年Cprinft()函数时只是学习它的使用格实际上,库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关的配置,向上为用户提供配置寄存器的接口。库开发方式与直接配置寄存器方式的区别见错误!未找到源。4。4-开发速度程序可读性 更直学M32,第而接器法来学习。认为这种方法直观,能够了解到是配置了哪些寄存器,怎样配置寄存事实上,库函数的底层实现恰恰是直接配置寄存器方式的最佳例子,想深入了解 是如何工作的话,只要追踪到库的最底层实现就能理解,相信你会为它严谨、优美的实现方式而陶醉。要想 C语言,就从ST的库开始吧。在错误!未找到 源。。但因为STM32有充足的资源,权衡库的优势与不足,绝大部分时候, 烈争论,但是,随着ST库的完善与大家对库的了解, 实现方式。使读者既能利用库进行快速开发,也能深入了解STM32的工作原言开发而不是采用汇编。相比之下,可以发现调用库接口开发与直接配置寄存器开发的关系,犹如c语言与汇编的关系。见表4-14-2IT大师,“一切计算机科学的问题都可以用分层来解决。”c,从直接配置寄存器到使用库,从机到系统,从操作系统到应用层,无不体现着这样的分层思想。开发的多了,的层次多了,会深刻地认同他这句话,分层思想在开发上体现得淋漓尽致,分层使得问题变得更简单,使得能够下层实现方式的差异,使得开发变 分层带来的缺点,而对于STM32这样高性能的 STM32结构及库层次关CMSIS微控制器的CPU。该内核是ARM公司设计的一个处理器体系架构。ARM公司 。ST公司或其它 PCCPU与主板、内存、显卡、硬盘的关系。见错误!未找到源。因为基于Cortex的某系列 厂商生产的Cortex微控制器 ARM与 厂商建立了CMSIS标准(CortexMicroControllerSoftwareInterface 抽象层。见错误!未找源。错误!未找 源CMSIS标准中最主要的为 可见CMSIS层位于硬件层与操作系统或用户层之间,提供了与 是按照CMSIS标准建立的。 、文件简 4-明档 还有一个已经编译好的HTML文件,是库帮助文档,主要讲的是如何使用驱动库来编写自己的应用程序。说得形象一点,这个HTML就是告诉 本的2.x版本的区别还是比较大的,这点大家要注意 需要把libraries 并查阅库帮助文档来了解ST提供的库函数,这个文档说明了每一个库函数的进入Libraries文件夹看到,关于内核与外设的库文件分别存放在和STM32F10x_StdPeriph_Driver文件夹Libraries\CMSIS\CM3文件夹下又分为CoreSupportDeviceSupport文件夹core_cm3.cCoreSupport中的是位CMSIS标准的核内设备函M3核通用的源文件core_cm3.c和头文件core_cm3.h,它们的作用是为那些采用Cortex-M3核设计SOC的商设计的外设提供一个进入M3内核的接口。这两个文件在其它公司的M3系列也是相同的。至于这些功能是怎样用源码实现的,可以不用管它,只需把这个文件加进的工程文件即可,有的朋友可以深究。core_cm3.c文件还有一些与编译器相关条件编译语句,用于不同编译器的差异,在开发时不用管这部分,有可以了解一下。里面包含了一些跟编译器相关的信息,如:RealViewCompiler(RVMDK),ICCCompiler(IAR),GNUCompiler。/*definecompilerspecificsymbols

使用RVMDK#ifdefined(#define#define

译器时的嵌入汇#elifdefined(ICCARM#define#define#elif #define

)IAR编IAR编译器的形#elif #define

-第10页1./*exact-widthsignedintegertypes signed charint8_t;intint16_t;int/*exact-widthunsignedintegertypestypedef chartypedefunsigned inttypedef inttypedef int64uint64_t;ANSIC文件,是独立于处理器之外的,就像熟知的Cstdio.h文件一样。位于RVMDK这个的安装下,主要作用是提供一些新类型这些新类型定义了在不同 ,出现的诸如int的大小是16位,还是32位的差异。所以在以后的程序中,都将使用新类型如int8_t、int16_t„„免这样使用,在这里提出来是因为初学时如果碰到这样的旧类型让人一头雾u8、u16、u32这些的定义core_cm3.c跟启动文件一样都是底层文件,都是由ARM公司提供的,遵守CMSIS标准,即所有CM3的库都带有这个文件,这样在不同的CM3的移植工作就得以简化。system_stm32f10x.c在DeviceSupport文件夹下的是启动文件、外设寄存器定义&中断向量定义的一些文件,这是由ST公司提供的。见图4-2STM32STM32装system_stm32f10x.c,是由ST公司提供的,遵守CMSIS标准。该文件的功能是设置系统时钟和总线时钟,M351单片机复杂得多,并不是说8M的晶振,M38M为时钟协调整个处理器的工作。还要通过M3核的核内寄存器来对8M system_stm32f10x.c在实现系统时钟的时候要用到PLL(锁相环),这就需要操作寄存器,寄存器都是以器的方式来的,所以该文件中包含了stm32f10x.h这个头文件。stm32f10x.h 器,并且把这些实现封装成一个系统文件,包含在相应的开发环境中。这样 文件夹下是由汇编编写的 型号,在使用时要注意。见图4-3cl:互联型产品,stm32f105/107系列vl:超值型产品,stm32f100系列xl:超低密度产品,FLASH小于64Kmd:中等密度产品,FLASH=64or128野火M3开发板中用的 是STM32F103VET6,64KRAM,编写的c语言代码运行之前,需要由汇编为c语言的运行建立一个合适的环境,接下来才能运行的程序。所以也要把启动文件添加进的的工设置堆、栈的大小设置异常向量表 地址SRAM作为数据器(这个由用户配置,一般的开发板可没有外部SRAM); 3.5版的启动文件还调用了在system_stm32f10x.c文件中的SystemIni()函数配置系统时钟,在旧版本的工程中要用户进入main函数自己调用SystemIni函数。STM32F10x_StdPeriph_Driver文件Libraries\STM32F10x_StdPeriph_Driver文件夹下有inc(include的缩写)跟src(source的简写)这两个文件夹,这都属于CMSIS的设备外设函数部分。src里面是每个设备外设的驱动程序,这些外设是 Cortex-M3核外加进去的。进入libraries 下的STM32F10x_StdPeriph_Driver文件夹,见图4-4。Include的

更新明明数文件,每个外设对应一个.c和.h后缀的文件。 为:stm32f10x_ppp.c或stm32f10x_ppp.h文件,PPP表示外设名称。如针对模数转换(ADC)外设,在src文件夹下有一个stm32f10x_adc.c源文件,在inc文件夹下有一个stm32f10x_adc.h头文件,若 程中用到了STM32 的ADC,则至少要把这两个文件包含到工程里。4-5incincsrcmisc.c文件,这个文件提供了外设对NVIC(中断向量控制器)的函数,在配置中断时,须把这个、在库的\Project\STM32F10x_StdPeriph_Template下,存放了的一个库工程模板,在用库建立一个完整的工程时,还需要添加这个stm32f10x_it.c、stm32f10x_it.h、stm32f10x_conf.h这三stm32f10x_it.c,是专门用来编写中断服务函数的,在修改前,这个文件已经定义了一些的接口,其它普通中断服务函数由自己添/*ment/*mentthelinebelowtoenable/disableperipheralrfileinclusion//#include//#include//#include//#include//#include//#include//#include//#include//#include//#include//#include#include"stm32f10x//#include//#include//#include#include"stm32f10x//#include//#include#include"stm32f10x//#include#include//#include//#include"misc.h"/*HighlevelfunctionsforNVICandSysTick(add-ontoCMSISfunctions)*/stm32f10x_conf.h,这个文件被包含进stm32f10x.h文件。是用来配 spi、usart的外设库函数,其它的注释掉的部分,表示没有用到。stm32f10x_conf.h这个文件还可配置是否使用“断言”编译选项,在开发时使用断言可由编译器检查库函数传入的参数是否正确,编写成功后,去掉“断言”编译选项可使程序全速运行。可通过定义USE_FULL_ASSERT库各文件间的关 NVICNVIC 用户需要配置的文设备外设函数文件(STM32外设驱动函数) 用 用什层 层 核外设寄存器定义&心定义定义寄存器地址、寄存器数据结构、中断向量6STM32DSP6STM32DSP(Cortex-M3没有DSP核 图0-6(STM32库文件结构 野火坚信,授之以鱼不如授之以渔。资料是所有关于STM32知识的源头,所以在本小节介绍如何使用资料。的帮助手册,是最好的,常 资《 这个就是前面提到的库的帮助文档,在使用库函数时,最好通过查阅此文件来了解库函数原型,或库函数的的方法。也可《STM32参考手册.pdfSTM32datasheetSTM32 对STM32的库函数的实现方式感到困惑时,可查阅这个文件,以直接配置 译M3内核,这是首选,经典中的经典呀。当然还有其他很有用 文档,这里就不再赘述4.4.2.2初识库函所谓库函数,就是STM32的库文件中为 用这些库函数,就可以对 函数是如何实现的,但 调用函数必须要知道

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论