您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > STM32入门简易教程
STM32STM32STM32STM32入门简易教程第一章STM32STM32STM32STM32处理器概述优秀的处理器配合好的开发工具和工具链成就了单片机的辉煌,这是单片机开发者辛勤劳动的结果。也正因为此,ARM的工具链工程师和CPU工程师强强联手,日日夜夜不停耕耘为ARM7TDMI设计出了精练、优化和到位的内部结构,终于成就了ARM7TDMI的风光无限的辉煌。新的ARMCortex-M3处理器在破茧而出之后,就处处闪耀着ARM体系结构激动人心的新突破。它是基于最新最好的32为ARMv7架构,支持高度成功的Thumb-2指令集,并带来了很多前卫崭新的特性。在它优秀,强大的同时,编程模型也更清爽,因而无论你是新手还是骨灰级玩家都会对这样秀外慧中的小尤物爱不释手。根据ARM的统计,2010年全部Cortex-MMCU出货量为1.44亿片,2008年~2011年第一季度,STM32累计出货量占Cortex-MMCU出货量的45%。也就是说,两个Cortex-M微控制器中有一个就来自ST。”很多市场分析机构也ARM的强劲增长表示认可。2007年,在32/64bitMCU及MPU架构中,ARM所占市场份额为13.6%,而2010年已经占了23.5%,击败了PowerArchitecture,成为市场占有率最多的架构。Cortex-M3内核是ARM公司整个Cortex内核系列中的微控制器系列(M)内核,还是其他两个系列分别是应用处理器系列(A)与实时控制处理系列(R),这三个系列又分别简称为A、R、M系列。当然,这三个系列的内核分别有各自不同的应用场合。Cortex-M3内核是为满足存储器和处理器的尺寸对产品成本影响很大的广泛市场和应用领域的低成本需求而专门开发设计的。主要是应用于低成本、小管脚数和低功耗的场合,并且具有极高的运算能力和极强的中断响应能力。Cortex-M3处理器采用纯Thumb2指令的执行方式,这使得这个具有32位高性能的ARM内核能够实现8位和16位的代码存储密度。核心门数只有33K,在包含了必要的外设之后的门数也只有60K,使得封装更为小型,成本更加低廉。Cortex-M3采用了ARMV7哈佛架构,具有带分支预测的3级流水线,中断延迟最大只有12个时钟周期,在末尾连锁的时候只需要6个时钟周期。同时具有1.25DMIPS/MHZ的性能和0.19MW/MHZ的功耗。意法半导体是Cortex-M3内核开发项目的一个主要合作方,现在是第一个推出基于这个内核产品的主要微控制器厂商。ST也是世界上为数不多的几家能够提供从二极管到处理器的全系列电机控制器件的厂商。意法半导体STM32系列是业界最丰富的基于ARMCortexM微控制器系列,共有250余款存储容量不同的产品,拥有丰富的外设接口、业界最好的开发生态系统、出色的功耗和整体功能。适用于需要实时控制或联网的任何消费电子产品或电子设备应用。在性能方面,STM32系列的处理速度比同级别的基于ARM7TDMI的产品快30%,换句话说,如果处理性能相同,STM32产品功耗比同级别产品低75%。同样地,使用新内核的Thumb2指令集,设计人员可以把代码容量降低45%,几乎把应用软件所需内存容量降低了一半。此外,根据Dhrystones和其它性能测试结果,STM32的性能比最好的16位架构至少高出一倍。意法半导体是市场上第一家提供基于Cortex-M3内核的无传感器的磁场定向电机控制解决方案的厂商。这套工具证明STM32的内核和专用电机控制外设都有充足的处理能力来优化驱动器的性能,最小化系统总体成本。STM微控制器在25微秒内即可执行一整套无传感器三相无刷永磁同步电机(PMSM)矢量控制算法,大多数应用任务占用CPU资源比率小于30%,为CPU执行其它应用任务(如需要)预留了充足的处理能力。永磁电机同步电机控制解决方案的代码大小少于16千字节。意法半导体在推出STM32微控制器之初,也同时提供了一套完整细致的固件开发包,里面包含了在STM32开发过程中所涉及到的所有底层操作。尽管库不是那么尽如人意,但是通过在程序开发中引入这样的固件开发包,可以使开发人员从复杂冗余的底层寄存器操作中解放出来,将精力专注应用程序的开发上,这便是ST推出这样一个开发包的初衷。事实上也确实带给了我们很大的方便,因而很多人在用。正是由于上面的特点,我们在此选用了STM32系列的ARM芯片。注:因参考资料较多,不一一详述,如涉及作者利益,请联系修改。湖北师范学院电工电子实验教学示范中心第二章学习建议一、较低的学习门槛社会对基于ARM的嵌入式系统开发人员的高需求及给予的高回报,催生了很多的培训机构,这也说明嵌入式系统的门槛较高,其主要原因有以下几点。1、ARM本身复杂的体系结构和编程模型,使得我们必须了解详细的汇编指令,熟悉ARM与Thumb状态的合理切换,才能理解Bootloader并对操作系统进行移植,而理解Bootloader本身就比较困难,因而对于初学者来说Bootloader的编写与操作系统的移植成了入门的第一道难以逾越的门槛;2、ARM芯片,开发板及仿真器的高成本,这样就直接影响了嵌入式开发的普及,使得这方面人才增长缓慢;3、高校及社会上高水平嵌入式开发人员的短缺,现实问题使得我们的大学生和公司职工在入门的道路上困难重重,很多人也因此放弃;4、培训机构的高费用,虽然有高水平的老师指导,但是高费用就是一道关口,进去的人也只是在短短的几天时间里匆匆了解了一下开发过程,消除了一些畏惧心理而已,修行还是得依靠自己;5、好的开发环境需要资金的支持,也直接影响了入门的进度。基于Cortex-M3内核的ARM处理器的出现,在优秀的Keil开发工具的支持下,可以自动生成启动代码,省去了复杂的Bootloader的编写。Thumb-2指令集的使用,使得开发人员不用再考虑ARM状态与Thumb状态的切换,节省了执行时间和指令空间,大大减轻了软件开发的管理工作。处理器与内存尺寸的减少,大大降低了成本,使得芯片及开发板的价格得以在很大程度上降低。Cortex-M3内核通过把中断控制器、MPU及各种调试组件等基础设施的地址固定,很大程度上方便了程序的移植。源代码是公开的库函数,使得我们可以摒弃晦涩难懂的汇编语言,在不需要了解底层寄存器的操作细节的情况下,用C语言就可以完成我们需要的功能。所有这些特点使得我们学习ARM处理器的门槛得以降低。同时建议大家尽量去用固件库。而不是避开固件库自己写代码。因为在实际的项目中,代码成百上千个,不可能都自己来写,调用固件库中的函数来完成,才是可行的方案。当然我们在深入的情况下,透彻理解寄存器的操作是必要的,也是值得的,高效编程也必须在这方面努力。二、重要的参考资料1、Cortex-M3权威指南宋岩译权威资料的精简版,思路清晰,有条理,适合学Cortex-M3处理器的所有人。2、STM32技术参考手册a)STM32微控制器产品的技术参考手册是讲述如何使用该产品的;b)包含各个功能模块的内部结构、所有可能的功能描述、各种工作模式的使用和寄存器配置等详细信息。3、STM32F103RB数据手册a)产品的基本配置(内置FLASH和RAM的容量、外设模块的种类和数量等);b)管脚的数量和分配,电气特性,封装信息和订购代码等。4、STM32开发板手册与开发板配套的参考资料,有很多经验值得借鉴。5、stm32固件库a)相关定义,文档约定和固件库规则;b)库的架构,安装指南及使用实例;c)每个外围模块的函数及解释。6、开发板原理图必不可少的硬件电路参考。7、互联网取之不尽的知识宝库。三、必要的学习步骤对于初学者来说,困难较多,下面是需要了解的一些信息,以供参考。1111、了解Cortex-M3Cortex-M3Cortex-M3Cortex-M3内核看完Cortex-M3权威指南的前36页,你就会知道什么是Cortex-M3。2222、认识STM32F103RBT6STM32F103RBT6STM32F103RBT6STM32F103RBT6处理器a)了解STM32F10xxx技术参考手册与STM32F103xB数据手册;b)了解STM32F10xxx技术参考手册第二章存储器和总线构架,需要了解外设时,再具体查看具体的功能模块;c)芯片选型初期看数据手册以评估该芯片是否能满足功能需求;d)基本选定芯片后就需要查看技术参考手册以确定各功能模块的功能是否符合要求;e)确定芯片型号,进入编程阶段后需要详细阅读技术参考手册以获知各项功能的具体实现方式和寄存器的配置使用;f)在设计硬件时还需要参考数据手册以获得电压、电流、管脚分配、驱动能力等信息。3333、了解开发板原理图参考开发板原理图,了解可支配的资源。4444、了解库的结构与使用参考STM32固件库中文版(UM0427)前三章。5555、熟悉开发工具的使用a)KEILMDK的使用(本文所有实例均在Keilv4.10上编译通过)b)程序下载软件FlyMcu的使用c)串口调试助手的使用6666、了解时钟系统时钟的配置涉及到所有的外设资源,所以我们应该对它有更深入的了解。7777、GPIOGPIOGPIOGPIO8888、定时器与中断9999、串口10101010、ADCADCADCADC、SPISPISPISPI、IICIICIICIIC、USBUSBUSBUSB。。。第三章编程基础一、库函数结构与使用1、STM32F10XXXSTM32F10XXXSTM32F10XXXSTM32F10XXXV3.4V3.4V3.4V3.4标准外设库文件夹描述STM32F10x_StdPeriph_Lib_V3.4.0_htmresc本文件夹包含了所有的html页面资源LibrariesCMSISSTM32F10x_StdPeriph_Driverinc标准外设库驱动头文件src标准外设库驱动源文件ProjectExamples标准外设库驱动的完整例程TemplateMDK-ARMKEILRVMDK的项目模板示例RIDERaisonanceRIDE的项目模板示例EWARMIAREWARM的项目模板示例UtilitiesSTM3210-EVAL本文件夹包含了用于STM3210B-EVAL和STM3210E-EVAL评估板的专用驱动标准外设库的第一部分是CMSIS和STM32F10x_StdPeriph_Driver,CMSIS是独立于供应商的Cortex-M处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简单的处理器软件接口,简化了软件复用工作,降低了Cortex-M上操作系统的移植难度,并减少了新入门的微控制器开发者的学习难度和新产品的上市时间。STM32F10x_StdPeriph_Driver则包括了分别对应包括了所有外设对应驱动函数,这些驱动函数均使用C语言编写,并提供了统一的易于调用的函数接口,供开发者使用。Project文件夹中则包括了ST官方的所有例程和基于不同编译器的项目模板,这些例程是学习和使用STM32的重要参考。Utilities包含了相关评估板的示例程序和驱动函数,供使用官方评估板的开发者使用,很多驱动函数同样可以作为学习的重要参考。2222、文件功能说明文件名功能描述具体功能说明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,
本文标题:STM32入门简易教程
链接地址:https://www.777doc.com/doc-1723168 .html