(3.1)--《嵌入式系统原理及设计》第3章.pdf

上传人:奉*** 文档编号:67735442 上传时间:2022-12-26 格式:PDF 页数:15 大小:788.09KB
返回 下载 相关 举报
(3.1)--《嵌入式系统原理及设计》第3章.pdf_第1页
第1页 / 共15页
(3.1)--《嵌入式系统原理及设计》第3章.pdf_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《(3.1)--《嵌入式系统原理及设计》第3章.pdf》由会员分享,可在线阅读,更多相关《(3.1)--《嵌入式系统原理及设计》第3章.pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、47 第 3 章 STM32 微控制器及最小系统 第 3 章 STM32 微控制器及最小系统 本章主要讲解 STM32 单片机微控制器以及最小系统,其中包括:STM32 微控制器概述、STM32存储及启动、STM32最小系统和低功耗模式。3.1 STM32 微控制器概述 3.1.1 STM32 微控制器系列 STM32 系列 32 位闪存微控制器使用 ARM 公司的 Cortex-M3 内核,按内核架构分为不同产品,其中 STM32F 系列有:STM32F103“增强型”系列;STM32F101“基本型”系列;STM32F105、STM32F107“互联型”系列。增强型系列时钟频率达到 72M

2、Hz,基本型时钟频率为 36MHz;内存包括 32KB 到 1M 闪存和 20KB 到 64KB 嵌入式 SRAM;采用了 QFN、QFP和 FBGA 三种封装,不同的封装保持引脚排列一致性,结合 STM32 平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。以 STM32F103RBT6 这个型号的芯片为例,该型号的组成为 7 个部分,其命名规则如下:表 3.1 STM32 芯片命名规则 STM32 STM32 代表 ARM Cortex-M 内核的 32 位微控制器。F F 代表芯片子系列。103 103 代表增强型系列。R

3、 R 这一项代表引脚数,其中 T 代表 36 脚,C 代表 48 脚,R 代表 64 脚,V 代表 100 脚,Z代表 144 脚,I 代表 176 脚。B B 这一项代表内嵌 Flash 容量,其中 6 代表 32K 字节 Flash,8 代表 64K 字节 Flash,B 代表128K 字节 Flash,C 代表 256K 字节 Flash,D 代表 384K 字节 Flash,E 代表 512K 字节 Flash,G 代表 1M 字节 Flash。T T 这一项代表封装,其中 H 代表 BGA 封装,T 代表 LQFP 封装,U 代表 VFQFPN 封装。6 6 这一项代表工作温度范围,

4、其中 6 代表-4085,7 代表-40105。3.1.2 STM32 内部资源 STM32F103 系列微控制器模块框图内部资源如表 3.2 所示。48 嵌入式系统原理及设计 表 3.2 STM32F103 系列微控制器内部资源 本书以 STM32F103 系列芯片中的 STM32RBT6 为例,其引脚如图 3.1 所示。图 3.1STM32 芯片引脚图 STM32F103RB 的内部资源如下所述:(1)内核:ARM 32位Cortex-M3微处理器:72MHz,在存储器的0等待周期访问时可达1.25DMips/MHz(Dhrystone 2.1);单周期乘法和硬件除法。(2)存储器:128

5、K字节的Flash程序存储器;20K字节的SRAM。(3)时钟、复位和电源管理:2.03.6V供电;上电/断电复位(POR/PDR)、可编程电压监测器(PVD);外接416MHz晶体振荡器;内嵌经出厂调校的8MHz的RC振荡器;内嵌带校准的40kHz的RC振荡器;产生CPU时钟的PLL;带校准功能的32kHz RTC振荡器。(4)低功耗;睡眠、停机和待机模式三种模式。(5)2个12位模数转换器,1s转换时间(多达16个输入通道);转换范围:0至3.6V;双采样和保持功能和温度传感器。49 第 3 章 STM32 微控制器及最小系统(6)DMA控制器:7通道DMA控制器,支持定时器、ADC、SP

6、I、I2C和USART等外设。(7)9个通信接口:3个USART接口,支持ISO7816、LIN、IrDA接口和调制解调控制;2个I2C接口(SMBus/PMBus);2个SPI同步串行接口(18Mb/s);1个CAN接口(2.0主动);1个USB2.0全速接口。(8)2个高级控制定时器,4个通用定时器,2个基本控制器,1个实时时钟,2个看门狗定时器和1个系统滴答定时器(SysTick时钟)(9)调试模式:串行线调试(SWD)和JTAG接口。3.1.3 STM32 芯片官方手册 官方资料是所有关于 STM32 知识的源头,也是最好的教程,尤其现在芯片结构越来越复杂,完全靠一本书来讲清楚已是不太

7、容易,本书所讲的内容主要是讲解开发嵌入式系统的过程和思路,很多细节的内容需要去查阅芯片厂家提供的官方资料,有关芯片的手册官方主要提供两种类型资料,一种是具体芯片的说明手册,例如:STM32F103xC_D_E 芯片说明手册,这个资料主要侧重对具体的芯片的管脚定义,功能模块,封装等进行说明,资料总页数就 100 多页;另一种是芯片的开发手册,例如:STM3210 xxx 系列芯片开发手册这个资料主要侧重有关芯片开发讲解,对时钟、存储器架构、各个外设和寄存器都描述得清清楚楚,资料总页数达到了 1000 页,如何开发程序及配置寄存器都要看开发手册。由于目前 STM32 芯片开发主要采用了调用库函数的

8、方式进行,因此 ST 公司也提供了库函数帮助手册,例如:stm32f10 x_stdperiph_lib_um.chm 库函数帮助文件。在使用库函数时,可以通过查阅此文件来了解库函数原型或库函数调用的方法。由于 STM32 芯片采用 Cortex-M3 内核,因此要详细了解内核的架构和特性,可以通过阅读ARM Cortex-M3 权威指南手册来实现。3.2 STM32 存储及启动 3.2.1 STM32 总线及存储区映射(1)STM32 总线系统 STM32 总线连接如图 3.2 所示,其中 STM32 的 Cortex-M3 内核通过指令总线与 Flash存储器连接;数据总线和系统总线和先进

9、高速总线(Adbanced High Speed Buses,简称 AHB)相连。STM32 的内部 SRAM 和 DMA 单元直接与 AHB 总线相连,外部设备使用两条先进设备总线(Advanced Peripheral Buses,简称 APB)连接,而每一条 APB 总线又都与 AHB 总线矩阵相连。AHB 总线的工作频率与内核一致,但 AHB 总线上挂着许多独立的分频器,通过分频器其输出时钟频率可以降低频率从而降低功耗。其中,APB2 总线可以最大为 72MHz 频率运行,而 APB1 总线只能以最大为 36MHz 频率运行。内核和 DMA 单元都可以成为总线上的主机,它们在同时申请连

10、接 SRAM、APB1 或 APB2 时会发生仲裁事件。50 嵌入式系统原理及设计 图 3.2 STM32 内部的总线结构(2)存储区映射 STM32 存储区域是一个大小为 4GB 的线性地址空间,并符合 Cortex-M3 内核的存储映射方案。如图 3.3 所示。代码区(0 x000000000 x1FFFFFFF):该区用来存放程序。SRAM 区(0 x200000000 x3FFFFFFF):该区用于片内 SRAM。片上外设区(0 x400000000 x5FFFFFFF):该区用于片上外设。片上外设区存储结构如上图所示,STM32 分配给各个外围设备的地址空间按总线分为 3 类,APB

11、1 总线外设存储地址见表 3.3,APB2 总线外设存储地址见表 3.4,AHB 总线外设存储地址见表 3.5。表 3.3 APB1 总线外设存储地址表 地址范围 外设 地址范围 外设 0 x4000 00000 x4000 03FF TIM2 定时器 0 x4000 40000 x4000 43FF 保留 0 x4000 04000 x4000 07FF TIM3 定时器 0 x4000 44000 x4000 47FF USART2 0 x4000 08000 x4000 0BFF TIM4 定时器 0 x4000 48000 x4000 4BFF USART3 0 x4000 0C000

12、 x4000 0FFF TIM5 定时器 0 x4000 4C000 x4000 4FFF USART4 0 x4000 10000 x4000 13FF TIM6 定时器 0 x4000 50000 x4000 53FF USART5 0 x4000 14000 x4000 17FF TIM7 定时器 0 x4000 54000 x4000 57FF I2C1 0 x4000 18000 x4000 1BFF TIM12 定时器 0 x4000 58000 x4000 5BFF I2C2 0 x4000 1C000 x4000 1FFF TIM13 定时器 0 x4000 5C000 x40

13、00 5FFF USB 设备 FS 寄存器 0 x4000 20000 x4000 23FF TIM14 定时器 0 x4000 60000 x4000 63FF 共享 USB/CAN SRAM 512B 0 x4000 24000 x4000 27FF 保留 0 x4000 64000 x4000 67FF BxCAN1 0 x4000 28000 x4000 2BFF RTC 0 x4000 68000 x4000 6BFF BxCAN2 0 x4000 2C000 x4000 2FFF WWDC 0 x4000 6C000 x4000 6FFF BKP 0 x4000 30000 x40

14、00 33FF TWDC 0 x4000 70000 x4000 73FF PWR 51 第 3 章 STM32 微控制器及最小系统 0 x4000 34000 x4000 37FF 保留 0 x4000 74000 x4000 77FF DAC 0 x4000 38000 x4000 3BFF SPI2/I2S 0 x4000 78000 x4000 7FFF 保留 0 x4000 3C000 x4000 3FFF SPI3/I2S 表 3.4 APB2 总线外设存储地址表 地址范围 外设 地址范围 外设 0 x4001 0000-0 x4001 03FF AFIO 0 x4001 2000

15、-0 x4001 2FFF TIM1 定时器 0 x4001 0400-0 x4001 07FF EXIT 0 x4001 3000-0 x4001 33FF SPH 0 x4001 0800-0 x4001 0BFF GPIO A 0 x4001 3400-0 x4001 37FF TIM8 定时器 0 x4001 0C00-0 x4001 0FFF GPIO B 0 x4001 3800-0 x4001 3BFF USART1 0 x4001 1000-0 x4001 13FF GPIO C 0 x4001 3C00-0 x4001 3FFF ADC3 0 x4001 1400-0 x40

16、01 17FF GPIO D 0 x4001 4000-0 x4001 4BFF 保留 0 x4001 1800-0 x4001 1BFF GPIO E 0 x4001 4C00-0 x4001 4FFF TIM9 定时器 0 x4001 1C00-0 x4001 1FFF GPIO F 0 x4001 5000-0 x4001 53FF TIM10 定时器 0 x4001 2000-0 x4001 23FF GPIO G 0 x4001 5400-0 x4001 57FF TIM11 定时器 0 x4001 2400-0 x4001 27FF ADC1 0 x4001 5800-0 x400

17、1 7FFF 保留 0 x4001 2800-0 x4001 28FF ADC2 表 3.5 AHB 总线外设存储地址表 地址范围 外设 地址范围 外设 0 x4001 8000-0 x4001 83FF SDIO 0 x4002 2000-0 x4002 23FF Flash 存储器接口 0 x4001 8400-0 x4001 FFFF 保留 0 x4002 3000-0 x4002 33FF CRC 0 x4002 0000-0 x4002 03FF DMA1 0 x4002 3400-0 x4002 7FFF 保留 0 x4002 0400-0 x4002 07FF DMA2 0 x4

18、002 8000-0 x4002 9FFF Ethernet 0 x4002 0800-0 x4002 0FFF 保留 0 x4003 0000-0 x4FFF FFFF 保留 0 x4002 1000-0 x4002 13FF RCC 0 x5000 0000-0 x5003 FFFF USB OTC FS 0 x4002 1400-0 x4002 1FFF 保留 52 嵌入式系统原理及设计 CodeCode0 x0000 00000 x0007 FFFF0 x2000 00000 x2000 FFFFSRAM外设FSMC块1和块2FSMC块3和块4FSMC寄存器保留CM3 内部外设TIM2

19、TIM3TIM4TIM5TIM6TIM7保留WWDGIWDG保留SPI2SPI3保留USART2USART3UART4UART5I2C1I2C2USB寄存器USB/CAN 共享 512B SRAMBxCAN1BxCAN2BKPPWRADC保留AFIOEXTIPort APort BPort CPort DPort EPort FPort GADC1ADC2TIM1SPI1TIM8USART 1ADC3保留SDIO保留DMA1DMA2保留RCC保留Flash接口保留CRC保留FSMC bank1 NOR/PSRAM1FSMC bank1 NOR/PSRAM2FSMC bank1 NOR/PSRA

20、M4FSMC bank1 NOR/PSRAM3FSMC bank2 NAND(NAND1)FSMC bank3 NAND(NAND2)FSMC bank4 PCCARDFSMC 寄存器保留RTCFlash,系统存储器,SRAM影响区(由BOOT设置)保留Flash保留系统存储器Option BytesSRAM保留 图 3.3STM32 存储器映射 53 第 3 章 STM32 微控制器及最小系统 静态存储器控制器(FSMC)区(0 x600000000 x9FFFFFFF),使用 FSMC 控制器后,可以把 FSMC 提供的 FSMC_A25:0作为地址线,而把 FSMC 提供的 FSMC_D

21、15:0作为数据总线,使用 FSMC 为外部存储器和设备提供地址、数据和控制总线。针对本书主要学习的STM32F103RB 系列芯片来说,由于没有 FSMC 模块,所以此区为保留区。在 0 xA0000000 到 0 xDFFFFFFF 的 1GB 的地址存储空间是用于片外外设扩展;在 0 xE0000000 到 0 xFFFFFFFF 的 512MB 的地址存储空间是用于 NVIC、MPU 及调试组件等使用,是私有外设和供应商制定功能区。代码区起始地址从 0 x00000000 开始;片上 SRAM 从 0 x20000000 开始;用户设备的存储映射从 0 x40000000 开始,其中设

22、备寄存器地址位于外设位带区;Cortex-M3 内核寄存器地址从 0 xE0000000 处开始。Flash 存储区由三部分组成,如图中间所示,首先用户 Flash 区从 0 x08000000 开始;其次系统存储区是一个 4KB 的 Flash 存储空间,存储出厂启动引导(Bootloader);最后一部分从 0 x1FFFF800 开始,含有一组可配置字节,允许用户对 STM32 进行系统配置。Bootloader的主要作用是允许用户通过 USART1 将代码下载进 STM32 的 RAM 中,随后将这些代码写进内部用户 Flash。3.2.2 STM32 启动设置 在 STM32 中,可

23、以通过设置芯片 BOOT0 和 BOOT1 引脚选择 3 种不同启动模式,见下表 3.6;硬件连接见图 3.4。表 3.6 启动模式 BOOT0 和 BOOT1 配置表 启动模式选择引脚 启动模式 说明 BOOT1 BOOT0 x 0 主闪存存储器 主闪存存储器被选为启动区域,这是正常的工作模式 0 1 系统存储器 系统存储器被选为启动区域,这种模式启动的程序功能由厂家设置 1 1 内置 SRAM 内置 SRAM 被选为启动区域,这种模式可以用于调试 图 3.4 启动模式 BOOT0 BOOT1 连接 54 嵌入式系统原理及设计 在系统复位后,系统时钟第 4 个上升沿到来时,BOOT 引脚被锁

24、存,用户可以通过设置BOOT0 和 BOOT1 引脚的状态,选择复位后的启动模式。有如下三种启动方式:1)从 Flash 存储器启动,Flash 存储器被映射到启动空间(0 x00000000),同时仍能在原有的地址(0 x08000000)访问它,即从芯片内置的 Flash 启动。2)从系统存储器启动,系统存储器被映射到启动空间(0 x00000000),同时仍然能在原有的地址(0 x1FFFF000)访问它,芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段 Bootloader。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个 ROM 区。STM32 的厂家 Bootloa

25、der 程序:由于串口不能直接把程序下载到内置的 flash 里面,所以 需 要 使 用 到 ST 公 司 内 嵌 于 系 统 存 储 区(flash 的 某 一 部 分 的 地 址 被 编 为0 x1FFF_F000-0 x1FFF_F7FF,这就是所谓的系统存储器区)的 Bootloader 来引导把程序下载到 flash 里面。程序下载完成后还需要配置 BOOT1:0引脚为 BOOT0=0,BOOT1=X(即从主闪存存储器启动),复位后启动程序(手动复位或者使用硬件自动复位电路)。3)从内置 SRAM 启动,只能在 0 x20000000 开始的地址区访问 SRAM,即从芯片内置的 RA

26、M 区启动,一般在调试时使用。注意,当从内置 SRAM 启动,在应用程序的初始化代码中,必须使用 NVIC 的异常表和偏移寄存器,重新映射向量表到 SRAM 中。3.2.3 程序下载调试电路 STM32 微控制器的下载调试系统支持两种接口标准:5 针的 JTAG 端口和 2 针的 SWD串行接口。这两种接口需要牺牲通用 I/O 口来供给调试器仿真器使用。STM32 复位后,CPU会自动将这些管脚置于第 2 功能状态,此时调试端口就可以使用。如果用户希望使用这些管脚作为通用 I/O,则需要在程序中将这些管脚设置为普通 I/O 口。JTAG 于 1990 年被批准为 IEEEI149.1-1990

27、 测试访问端口和边界扫描结构标准,用于芯片的内部仿真与调试,还常用于实现在线编程(ISP),目前绝大多数芯片均支持 JTAG 协议。SWD 调试方式主要有 SWDCLK、SWDIO 两根信号线,SWDCLK 为主机到 STM32 目标板的时钟信号,SWDIO 为双向数据信号。STM32 系列微处理器将 5 引脚的 JTAG 接口和 2 引脚的 SWD 接口结合在一起,STM32调试端口功能见表 3.7。表 3.7 JTAG 引脚连接说明 SWJ-DP 引脚名 JTAG 调试端口 SWJ 调试端口 引脚分配 类型 描述 类型 调试分配 JTMS/SWDIO 输入 JTAG 测试模式选择 I/O

28、I/O PA13 JTCK/SWDCLK 输入 JTAG 测试时钟 输入 串行线时钟 PA14 JTDI 输入 JTAG 测试数据输入 PA15 JTDO/TRACESWO 输出 JTAG 测试数据输出 异步跟踪 PB3 JNTRST 输入 JTAG 测试复位 PB4 55 第 3 章 STM32 微控制器及最小系统 JTAG IEEE 标准建议在 JTDI、JTMS 和 JNTRST 引脚上添加上拉电阻,但是对 JTCK 没有特别建议,针对 STM32 单片机 JTCK 一般接下拉电阻。图 3.6 JTAG 和 SWD 接口电路图 其中,NRST 连接复位 Reset 电路。同时,也可以从系

29、统存储器启动,利用 ST 公司提供的 Bootloader 程序利用串口实现对程序的下载。3.3 STM32 最小系统 STM32 微控制器运行所必需的条件包括:电源、时钟、复位电路。3.3.1 电源 STM32F103 系列微控制器采用的电源工作范围是 2.03.6V,常规设计一般选用 3.3V 电源,如图 3.6 所示。图 3.6 STM32 电源结构 56 嵌入式系统原理及设计 芯片电源主要分为以下几类:1)主电源 VDD 和 VSS 主电源范围是 2.03.6V,一般选用 3.3V,这个电源还应该满足系统最大的功率要求,这个和芯片以及外设芯片需要的工作电流有关,例如电路工作需要有 30

30、0mA 电流,那就需要至少 3.3V/300mA 的电源。目前 STM32 单片机经常使用的电源稳压 3.3V 电路如图 3.7 所示:图 3.7 供电电路 图中使用 LM1117-3.3 电源稳压芯片,此芯片输入电压可以在 4.518V 范围内,输出 3.3V电压,800mA 额定电流,电路中电容器是为了对电源进行滤波。2)备用电源 VBAT 备用电源在主电源失效后起作用,为实时时钟 RTC、后备寄存器组和实时时钟振荡器提供不间断电源,在备份电池的支持下保持数据不丢失。如果 STM32 最小系统没有使用备用电池,则 VBAT 引脚必须和 VDD 引脚相连接。3)模拟电压 VDDA 为了提高转

31、换精度,ADC 使用一个独立的电源供电,过滤和屏蔽来自 PCB 的毛刺干扰。VDDA 接 2.03.6V,为 ADC、复位模块、RC 振荡器和 PLL 的模拟部分供电。针对STM32F103RB 引脚数小于 100 脚的芯片,ADC 参考电压(VREF)由内部电压源提供;而在引脚数大于(或等于)100 的 STM32 版本型号里,ADC 模块有额外的参考电压引脚 VREF+和VREF-,则 VREF-连接可连接 VSSA,VREF+连接 2.4VVDDA。为了减少电路对模拟部分的干扰,模拟供电与数字常常被隔离开,具体连接关系如图3.8。图 3.8 模电数电连接 3.3.2 复位 STM32F1

32、03 支持 3 种复位形式,即系统复位、电源复位和备份区域复位。1)系统复位 系统复位将复位除时钟控制器 CSR 中的复位标志和备用域寄存器外的所有寄存器。当下57 第 3 章 STM32 微控制器及最小系统 列事件有一个发生都会产生系统复位。NRST 引脚上出现低电平(如外部按钮复位)。其复位效果与需要的时间、微控制器供电电压、复位阈值等相关。为了使其充分复位,在工作电压 3.3V 时,复位时间 200ms。复位入口地址为 0 x00000004。窗口看门狗计数终止(WWDG 复位);独立看门狗计数终止(IWDG 复位);软件复位(SW 复位),通过设置相应的控制寄存器位来实现;低功耗管理复

33、位,进入待机模式或停止模式时引起的复位。可通过查看控制/状态寄存器(RCC_CSR)中的复位标志来识别复位源。2)电源复位 电源复位能复位除备份域寄存器外的所有寄存器。当以下事件发生时,将产生电源复位。利用上电瞬时通过电容短路的特点以及常态断路的特点,产生一个脉冲信号,并连接到芯片 NRST 引脚从而产生 RESET,如图 3.9。图 3.9 Reset 电路 STM32 单片机集成了一个上电复位(POR)和掉电复位(PDR)电路,当供电电压达到 2V 时,系统就能正常工作。只要 VDD 低于特定的阈值 VPOR/PDR,不需要外部复位电路,STM32 就一直处于复位模式。上电复位和掉电复位的

34、波形图,如图 3.10。图 3.10 复位上电响应图 3)备份域复位 当以下事件中之一发生时,产生备份区域复位:软件复位后,备份区域复位可由设置备份区域控制寄存器 RCC_BDCR 中的 BDRST 位产58 嵌入式系统原理及设计 生。在 VDD 和 VBAT 两者掉电的前提下,VDD 或 VBAT 上电将引发备份区域复位。3.3.4 时钟源 STM32 单片机既可以外接晶体振荡器作为时钟源,内部也自带 RC 振荡器,但是内部RC 振荡器比外部晶振来说不够准确,同时也不够稳定,所以在条件允许的情况下,尽量使用外部时钟源。1)高速外部时钟(HSE)它可以来源于晶体/陶瓷谐振器或者通过用户提供的外

35、部时钟。晶体/陶瓷谐振器,可以选择 416MHz 的外部振荡器,为系统提供更为精确的主时钟。外部时钟源主要作为 STM32 处理器和外设的驱动时钟,一般称为高速外部振荡器(HSE_OSC)。用户提供的外部时钟,频率最高可达 25MHz,连接到芯片 SOC_IN 引脚,波形可以是 50%左右占空比的方波、正弦波或三角波。图 3.11 晶振和外部时钟 2)低速外部时钟(LSE)STM32 还可以使用第 2 个外部振荡器,称为低速外部振荡器(LSE_OSC)。一般用于驱动实时时钟(RTC)以及窗口看门狗(IWDG)。像高速外部振荡器那样,LSE 也可以使用外部晶振或者用户自行供给,时钟波形也可以是方

36、波、三角波和正弦波,要求具有 50%左右的占空比。LSE 的典型频率值为 32.768kHz,因为这样可以给实时时钟提供准确的时钟频率。3)高速内部时钟(HSI)HSI 时钟信号由内部 8MHz 的 RC 振荡器产生,可直接作为系统时钟或在 2 分频后作为PLL 输入。HSI 的 RC 振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比 HSE 晶体振荡器短。然而,即使在校准后它的时钟频率精度仍较差。4)低速内部时钟(LSI)LSI 是一个低功耗时钟源,它可以在停机模式或待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。LSI 时钟频率大约 40kHz(在 3060kHz

37、 之间)。5)锁相环倍频输出(PLL)PLL 为锁相环倍频输出,其时钟输入源可选择为 HSI/2、HSE 或者 HSE/2。倍频可选择59 第 3 章 STM32 微控制器及最小系统 为 216 倍,但是其输出频率最大不得超过 72MHz。注意:在 STM32 上如果不使用外部晶振,OSC_IN 和 OSC_OUT 的接法:如果使用内部 RC 振荡器而不使用外部晶振,请按照下面方法处理:对于 100 脚或 144 脚的产品,OSC_IN 应接地,OSC_OUT 应悬空。对于少于 100 脚的产品,有 2 种接法:第 1 种:OSC_IN 和 OSC_OUT 分别通过 10K电阻接地。此方法可提

38、高 EMC 性能;第 2 种:分别重映射 OSC_IN 和 OSC_OUT 至 PD0 和PD1,再配置 PD0 和 PD1 为推挽输出并输出0。此方法可以减小功耗并(相对上面)节省 2个外部电阻。3.3.4 最小化系统 嵌入式系统的最小系统是指以控制器为核心,可以运行起来的最简单的硬件电路组成。一般最小化系统电路,主要电源电路、时钟电路、复位电路、启动电路和程序下载电路,见图3-12。它们主要功能分别为:电源电路提供芯片工作的电源,时钟电路提供芯片工作的时钟,程序下载电路将程序下载到程序存储器,启动电路通知嵌入式芯片程序的存储位置,复位电路初始化内部数据存储器和寄存器。图 3.12 典型的最

39、小系统电路图 60 嵌入式系统原理及设计 3.4 低功耗模式 在系统或电源复位后,微控制器处于运行状态。在运行状态时,电压调节器工作在正常状态;Cortex-M3 处理器正常运行,Cortex-M3 的内部外设(如 NVIC)正常运行;STM32的 PLL、HSE、HIS 正常运行。而当处理器不需继续运行时(如等待某个外部事件),可以利用多种低功耗模式来节省功耗。STM32F103 系列芯片支持 3 种低功耗模式,即睡眠模式(Sleep mode)、停止模式(Stop mode)和待机模式(Standby mode)。睡眠模式:电压调节器工作正常,Cortex-M3 处理器停止运行,但 Cor

40、tex-M3 的内部外设仍然正常运行,PLL、HSE、HSI 也正常运行;所有的 SRAM 和寄存器的内容被保留;所有的 I/O 引脚都保持它们在运行模式时的状态;功耗相对于正常模式得到降低。停止模式:也称为“深度睡眠模式”。电压调节器工作在停止模式,选择性地为某些模块提供 1.8V 电源;Cortex-M3 停止运行,Cortex-M3 的内部外设停止运行;STM32 时钟 PLL、HSE 和 HIS 被关断;所有的 SRAM 和寄存其的内容被保留。待机模式:整个 1.8V 区域断电;Cortex-M3 处理器停止运行,内部外设停止运行;STM32的 PLL、HSE 和 HIS 被关断;SR

41、AM 和寄存器内的内容丢失;备份寄存器内容保留;待机电路维持供电。低功耗模式的比较见下表。表 3.7 低功耗模式比较 模式 进入 唤醒 对 1.8V 区域时钟的影响 对 VDD区域时钟的影响 电压调节器 睡眠 WFI 任一中断 CPU 时钟关,对其他时钟和ADC时钟无影响 无 开 WFE 唤醒事件 停止模式 PDDS 和 LPDS 位+SLEEPDEEP 位+WFI 或 WFE 任一外部中断(在外部中断寄存器中设置)选择性提供1.8V HSI 和 HSE的振荡器关闭 开启或处于低功耗模式(由PWR_CR 设定)待机模式 PDDS 位+SLEEPDEEP 位+WFI 或 WFE WKUP 引脚的

42、上升沿,RTC 闹钟事件。NHST 引脚上的外部复位,IWDG 复位 关闭所有 1.8V区域的时钟 关 当 STM32 从 3 种低功耗模式恢复后的处理如下:当 STM32 处于睡眠状态时,只有处理器停止工作,SRAM、寄存器的值仍然保留,程序当前执行状态信息并未丢失,因此 STM32 从睡眠状态恢复后,回到进入睡眠状态指令的后一条指令开始执行。当 STM32 处于停止状态时,SRAM、寄存器的值仍然保留,因此 STM32 从停止状态恢复后,回到进入停止状态指令的后一条指令开始执行。但不同于睡眠状态,进入停止状态后,STM32时钟关断,因此从停止状态恢复后,STM32将使用内部高速振荡器作为系统时钟(HIS,61 第 3 章 STM32 微控制器及最小系统 频率为不稳定的 8MHz)当 STM32 处于待机状态时,所有 SRAM 和寄存器的值都丢失(恢复默认值),因此从待机状态恢复后,程序重新从复位初始位置开始执行,这相当于一次软件复位效果。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁