
第4章STM32嵌入式微控制器基础从8位单片机转到基于ARM的32位微控制器STM32,这个过程需要通过合适的方法跨越由于STM32的功能多,其原理又与传统的8位单片机(主要是51系列)完全不同,所以本章任务重点是讨论学习STM32微控制器的基本问题。包括STM32微控制器的认识、开发需要的硬件及软件环境、有关软件的使用等。4.1STM32系列微控制器简介4.1.1与51单片机的区别1.认识STM32微控制器STM32从字面上来理解,ST是意法半导体,M是Microelectronics的缩写,32表示32位,合起来理解,STM32就是指ST公司开发的32位微控制器。意法半导体(ST)集团于1988年6月成立,是由意大利的SGS微电子公司和法国ThomSon半导体公司合并而成。1998年5月,SGS-THOMSONMicroelectronics将公司名称改为意法半导体有限公司,是世界最大的半导体公司之一。STM32就是基于Cortex-M3内核的微控制器。它包括Cortex-M3内核、存储器、外设等。Cortex-M3内核通过接口总线的形式挂载了储存器、外设、中断等组成一个MCU,如图4-1所示。nnnnnnnnnnnnnnnnnOOUUUUUUUUUUUUUOUCortex-M3芯片由ARM设计调试系统Cortex-M3内核内部总线htt/bulebolog.csd由芯片制造商外设存储器设计开发时钟和复位1/0JUUUUUUUUUUUUUUUUL图4-1STM32微控制器示意图STM32微控制器的内核是基于ARM公司的Cortex-M3微控制器内核。ARM公司于2006年推出了Cortex-M3微处理器核,针对微控制器(MCU)领域。Cortex-M3采用的V7指令集,它的速107
107 第 章 嵌入式微控制器基础 4 STM32 从8位单片机转到基于ARM的32位微控制器STM32,这个过程需要通过合适的方法跨越。 由于STM32的功能多,其原理又与传统的8位单片机(主要是51系列)完全不同,所以本章 任务重点是讨论学习STM32微控制器的基本问题。包括STM32微控制器的认识、开发需要的 硬件及软件环境、有关软件的使用等。 4.1 STM32系列微控制器简介 4.1.1 与51单片机的区别 1.认识STM32微控制器 STM32从字面上来理解, ST是意法半导体,M是Microelectronics的缩写,32表示32 位,合起来理解, STM32就是指ST公司开发的32位微控制器。 意法半导体(ST)集团于1988年6月成立,是由意大利的SGS微电子公司和法国Thomson 半导体公司合并而成。1998年5月,SGS-THOMSON Microelectronics将公司名称改为意法半 导体有限公司,是世界最大的半导体公司之一。 STM32就是基于Cortex-M3内核的微控制器。它包括Cortex-M3内核、存储器、外设等。 Cortex-M3内核通过接口总线的形式挂载了储存器、外设、中断等组成一个MCU,如图4-1所 示。 图4-1 STM32微控制器示意图 STM32微控制器的内核是基于ARM公司的Cortex-M3微控制器内核。ARM公司于2006年推 出了Cortex-M3微处理器核,针对微控制器(MCU)领域。Cortex-M3采用的V7指令集,它的速

度比ARM7快三分之一,功耗低四分之三,并且能实现更小芯片面积,利于将更多功能整合在更小的芯片尺寸中。STM32属于一个微控制器,自带了各种常用通信接口,比如USART、I2C、SPI等,可接非常多的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有STM32的身影,比如智能手环,微型四轴飞行器、平衡车、移动POST机、智能电饭锅、3D打印机等等。STM32微控制器主要应用于:低成本单片机、汽车电子、数据通信、工业控制、消费类电子产品等。2.与51单片机的区别51单片机是对所有兼容Inte18031指令系统的单片机的统称。51单片机是基础入门的-个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。STM32系列微控制器基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核。两者的主要区别如下:(1)内核:51单片机采用的是51Core、8位CPU、2MHzMax(分频后):STM32采用的是ARMCortex-M3,32位CPU、72MHz。(2)外部地址扩展:51单片机最大64K字节;STM32有4G字节。(3)片内储存器:51单片机片内ROM2K-64K字节,RAM可以128字节--1K字节:STM32的片内ROM为20K-1M字节,RAM有8K-256K字节。(3)外设:51单片机有4个8位的并行口、2个定时器(52有3个)、一个串行口;STM32却拥有多个并行口、串行口、AD、DA、定时器、、看门狗、CRC、DMA、IC、SPI、CAN、USART等众多外设,它几乎集成了所有测控领域的所有需要的功能模块。(4)对单片机的编程操作:51单片机在编程时都是直接操作寄存器,没有库函数的支持,由于51单片机功能有限,所以对寄存器的设置也比较简单;STM32微控制器功能强大,引脚复用较多,在设置寄存器时比较麻烦,但STM32有官方的库函数支持,就可以弱化寄存器的设置。(5)操作系统:51单片机连RTOS(RealTimeOperationSystem实时多任务操作系统)都很难能跑;STM32采用的是uClinux(u表示Micro,C表示Control,所以uClinux就是Micro-Control-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统”),uC/os(实时操作系统内核)。总的来说,51有51的轻巧,STM32有STM32的强大。首先51学习入门最简单,功能少,使用比较方便,但是速度、功能都没有STM32强大。STM32是32位的,外围接口丰富,但是使用复杂,入门学习就有点难度了。4.1.2分类STM32有很多系列,可以满足市场的各种需求,从内核上分有Cortex-MO、M3、M4和108
108 度比ARM7快三分之一,功耗低四分之三,并且能实现更小芯片面积,利于将更多功能整合 在更小的芯片尺寸中。 STM32属于一个微控制器,自带了各种常用通信接口,比如 USART、I2C、SPI等,可接 非常多的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有 STM32 的身影,比如智能手环,微型四轴飞行器、平衡车、移动POST机、智能电饭锅、3D打 印机等等。 STM32微控制器主要应用于:低成本单片机、汽车电子、数据通信、工业控制、消费类 电子产品等。 2.与51单片机的区别 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。51单片机是基础入门的一 个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能 力。 STM32系列微控制器基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的 ARM Cortex-M3内核。 两者的主要区别如下: (1)内核:51单片机采用的是51 Core、8位CPU、2MHz Max(分频后);STM32采用的 是ARM Cortex-M3,32位CPU、72MHz。 (2)外部地址扩展:51单片机最大64K字节;STM32有4G字节。 (3)片内储存器:51单片机片内ROM2K-64K字节,RAM可以128字节-1K字节;STM32的 片内ROM为20K-1M字节,RAM有8K-256K字节。 (3)外设:51单片机有4个8位的并行口、2个定时器(52有3个)、一个串行口;STM32 却拥有多个并行口、串行口、AD、DA、定时器、看门狗、CRC、DMA、I2 C、SPI、CAN、USART 等众多外设,它几乎集成了所有测控领域的所有需要的功能模块。 (4)对单片机的编程操作:51单片机在编程时都是直接操作寄存器,没有库函数的支 持,由于51单片机功能有限,所以对寄存器的设置也比较简单;STM32微控制器功能强大, 引脚复用较多,在设置寄存器时比较麻烦,但STM32有官方的库函数支持,就可以弱化寄存 器的设置。 (5)操作系统:51单片机连RTOS(Real Time Operation System 实时多任务操作系统) 都很难能跑;STM32采用的是uClinux(u表示Micro,C表示Control,所以uClinux就是 Micro-Control-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统”)、uC/OS (实时操作系统内核)。 总的来说,51有51的轻巧,STM32有STM32的强大。首先51学习入门最简单,功能少,使 用比较方便,但是速度、功能都没有STM32强大。STM32是32位的,外围接口丰富,但是使用 复杂,入门学习就有点难度了。 4.1.2 分类 STM32有很多系列,可以满足市场的各种需求,从内核上分有 Cortex-M0、 M3、 M4和

M7这几种,每个内核又大概分为主流、高性能和低功耗。单纯从学习的角度出发,可以选择F1和F4,F1代表了基础型,基于Cortex-M3内核主频为72MHZ,F4代表了高性能,基于Cortex-M4内核,主频18OM。对于F1来说,F4(429系列以上)除了内核不同和主频的提升外,升级的明显特色就是带了LCD控制器和摄像头接口,支持SDRAM,这个区别在项目选型上会被优先考虑。但是从大学教学和用户初学来说,还是首选F1系列,目前在市场上资料最多,产品占有量最多的就是F1系列的STM32微控制器。本教材选用STM32F103VCTx,外形如图4-2所示。图4-2STM32F103VCTx外形图CRANRAAPPRARBRARERRSTM32FL03VCT6Z22BTE93MLT HPO16TOARM304其中:①STM32一产品系列。STM32表示基于ARM的32位微控制器。②F一产品类型。F表示通用类型。③103一产品子系列。101一基本型;102一USB基本型;103--增强型;105或107一互联型。④V—引脚数目。T—36脚;C—48脚:R—64脚;V—100脚;Z—144脚③C—闪存储存器容量。4--16KB;6--32KB;8--64KB:B--128KB;C--256KB;D--384KB;E--512KB。③T一封装。H=BGA;T=LQFP;U=VFQFPN;Y=WLCSP64。x一温度范围。6—工业级温度范围-40~85℃;7--工业级温度范围-40~105℃。下面还有内部代码、选项等部分,这里不做介绍。4.1.3与单片机、嵌入式、ARM的关系1.STM32与单片机STM32微控制器也称为STM32单片机。单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。由于8位单片机由于内部构造简单,体积小,成本低廉,在一些较简单的控制器中应用很广。常见的8109
109 M7这几种,每个内核又大概分为主流、高性能和低功耗。 单纯从学习的角度出发,可以选择F1和F4, F1代表了基础型,基于Cortex-M3内核, 主频为72MHZ, F4代表了高性能,基于 Cortex-M4内核,主频180M。 对于F1来说, F4(429 系列以上)除了内核不同和主频的提升外,升级的明显特色就 是带了LCD 控制器和摄像头接口,支持SDRAM,这个区别在项目选型上会被优先考虑。但是 从大学教学和用户初学来说,还是首选F1系列,目前在市场上资料最多,产品占有量最多 的就是F1系列的 STM32微控制器。本教材选用STM32F103VCTx,外形如图4-2所示。 图4-2 STM32F103VCTx外形图 其中: ① STM32—产品系列。STM32表示基于ARM的32位微控制器。 ② F—产品类型。F表示通用类型。 ③ 103—产品子系列。101—基本型;102—USB基本型;103-增强型;105或107—互 联型。 ④ V—引脚数目。T—36脚;C—48脚;R—64脚;V—100脚;Z—144脚. ⑤ C—闪存储存器容量。4-16KB;6-32KB;8-64KB;B-128KB;C-256KB; D-384KB;E-512KB。 ⑥ T—封装。H=BGA;T=LQFP;U=VFQFPN;Y=WLCSP64。 ⑦ x—温度范围。6—工业级温度范围-40~85℃;7-工业级温度范围-40~105℃。 下面还有内部代码、选项等部分,这里不做介绍。 4.1.3 与单片机、嵌入式、ARM的关系 1.STM32与单片机 STM32微控制器也称为STM32单片机。 单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具 有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系 统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、 A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。由于8位单片 机由于内部构造简单,体积小, 成本低廉,在一些较简单的控制器中应用很广。常见的8

位单片机主要有:Intel的51系列,Atmel的AVR系统,Microchip公司的PIC系列,TI的MSP430系列等。而STM32是一种功能比较强大的32位的单片机。它和8位单片机最大的不同是,它不仅可以使用寄存器进行编程,还可以使用官方提供的库文件进行编程,这样不仅编程方便,而且更容易移植。2.STM32与嵌入式嵌入式是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。主要分为DSP,微控制器MCU,微处理器,SOC四种。一个完整的嵌入式系统,从开发过程分为4层:硬件层、驱动层、操作系统层和应用层。而STM32是MCU的一种,故也属于嵌入式技术。3.STM32与ARMARM可以说是一个公司的名称,一类微处理的通称,也代表一种技术。其实ARM是一个做芯片标准的公司,它负责芯片内核的架构设计,而把具体的实现,授权给像T,ST等半导体公司。例如任何一个Cortex-M3芯片,它们的内核结构都是一样的,不同的是它们的存储器容量,片上外设,IO以及其他模块的区别。ARM公司为了能让不同的芯片公司生产的Cortex-M3芯片能在软件上基本兼容,和芯片生产商共同提出了一套标准CMSIS标准(CortexMicrocontrollerSoftwareInterfaceStandard),翻译过来是ARMCortexM微控制器软件接口标准”,也就是其库函数。4.2STM32的基本架构和基本原理如果学过8位单片机的,例如51单片机,那么对于理解STM32的系统架构和功能模块是十分有利的,毕竟它们都属于单片机范畴(英文为Microcontroller)。只不过前者是8位单片机(即数据总线是8位的),而后者是32位单片机(数据总线是32位的)。但是,如果没有学过任何单片机,那么从零基础学STM32也不是没有可能,只是在理解时会困难些。学了C语言,大家都知道,开发PC程序,压根不用了解PC的硬件结构和功能部件的特点。但是开发单片机程序,必须知道单片机的内部结构和功能部件的特点和属性。本节就STM32微控制器的内部结构和功能部件的进行一个大致描述,在了解这些特点的基础上,就可以开始尝试STM32的应用设计与实践了。4.2.1ARMCortex-M3系列处理器1.ARMARM即AdvancedRISCMachines的缩写,这个缩写可以认为是一个公司的名字--ARM公司,也可以认为是一类微处理器的统称,还可以认为是一类技术的名字。1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州的SanJoseVLSI技术公司制造。2O世纪80年代后期,ARM很快开发成Acorn的台式计算机。20世纪90年代初,ARM公司成立于剑桥大学,设计了大量高性能、廉价、耗能低的RISC处理器及相关技术软件。RISC的英文全称是ReducedInstructionSetComputer,对应的中文是精简指令集计算机,特点是所有指令的格式都是一致的,所有指令的指令周期也是相同110
110 位单片机主要有:Intel的51系列,Atmel的AVR系统,Microchip公司的PIC系列,TI的 MSP430系列等。而STM32是一种功能比较强大的32位的单片机。它和8位单片机最大的不同 是,它不仅可以使用寄存器进行编程,还可以使用官方提供的库文件进行编程,这样不仅 编程方便,而且更容易移植。 2.STM32与嵌入式 嵌入式是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功 能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。主要分为DSP,微控制器 MCU,微处理器,SOC四种。一个完整的嵌入式系统,从开发过程分为4层:硬件层、驱动 层、操作系统层和应用层。而STM32是MCU的一种,故也属于嵌入式技术。 3.STM32与ARM ARM可以说是一个公司的名称,一类微处理的通称,也代表一种技术。其实ARM是一个 做芯片标准的公司,它负责芯片内核的架构设计,而把具体的实现,授权给像TI,ST等半 导体公司。例如任何一个Cortex-M3芯片,它们的内核结构都是一样的,不同的是它们的存 储器容量,片上外设,IO 以及其他模块的区别。ARM公司为了能让不同的芯片公司生产的 Cortex-M3芯片能在软件上基本兼容,和芯片生产商共同提出了一套标准CMSIS标准 (Cortex Microcontroller Software Interface Standard),翻译过来是ARM Cortex™ 微控制器软件接口标准”,也就是其库函数。 4.2 STM32的基本架构和基本原理 如果学过8位单片机的,例如51单片机,那么对于理解STM32的系统架构和功能模块是 十分有利的,毕竟它们都属于单片机范畴(英文为Microcontroller)。只不过前者是8位单 片机(即数据总线是8位的),而后者是32位单片机(数据总线是32位的)。但是,如果没 有学过任何单片机,那么从零基础学STM32也不是没有可能,只是在理解时会困难些。学了 C语言,大家都知道,开发PC程序,压根不用了解PC的硬件结构和功能部件的特点。但是开 发单片机程序,必须知道单片机的内部结构和功能部件的特点和属性。 本节就STM32微控制器的内部结构和功能部件的进行一个大致描述,在了解这些特点的 基础上,就可以开始尝试STM32的应用设计与实践了。 4.2.1 ARM Cortex-M3系列处理器 1.ARM ARM即Advanced RISC Machines的缩写,这个缩写可以认为是一个公司的名字-ARM公 司,也可以认为是一类微处理器的统称,还可以认为是一类技术的名字。 1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州 的San Jose VLSI技术公司制造。20世纪80年代后期,ARM很快开发成Acorn的台式计算机。 20世纪90年代初,ARM公司成立于剑桥大学,设计了大量高性能、廉价、耗能低的RISC处理 器及相关技术软件。RISC的英文全称是Reduced Instruction Set Computer,对应的中文是 精简指令集计算机,特点是所有指令的格式都是一致的,所有指令的指令周期也是相同

的,并且采用流水线技术。ARM公司本身并不生产和销售芯片,它只出售芯片技术授权,即以出售ARM内核的知识产权为主要模式,因此也叫Chipless(无芯片)公司。全球顶尖的半导体公司,例如Atmel、TI、ST、Fujitsu、NXP等均通过购买ARM的内核,结合各自的技术优势进行生产和销售,共司推动基于ARM内核,包括Cortex内核的嵌人式微控制器的发展。自前,采用RAM技术产权核的微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、DSP、无线移动应用等各类产品市场,在低功耗、低成本和高性能的嵌入式系统应用领域处于领先地位。2.ARMCortex-M3为处理器Cortex是ARM的全新一代处理器内核,它在本质上是ARMV7架构的实现,它完全有别于ARM的其他内核,是全新开发的。按照3类典型的嵌入式系统应用,即高性能、微控制器、实时类,它又分成3个系列,即Cortex-A、Cortex-M、Cortex-R。而STM32就属于Cortex-M系列。Cortex-M旨在提供一种高性能、低成本的微处理器平台,以满足最小存储器、小引腾数和低功耗的需求,同时兼顾卓越的计算性能和出色的中断管理能力。目前典型的、使用最为广泛的是Cortex-MO、Cortex-M3、Cortex-M4。Cortex-M3是一个32位的单片机核,结合了多种创新性突破技术,使得芯片供应商可以提供超低费用的芯片。仅有3300门的M3内核,其性能可达1.25DMIPS/MHz,如主频位72MHz的M3处理器性能可达90DMIPS。M3处理器还集成了许多紧耦合系统外设,合理利用了芯片空间,使系统性能满足下一代产品的控制需求。(注:DMIPS主要用于测整数计算能力。其中MIPS是每秒百万条指令,用来计算同一秒内系统的处理能力,即每秒执行了多少百万条指令。例如,一个处理器达到220DMIPS的性能,是指这个处理器测整数计算能力每秒200*100万条指令。)Cortex的优势在于将低功耗、低成本与高效能完美结合。Cortex-M3处理器包括处理器内核、嵌套向量中断控制器(NVIC)、存储器保护单元、总线接口单元和跟踪调试单元等,为微处理器应用而开发的ARMCortex-M3拥有以下性能:(1)Cortex-M3内核使用了3级流水哈佛架构,运用分支预测、单周期乘法和硬件除法功能实现1.25DMIPS/MHz出色的运算效率。(2)采用专门的面向C语言的Thumb-2指令集,最大限度地降低了汇编语言的使用。(3)Thumb-2指令集免去了Thumb和ARM代码德尔互相切换,性能得到了提高,(4)准确快速地进行了中断处理。(5)对于工业控制应用,存储器保护单元通过使用授权访问模式可以实现安全操作。4.2.2STM32F103系列微控制器STM32是意法半导体(STMicroelectronics)较早推向市场的基于Cortex-M内核的微处理器系列产品,该系列产品具有成本低、功耗优、性能高、功能多等优势,并且以系列化方式推出,方便用户选型,在市场上获得了广泛好评。STM32分成了几个不同的系列:STM32F100为“超值型”,STM32F101为“基本型”,111
111 的,并且采用流水线技术。 ARM公司本身并不生产和销售芯片,它只出售芯片技术授权,即以出售ARM内核的知识 产权为主要模式,因此也叫Chipless(无芯片)公司。全球顶尖的半导体公司,例如Atmel、 TI、ST、Fujitsu、NXP等均通过购买ARM的内核,结合各自的技术优势进行生产和销售,共 同推动基于ARM内核,包括Cortex内核的嵌入式微控制器的发展。目前,采用RAM技术产权 核的微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、DSP、无线移动 应用等各类产品市场,在低功耗、低成本和高性能的嵌入式系统应用领域处于领先地位。 2.ARM Cortex-M3为处理器 Cortex是ARM的全新一代处理器内核,它在本质上是ARMV7架构的实现,它完全有别于 ARM的其他内核,是全新开发的。按照3类典型的嵌入式系统应用,即高性能、微控制器、 实时类,它又分成3个系列,即Cortex-A、Cortex-M、Cortex-R。而STM32就属 于Cortex-M 系列。 Cortex-M旨在提供一种高性能、低成本的微处理器平台,以满足最小存储器、小引脚 数和低功耗的需求,同时兼顾卓越的计算性能和出色的中断管理能力。目前典型的、使用 最为广泛的是 Cortex-M0、Cortex-M3、Cortex-M4。 Cortex-M3是一个32位的单片机核,结合了多种创新性突破技术,使得芯片供应商可以 提供超低费用的芯片。仅有3300门的M3内核,其性能可达1.25DMIPS/MHz,如主频位72 MHz 的M3处理器性能可达90 DMIPS。M3处理器还集成了许多紧耦合系统外设,合理利用了芯片空 间,使系统性能满足下一代产品的控制需求。(注:DMIPS主要用于测整数计算能力。其中 MIPS是每秒百万条指令,用来计算同一秒内系统的处理能力,即每秒执行了多少百万条指 令。例如,一个处理器达到220 DMIPS的性能,是指这个处理器测整数计算能力每秒200*100 万条指令。) Cortex的优势在于将低功耗、低成本与高效能完美结合。 Cortex-M3处理器包括处理器内核、嵌套向量中断控制器(NVIC)、存储器保护单元、 总线接口单元和跟踪调试单元等,为微处理器应用而开发的ARM Cortex-M3拥有以下性能: (1)Cortex-M3内核使用了3级流水哈佛架构,运用分支预测、单周期乘法和硬件除法 功能实现了1.25DMIPS/MHz出色的运算效率。 (2)采用专门的面向C语言的Thumb-2指令集,最大限度地降低了汇编语言的使用。 (3)Thumb-2指令集免去了Thumb和ARM代码德尔互相切换,性能得到了提高。 (4)准确快速地进行了中断处理。 (5)对于工业控制应用,存储器保护单元通过使用授权访问模式可以实现安全操作。 4.2.2 STM32F103系列微控制器 STM32是意法半导体(STMicroelectronics)较早推向市场的基于Cortex-M内核的微处 理器系列产品,该系列产品具有成本低、功耗优、性能高、功能多等优势,并且以系列化 方式推出,方便用户选型,在市场上获得了广泛好评。 STM32分成了几个不同的系列:STM32F100为“超值型”, STM32F101为“基本型

STM32F102为“USB基本型”,STM32F103为“增强型”,STM32F105或107为“互联型”,STM32L为“超低功耗型”。1.STM32F103xx性能STM32F103xx增强型微控制器使用高性能的ARMCortex-M332位的RISC内核,其工作频率是72MHz,内置高速存储器(最高可达512KB的闪存和64KB的SRAM),具有丰富的增强型I/0端口和连接到两条高性能外设总线(APB)的外设。STM32F103Vx系列都至少包含2个12位的ADC、一个高级定时器、3个通用16位定时器,还包含标准和先进的通信端口:2个I2C、2个SPI、3个USART、一个USB和一个CAN接口。I/O翻转速度可达18MHz。图4-2是基于ARMCortex-M3内核的STM32F10x系列微控制器的外观(LQFP100封装)表4-1是STM32F103xx增强型微控制器(F1ash不超过128KB的中小容量)各系列的外设资源。大容量的STM32103xx系列微控制器外设资源和芯片编号详细说明见有关资料。表4-1STM32103xx微控制器各系列的外设资源外设STM32F103TxSTM32F103CxSTM32F103RxSTM32F103Vx3264326432 6464128128128闪存(KB)202020RAM (KB)10101020203定时器通用2323323高级1111通信SPI2222211.1212C12221212 3233233USARTUSB11111111CAN11111I1126325180通用1/0端口2210通道216通道12位同步ADC10通道CPU频率72MHz工作电压2.0-3.6V工作温度-40-+85/-40-+105封装LQFP48LQFP64VFQFPN36LQFP100BGA100从上表可以看出,STM32FI03的性能如下。内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPSMHz。单周期乘法和硬件除法。存储器:片上集成512KB的F1ash存储器。6~64KB的SRAM存储器。时钟、复位和电源管理:2.0~3.6V的电源供电和IO接口的驱动电压。POR、PDR和可编程的电压探测器(PVD)。4~16MHz的晶振。内嵌出厂前调校的8MHzRC振荡电路。内部40kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。低功耗:3种低功耗模式:休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT。调试模式:串行调试(SWD)和JTAG接口。112
112 STM32F102为“USB基本型”, STM32F103为“增强型”, STM32F105或107为“互联型”, STM32L为“超低功耗型”。 1. STM32F103xx性能 STM32F103xx增强型微控制器使用高性能的ARM Cortex-M3 32位的RISC内核,其工作频 率是72MHz,内置高速存储器(最高可达512KB的闪存和64KB的SRAM),具有丰富的增强型I/O 端口和连接到两条高性能外设总线(APB)的外设。STM32F103Vx系列都至少包含2个12位的 ADC、一个高级定时器、3个通用16位定时器,还包含标准和先进的通信端口:2个I2C、2个 SPI、3个USART、一个USB和一个CAN接口。I/O翻转速度可达18MHz。 图4-2是基于ARM Cortex-M3内核的STM32F10x系列微控制器的外观(LQFP100封装)。 表4-1是STM32F103xx增强型微控制器(Flash不超过128KB的中小容量)各系列的外设 资源。大容量的STM32103xx系列微控制器外设资源和芯片编号详细说明见有关资料。 表4-1 STM32103xx微控制器各系列的外设资源 外设 STM32F103Tx STM32F103Cx STM32F103Rx STM32F103Vx 闪存(KB) 32 64 32 64 128 32 64 128 64 128 RAM(KB) 10 20 10 20 20 10 20 20 定时器 通用 2 3 2 3 3 2 3 3 高级 1 1 1 1 通信 SPI 1 2 1 2 2 1 2 2 I2C 1 2 1 2 2 1 2 2 USART 2 3 2 3 3 2 3 3 USB 1 1 1 1 1 1 1 1 CAN 1 1 1 1 1 1 1 1 通用I/O端口 26 32 51 80 12位同步ADC 2 10通道 2 10通道 2 16通道 CPU频率 72MHz 工作电压 2.0-3.6V 工作温度 -40-+85/-40-+105 封装 VFQFPN36 LQFP48 LQFP64 LQFP100 BGA100 从上表可以看出,STM32FI03的性能如下。 内核:ARM32位Cortex-M3 CPU,最高工作频率72MHz,1.25DMIPSMHz。单周期乘法和硬 件除法。 存储器:片上集成512KB的Flash存储器。6~64KB的SRAM存储器。 时钟、复位和电源管理:2.0~3.6V的电源供电和IO接口的驱动电压。POR、PDR和可编 程的电压探测器(PVD)。4~16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz 的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。 低功耗:3种低功耗模式:休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT。 调试模式:串行调试(SWD)和JTAG接口

DMA:12通道DMA控制器。支持的外设:定时器,ADC,DAC,SPI,IIC和UART。2个12位的微妙级的AD转换器(16通道):AD测量范围:0-3.6V。双采样和保持能力。片上集成一个温度传感器。2通道12位DA转换器:STM32F103xC,STM32F103xD,STM32F103xE独有。最多高达112个的快速10端口:根据型号的不同,有26、37、51、80、和112的I0端口,所有的端口都可以映射到16个外部中断向量。除了模拟输入,所有的都可以接受5V以内的输入。最多多达11个定时器:4个16位定时器,每个定时器有4个ICOCPWM或者脉冲计数器。2个16位的6通道高级控制定时器:最多6个通道可用于PWM输出。2个看门狗定时器(独立看门狗和窗口看门狗)。定时器:24位倒计数器。2个16位基本定时器用于驱动DAC。最多多达13个通信接口:2个I2C接口(SMBusPMBus)。5个USART接口(IS07816接口,LIN,IrDA兼容,调试控制)。3个SPI接口(18Mbits),两个和I2S复用。CAN接口(2.OB)。USB2.0全速接口。SDIO接口。STM32的优异性体现在如下几个方面:(1)超低的价格。以8位机的价格,得到32位机,是STM32最大的优势。(2)超多的外设。STM32拥有包括:FSMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、ADC、DAC、RTC、DMA等众多外设及功能,具有极高的集成度。(3)丰富的型号。STM32仅M3内核就拥有F100、F101、F102、F103、F105、F107、F207、F217等8个系列上百种型号,具有QFN、LQFP、BGA等封装可供选择。同时STM32还推出了STM32L和STM32W等超低功耗和无线应用型的M3芯片。(4)优异的实时性能。84个中断,16级可编程优先级,并且所有的引脚都可以作为中断输入。(5)杰出的功耗控制。STM32各个外设都有自已的独立时钟开关,可以通过关闭相应外设的时钟来降低功耗。(6)极低的开发成本。STM32的开发不需要昂贵的仿真器,只需要一个串口即可下载代码,并且支持SWD和JTAG两种调试口。SWD调试可以为你的设计带来跟多的方便,只需要2个I0口,即可实现仿真调试。2.内部结构STM32跟其他单片机一样,是一个单片计算机或单片微控制器,所谓单片就是在一个芯片上集成了计算机或微控制器该有的基本功能部件。这些功能部件通过总线连在一起。就STM32而言,这些功能部件主要包括:Cortex-M内核、总线、系统时钟发生器、复位电路、程序存储器、数据存储器、中断控制、调试接口以及各种功能部件(外设)。不同的芯片系列和型号,外设的数量和种类也不一样,常有的基本功能部件(外设)是:输入/输出接口GPIO、定时/计数器TIMER/COUNTER、串行通信接口USART、串行总线I2C和SPI或I2S、SD卡接口SDIO、USB接口等。根据ST的官方手册,STM32F10X的系统结构图如图4-3所示。113
113 DMA:12通道DMA控制器。 支持的外设:定时器,ADC,DAC,SPI,IIC和UART。 2个12位的微妙级的AD转换器(16通道):AD测量范围:0-3.6V。双采样和保持能力。 片上集成一个温度传感器。 2通道12位DA转换器:STM32F103xC,STM32F103xD,STM32F103xE独有。 最多高达112个的快速IO端口:根据型号的不同,有26、37、51、80、和112的IO端 口,所有的端口都可以映射到16个外部中断向量。除了模拟输入,所有的都可以接受5V以 内的输入。 最多多达11个定时器:4个16位定时器,每个定时器有4个ICOCPWM或者脉冲计数器。2 个16位的6通道高级控制定时器:最多6个通道可用于PWM输出。 2个看门狗定时器(独立看门狗和窗口看门狗)。 定时器:24位倒计数器。2个16位基本定时器用于驱动DAC。 最多多达13个通信接口:2个I2C接口(SMBusPMBus)。5个USART接口(ISO7816接口, LIN,IrDA兼容,调试控制)。3个SPI接口(18 Mbits),两个和I2S复用。CAN接口(2.0B)。 USB 2.0全速接口。SDIO接口。 STM32的优异性体现在如下几个方面: (1)超低的价格。以8位机的价格,得到32位机,是STM32最大的优势。 (2)超多的外设。STM32拥有包括:FSMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、 ADC、DAC、RTC、DMA等众多外设及功能,具有极高的集成度。 (3)丰富的型号。STM32仅M3内核就拥有F100、F101、F102、F103、F105、F107、 F207、F217等8个系列上百种型号,具有QFN、LQFP、BGA等封装可供选择。同时STM32还推 出了STM32L和STM32W等超低功耗和无线应用型的M3芯片。 (4)优异的实时性能。84个中断,16级可编程优先级,并且所有的引脚都可以作为中 断输入。 (5)杰出的功耗控制。STM32各个外设都有自己的独立时钟开关,可以通过关闭相应外 设的时钟来降低功耗。 (6)极低的开发成本。STM32的开发不需要昂贵的仿真器,只需要一个串口即可下载代 码,并且支持SWD和JTAG两种调试口。SWD调试可以为你的设计带来跟多的方便,只需要2个 IO口,即可实现仿真调试。 2.内部结构 STM32跟其他单片机一样,是一个单片计算机或单片微控制器,所谓单片就是在一个芯 片上集成了计算机或微控制器该有的基本功能部件。这些功能部件通过总线连在一起。就 STM32而言,这些功能部件主要包括:Cortex-M内核、总线、系统时钟发生器、复位电路、 程序存储器、数据存储器、中断控制、调试接口以及各种功能部件(外设)。不同的芯片系 列和型号,外设的数量和种类也不一样,常有的基本功能部件(外设)是:输入/输出接口 GPIO、定时/计数器TIMER/COUNTER、串行通信接口USART、串行总线I2C和SPI或I2S、SD卡 接口 SDIO、USB 接口等。 根据ST的官方手册,STM32F10X的系统结构图如图4-3所示

ICodeFlashFlash接口DCodeCortex-M3介SystemSRAMDMA乐DMA1FSMC3SDIOo通道1桥接2AHB系统总通道2APB1桥接1APB2AO复位和时钟通道7控制(RCC)SPI3/2SGPIOCDACANOADCGPIODPWRSPI2/2SADC3IWDGDMA请求GFPIOESAFTTGPIORGPIOGUSETIM1EXTIDMA2TIM8AFIOEnGPIOATIM5GPIOBTIM4UART4USART3TIM3通道1TIM2USART2通道2通道5DMA请求ai14800c图4-3STM32F10X的系统结构图为更加简明地理解STM32单片机的内部结构,对图4-3进行抽象简化后得到图4-4,这样对初学者的学习理解会更加方便些。Flash闪存接口Flash程序存储器CPUCortex-M3内核SRAM存储器可变静态存储控制器(FSMC)总线复位与时钟控制(RCC)AHB系统总线炬阵SDIO高速APB2外设桥接低速APB1外设DMA求DMAI(7通邀)DMA清求DMA2(5通道)DMA请求图4-4STM32F10X的系统结构简化图现结合图4-4对STM32的基本原理做一简单分析,主要包括以下内容。(1)程序存储器、静态数据存储器、所有的外设都统一编址,地址空间为4GB。但各自都有固定的存储空间区域,使用不同的总线进行访问。这一点跟51单片机完全不一样。具体的地址空间请参阅ST官方手册。如果采用固件库开发程序,则可以不必关注具体的地114
114 图4-3 STM32F10X的系统结构图 为更加简明地理解STM32单片机的内部结构,对图4-3进行抽象简化后得到图4-4,这样 对初学者的学习理解会更加方便些。 图4-4 STM32F10X的系统结构简化图 现结合图4-4对STM32的基本原理做一简单分析,主要包括以下内容。 (1)程序存储器、静态数据存储器、所有的外设都统一编址,地址空间为4GB。但各 自都有固定的存储空间区域,使用不同的总线进行访问。这一点跟51单片机完全不一样。 具体的地址空间请参阅ST官方手册。如果采用固件库开发程序,则可以不必关注具体的地

址问题。(2)可将Cortex-M3内核视为STM32的“CPU”,程序存储器、静态数据存储器、所有的外设均通过相应的总线再经总线矩阵与之相接。Cortex-M3内核控制程序存储器、静态数据存储器、所有外设的读写访问。(3)STM32的功能外设较多,分为高速外设、低速外设两类,各自通过桥接再通过AHB系统总线连接至总线矩阵,从而实现与Cortex-M3内核的接口。两类外设的时钟可各自配置,速度不一样。具体某个外设属于高速还是低速,已经被ST明确规定,可参阅图4-3标示的信息。所有外设均有两种访问操作方式:一是传统的方式,通过相应总线由CPU发出读写指令进行访问,这种方式适用于读写数据较小、速度相对较低的场合;二是DMA方式,即直接存储器存取,在这种方式下,外设可发出DMA请求,不再通过CPU而直接与指定的存储区发生数据交换,因此可大大提高数据访问操作的速度。(4)STM32的系统时钟均由复位与时钟控制器RCC产生,它有一整套的时钟管理设备,由它为系统和各种外设提供所需的时钟以确定各自的工作速度。3.STM32F103VCT微控制器外部引脚STM32F103VCT的外部引脚如图4-5所示。0043600PEVOD.PE3VSSNCPAI3PERPA12VBATPA11PC13.PA1OPAOPC14.PABPC15..PCovSsVDDPC8PC7OSC.STPC6OSo..NRSTPD15PCOPD14PD13PCIPC2PD12STM32F103VCTxPC3PD11VSSAPD10LQFP100VREF.PDOVRE.PD8VDDAPB15PAO..PB14PALPB13PA2PB120图4-5STM32F103VCT外部引脚图(1)5个16位的GPI0口:PA、PB、PC、PD、PE;(80)(2)VDD、VSS:主电源引脚,2.OV3.6V。115
115 址问题。 (2)可将Cortex-M3内核视为STM32的“CPU”,程序存储器、静态数据存储器、所有 的外设均通过相应的总线再经总线矩阵与之相接。Cortex-M3内核控制程序存储器、静态数 据存储器、所有外设的读写访问。 (3)STM32的功能外设较多,分为高速外设、低速外设两类,各自通过桥接再通过AHB 系统总线连接至总线矩阵,从而实现与Cortex-M3内核的接口。两类外设的时钟可各自配 置,速度不一样。具体某个外设属于高速还是低速,已经被ST明确规定,可参阅图4-3标示 的信息。所有外设均有两种访问操作方式:一是传统的方式,通过相应总线由CPU 发出读 写指令进行访问,这种方式适用于读写数据较小、速度相对较低的场合;二是DMA方式,即 直接存储器存取,在这种方式下,外设可发出DMA请求,不再通过CPU而直接与指定的存储 区发生数据交换,因此可大大提高数据访问操作的速度。 (4)STM32的系统时钟均由复位与时钟控制器RCC产生,它有一整套的时钟管理设备, 由它为系统和各种外设提供所需的时钟以确定各自的工作速度。 3.STM32F103VCT微控制器外部引脚 STM32F103VCT的外部引脚如图4-5所示。 图4-5 STM32F103VCT外部引脚图 (1)5个16位的GPIO口:PA、PB、PC、PD、PE;(80) (2)VDD、VSS:主电源引脚,2.0V—3.6V

(3)VDDA、VSSA:模拟电源引脚,供给ADC和DAC。(4)VREE、+VREF-:参考电源引脚,ADC和DAC的参考电压。(5)VBAT:后备电池引脚。(6)OSCINOSCOUT:外部晶振引脚。(7)NRST:复位引脚。(8)BOOT1:(9)NC:空脚。STM32的时钟树4.2.3众所周知,微控制器(处理器)的运行必须要依赖周期性的时钟脉冲,它往往由一个外部晶体振荡器提供时钟输入为始,最终转换为多个外部设备的周期性运作为目的,这种时钟“能量”扩散流动的路径,犹如大树的养分通过主干流向各个分支,因此常称之为“时钟树”。在一些传统的低端8位单片机,诸如51、AVR等单片机,它们也具备自身的一个时钟树系统,但它们中的绝大部分是不受用户控制的,亦即在单片机上电后,时钟树就固定在某种不可更改的状态。例如,51单片机使用典型的12MHz晶振作为时钟源,则其诸如I/0口、定时器、串口等外设的驱动时钟速率便被系统固定,用户将无法更改此时钟的速率,除非更换晶振。而STM32微控制器的时钟树则是可配置的,其时钟输入源与最终达到外设处的时钟速率不再有固定的关系。图4-6是STM32微控制器的时钟树框图。STM32F10XX时钟系统框图及说明中Ra器aima0PUeA开外132电:6623512国美8316正康用HCLKuptoNHSIRCPOROEyOBC_OUTTaAPBLoNtTIMOCLKPAOSCIN时通用定时送时Wlere2APIHT韩色时PrePCLKIDSYSCLETIMI-TIMICLKELTIMIR4到的动们换型ABCSIK计M:的子OSC3ZIN电种排2RTECIKCE2.OUrADC板分能开街USBUSBCLK48MHz田羊A#4中NPO分力46.6中养机建国票IWDGCLINI液空看门润时钟日顶开统高牛相连其南种遥信STM32释放您的创造力可量美用式必照218-15图4-6STM32时钟树框图STM32的时钟系统比较复杂,但又十分重要。理解STM32的时钟树对理解STM32十分重要。下面分五个部分择要对其进行阐述。1.STM32内部RC振荡器与外部晶振的选择116
116 (3)VDDA、VSSA:模拟电源引脚,供给ADC和DAC。 (4)VREF、+VREF-:参考电源引脚,ADC和DAC的参考电压。 (5)VBAT:后备电池引脚。 (6)OSC IN OSC OUT:外部晶振引脚。 (7)NRST:复位引脚。 (8)BOOT1: (9)NC:空脚。 4.2.3 STM32的时钟树 众所周知,微控制器(处理器)的运行必须要依赖周期性的时钟脉冲,它往往由一个外 部晶体振荡器提供时钟输入为始,最终转换为多个外部设备的周期性运作为目的,这种时 钟“能量”扩散流动的路径,犹如大树的养分通过主干流向各个分支,因此常称之为“时 钟树'。 在一些传统的低端8位单片机,诸如51、AVR等单片机,它们也具备自身的一个时钟树 系统,但它们中的绝大部分是不受用户控制的,亦即在单片机上电后,时钟树就固定在某 种不可更改的状态。例如,51单片机使用典型的12MHz晶振作为时钟源,则其诸如I/O口、 定时器、串口等外设的驱动时钟速率便被系统固定,用户将无法更改此时钟的速率,除非 更换晶振。而STM32微控制器的时钟树则是可配置的,其时钟输入源与最终达到外设处的时 钟速率不再有固定的关系。图4-6是STM32微控制器的时钟树框图。 图4-6 STM32时钟树框图 STM32的时钟系统比较复杂,但又十分重要。理解STM32的时钟树对理解STM32十分重要 。下面分五个部分择要对其进行阐述。 1.STM32内部RC振荡器与外部晶振的选择