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振荡器与外部晶振的选择