1、嵌入式单片机原理及应用 1 ARM嵌入式系统概述 2 STM32单片机结构和最小系统 3 基于标准外设库的C语言程序设计基础 4 STM32通用输入输出GPIO 5 STM32外部中断 6 STM32通用定时器 7 STM32通用同步/异步收发器USART 8 直接存储器存取DMA 9 STM32的模数转换器ADC 10 STM32的集成电路总线I2C 11 STM32的串行外设接口SPI第第2章章 STM32STM32单片机结构和最小系统单片机结构和最小系统2.1 STM32F103微控制器外部结构微控制器外部结构 STM32F103系列芯片包括从36脚至100脚不同封装形式,STM32系列
2、命名遵循一定的规则:芯片类型:F通用快闪,L低电压(1.653.6V),W无线系统芯片。103ARM Cortex-M3内核,增强型;050ARM Cortex-M0内核;101ARM Cortex-M3内核,基本型;102ARM Cortex-M3内核,USB基本型;105ARM Cortex-M3内核,USB互联网型;107ARM Cortex-M3内核,USB互联网型、以太网型;215/217ARM Cortex-M3内核,加密模块;405/407ARM Cortex-M4内核,不加密模块等。引脚数目:R64PIN,F20PIN,G28PIN;K32PIN,T36PIN,H40PIN,C
3、48PIN,U63PIN,O90PIN,V100PIN,Q132PIN,Z144PIN,I176PIN。B128KB Flash(中容量),416KB Flash(小容量),632KB Flash(小容量),864KB Flash(中容量),C256KB Flash(大容量),D384KB Flash(大容量),E512KB Flash(大容量),F768KB Flash(大容量),G1MKB Flash(大容量)。封装信息:TLQFP,HBGA,UVFQFPN,YWLCSP。工作温度范围:6-4085(工业级),7-40105(工业级)。2.1 STM32F103微控制器外部结构微控制器外部
4、结构 1.芯片系列:STM32代表ST品牌Cortex-Mx系列内核(ARM)的32位MCU。2.芯片类型:F通用快闪,L低电压(1.653.6V),W无线系统芯片。3.芯片子系列:103ARM Cortex-M3内核,增强型;050ARM Cortex-M0内核;101ARM Cortex-M3内核,基本型;102ARM Cortex-M3内核,USB基本型;105ARM Cortex-M3内核,USB互联网型;107ARM Cortex-M3内核,USB互联网型、以太网型;215/217ARM Cortex-M3内核,加密模块;405/407ARM Cortex-M4内核,不加密模块等。4
5、.引脚数目:R64PIN,F20PIN,G28PIN;K32PIN,T36PIN,H40PIN,C48PIN,U63PIN,O90PIN,V100PIN,Q132PIN,Z144PIN,I176PIN。5.Flash容量:B128KB Flash(中容量),416KB Flash(小容量),632KB Flash(小容量),864KB Flash(中容量),C256KB Flash(大容量),D384KB Flash(大容量),E512KB Flash(大容量),F768KB Flash(大容量),G1MKB Flash(大容量)。6.封装信息:TLQFP,HBGA,UVFQFPN,YWLCS
6、P。7.工作温度范围:6-4085(工业级),7-40105(工业级)。8.可选项:此部分可以没有,可以用于标示内部固件版本号。2.1 STM32F103微控制器外部结构微控制器外部结构 1.电源:VDD_x(x=1,2,3,4)、VSS_x(x=1,2,3,4):2.0-3.6;2.4-3.6VBAT:1.8-3.6VDDA,VSSA:ADC专用2.复位:NRST,低电平3.时钟控制:OSC_IN,OSC_OUT:4-16MHzOSC32_IN,OSC32_OUT:32.768kHz4.启动配置:BOOT0,BOOT1配置启动模式5.输入输出口:PAx(x=0,1,2,15)、PBx(x=0
7、,1,2,15)、PCx(x=0,1,2,15)、PD2。可作为通用输入输出,还可经过配置实现特定的第二功能,如ADC、USART、I2C、SPI等。2.2 STM32F103总线和存储器结构总线和存储器结构2.2.1 系统总线构架系统总线构架 四个主动单元:Cortex-M3 内核的 ICode 总线(I-bus)、DCode 总线(D-bus)、System 总线(S-bus)和通用 DMA(GP-DMA)。三个被动单元:内部SRAM、内部Flash 存储器、AHB 到 APB 的桥(AHB2APBx,连接 所有的 APB 设备)。STM32F10 x 处理器总线结构处理器总线结构总线结构
8、中各单元的功能总线结构中各单元的功能 ICode 总线:将 Flash 存储器指令接口与 Cortex-M3 内核的指令总线相连接,用于指 令预取;DCode 总线:将 Flash 存储器的数据接口与 Cortex-M3 内核的 DCode 总线相连接,用于常量加载和调试访问;System 总线:将Cortex-M3 内核的 System 总线(外设总线)连接到总线矩阵;总线结构中各单元的功能总线结构中各单元的功能 DMA 总线:将DMA 的 AHB 主控接口与总线矩阵相连;总线矩阵:用于连接三个主动单元部件和三个被动单元,负责协调和仲裁Cortex-M3 内核和 DMA 对 SRAM 的访问
9、,仲裁采用轮换算法。AHB/APB 桥:两个 AHB/APB 桥在 AHB 和 2 个 APB 总线之间提供完全同步连接。2.3 时钟电路、复位电路、启动配置时钟电路、复位电路、启动配置 在STM32中有5个时钟源,分别为HSI、HSE、LSE、LSI、PLL1.HSI:高速内部时钟信号8MHz 通过8MHz的内部RC振荡器产生,并且可被直接用做系统时钟,或者经过2分频后作为PLL的输入。2.HSE:高速外部时钟信号4-25MHz 可以通过外部直接提供时钟,从OSC_IN输入,或使用外部陶瓷/晶体谐振器。HSI比HSE有更快的启动时间,但频率精确度没有外部晶体振荡器高。3.LSE:低速外部时钟
10、信号32.768KHZ 振荡器是一个32.768KHz的低速外部晶体/陶瓷振荡器,它为RTC或其它功能提供低功耗且精确的时钟源。4.LSI:低速内部时钟信号30-60KHz LSIRC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。5.PLL:锁相环倍频输出 用来倍频HIS或者HSE,时钟输入源可选择为HSI/2、HSE或者HSE/2,倍频可选择为216倍,但是其输出频率最大不得超过72MHz。2.3.1 时钟时钟控制控制 STM32F10 x支持电源复位、系统复位、和备份区域复位三种复位形式。2.3.2 复位复位2.3.3 启动配置 STM3
11、2F103x因为固定的存储器映像,代码区始终从地址0 x00000000开始,通过ICode和DCode总线访问。启动之后,CPU从地址0 x00000000获取堆栈顶的地址,并从启动存储器的0 x00000004指示的地址开始执行代码。而数据区(SARM)始终从地址0 x20000000开始,通过系统总线访问。STM32F103x的CPU始终从ICode总线获取复位向量,即启动仅适合于从代码区开始。而常用的程序代码存放在Flash中,因此最典型的是从Flash启动。STM32F103微控制器实现了一个特殊的机制,系统可以不仅仅从Flash存储器启动,还可以从系统存储器或内置SRAM启动。2.
12、4 最小系统设计最小系统设计典型的最小系统由微控制器芯片、供电电路、时钟电路、复位电路、启动配置电路和程序下载电路构成2.4最小系统设计 1.电源:STM32F103系列微控制器的工作电压在+2.0V+3.6V之间。由于常用电源为5V,必须采用转换电路把5V电压转换为23.6之间。电源转换芯片REG1117-3.3是一款正电压输出的低压降三端线性稳压电路,输入5V电压,输出固定的3.3V电压 2.时钟:时钟通常由晶体振荡器(简称晶振)产生,图2-9中时钟部分提供了两个时钟源,Y1是32.768kHz晶振,为RTC提供时钟。Y2是8MHz晶振,为整个系统提供时钟。3.复位:采用按键和保护电阻电容构成复位电路,按下按键将触发系统复位,具体电路如图2-9中复位部分所示。4.启动模式:启动模式由BOOT0和BOOT1选择,为了便于设置,BOOT0接电平,并且和BOOT1通过2X2插针相连,通过跳线可以配置三种不同启动模式。5.下载:JTAG是一种国际标准测试协议,主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如ARM、DSP、FPGA器件等。采用4线的JTAG下载方式,有效节省IO口。6.IO口:所有IO通过插针引出,方便扩展。大部分IO具有第二功能第第1 1章章 ARMARM嵌入式系统概述嵌入式系统概述