STM32F0xx 微控制器的时钟配置

合集下载

STM32系列MCU硬件实时时钟(RTC)应用笔记说明书

STM32系列MCU硬件实时时钟(RTC)应用笔记说明书

2017年6月Doc ID 018624 Rev 1 [English Rev 5]1/45AN3371应用笔记在 STM32 F0、F2、F3、F4 和 L1 系列MCU 中使用硬件实时时钟(RTC )前言实时时钟 (RTC) 是记录当前时间的计算机时钟。

RTC 不仅应用于个人计算机、服务器和嵌入式系统,几乎所有需要准确计时的电子设备也都会使用。

支持 RTC 的微控制器可用于精密计时器、闹钟、手表、小型电子记事薄以及其它多种设备。

本应用笔记介绍超低功耗中等容量、超低功耗大容量、F0、F2和 F4 系列器件微控制器中嵌入式实时时钟 (RTC) 控制器的特性,以及将 RTC 用于日历、闹钟、定时唤醒单元、入侵检测、时间戳和校准应用时所需的配置步骤。

本应用笔记提供了含有配置信息的示例,有助于您快速准确地针对日历、闹钟、定时唤醒单元、入侵检测、时间戳和校准应用配置 RTC 。

注:所有示例和说明均基于 STM32L1xx 、STM32F0xx 、STM32F2xx 、STM32F4xx 和STM32F3xx 固件库,以及 STM32L1xx (RM0038)、STM32F0xx (RM0091)、STM32F2xx (RM0033)、STM32F4xx (RM0090)、STM32F37x (RM0313) 和 STM32F30x(RM0316) 的参考手册。

本文提到的STM32 指超低功耗中等容量、超低功耗大容量、F0、F2 和 F4 系列器件。

超低功耗中等 (ULPM) 容量器件包括 STM32L151xx 和 STM32L152xx 微控制器,Flash 容量在 64 KB 到 128 KB 之间。

超低功耗大 (ULPH) 容量器件包括 STM32L151xx 、STM32L152xx 和 STM32L162xx 微控制器,Flash 容量为 384 KB 。

F2 系列器件包括 STM32F205xx 、STM32F207xx 、STM32F215xx 和 STM32F217xx 微控制器。

STM32入门教程--系统时钟配置

STM32入门教程--系统时钟配置

STM32 系统时钟配置一、STM32的时钟系统时钟是什么?时钟通常是振荡器(如晶振)产生的特定频率的方波信号,时钟周期是时钟频率的倒数,时钟频率1MHz时钟周期为1/1000000=1us。

时钟周期是MCU处理指令的最小时间单元,每个程序指令都需要若干个时钟周期,MCU的时钟频率越快,完成一个指令的时间就越短,速度就越快。

时钟是MCU运行的基础,好比MCU的脉搏,是MCU性能的重要参数。

每个MCU 都是在某个特定的时钟频率下进行工作的,如C51单片机时钟频率为12MHz,而STM32F103 的系统时钟频率是72MHz。

STM32的时钟系统STM32时钟频率较高,时钟越快功耗越大,同时抗电磁干扰能力也会越弱。

而且STM32外设非常多,而通常外设是不需要像系统时钟那么高的频率的,比如看门狗和RTC 只需要几十K的时钟即可。

另外实际使用的时候通常只会用到有限的几个外设,STM32可以只给需要启动的外设分配时钟,以此来降低功耗。

由此可看出STM32 的时钟系统较为复杂,它采用了多个时钟源的方法来解决这些问题。

STM32 有4个独立时钟源:HSI、HSE、LSI、LSE。

①、HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。

②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。

③、LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。

④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。

其中LSI是作为IWDGCLK(独立看门狗)时钟源和RTC时钟源而独立使用,HSI高速内部时钟 HSE高速外部时钟 PLL锁相环时钟这三个经过分频或者倍频作为系统时钟来使用基本时钟源(图中绿色箭头指出):(1)HSI高速内部时钟,RC振荡器,8MHz。

(2)HSE高速外部时钟,石英/陶瓷谐振器,8MHz。

(3)LSI低速内部时钟,RC振荡器,40kHz。

STM32F0xx 微控制器的时钟配置介绍

STM32F0xx 微控制器的时钟配置介绍

2 年 05 月
文档 ID 022837 第 1 版
1/16

目录
目录
AN4055
1
术语表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 专家模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4
已知限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
文档 ID 022837 第 1 版
3/16
3
图片索引
图片索引
AN4055
图 1. 图 2. 图 3. 图 4. 图 5. 图 6. 图 7.
时钟结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 I2S 时钟结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 向导模式用户界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 选择时钟源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 文件生成错误 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 专家模式用户界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 超出系统时钟频率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

STM32时钟和GPIO配置

STM32时钟和GPIO配置

STM32时钟和GPIO配置STM32F1xx 系统时钟来源:STM32F1中⽂参考⼿册 6.2时钟时钟的作⽤决定了程序执⾏的速度,给芯⽚提供⼀个稳定的执⾏频率1. STM32F103R8 最⾼速率是多少??72 MHz maximum frequency2. 如果采⽤最⾼频率:执⾏⼀条指令 1/72M s ==> 1/72us3. 精简指令集:⼏乎所有的指令都是消耗⼀个时钟节拍(1/72 us)执⾏R8的时钟来源1. ⾼速外部时钟信号(HSE) 4 – 16M 给系统时钟提供时钟信号2. ⾼速内部时钟信号(HSI) 内部RC振荡器3. 低速外部时钟信号(LSE) 32.768 给RTC实时时钟提供时钟信号4. 低速内部时钟信号(LSI)系统时钟来源1. HSI振荡器时钟2. HSE振荡器时钟3. PLL时钟R8的时钟树和外设分布来⾃:STM32F103R8数据⼿册 2.1 Device overviewSTM32时钟的配置1. PLL的倍频因⼦:HSE * PLLMUL = 72M Hz2. AHB的频率:72M Hz3. APB2的频率:72M Hz4. APB1的频率:36M Hz修改HSE_VALUE设置函数static void SetSysClockTo72(void)中的值GPIO的配置GPIO的作⽤GPIO通⽤的输⼊输出外设数字接⼝:0/10 -- TTL电平:0v~1.5v1 -- TTL电平:2.5v~5vSTM32F103C8 : 0 => 0v ± 0.1 1 => 3.3v ± 0.3vSTM32 中GPIO⼝如何表⽰(理解)PA0 PA1 PA2..... PA15 ; PB0 .....P port 端⼝A B C.... 端⼝号0 1 ..... 15 端⼝位每个端⼝最多有16个端⼝位PA1 端⼝A 的第1位PA0 端⼝A 的第0位GPIO的相关模式输⼊:4种模拟输⼊:输⼊的模拟量,⽤于ADC转化。

STM32入门系列-STM32时钟系统,时钟使能配置函数

STM32入门系列-STM32时钟系统,时钟使能配置函数

STM32⼊门系列-STM32时钟系统,时钟使能配置函数 之前的推⽂中说到,当使⽤⼀个外设时,必须先使能它的。

怎么通过库函数使能时钟呢?如需了解寄存器配置时钟,可以参考《STM32F10x中⽂参考⼿册》“复位和时钟控制(RCC)”章节,其中有详细的寄存器介绍。

固件库已经把时钟相关寄存器的使能配置都封装好,放在stm32f10x_rcc.c和stm32f10x_rcc.h中。

只需要打开stm32f10x_rcc.h⽂件,会发现有很多的宏定义和时钟使能函数的声明。

这些时钟函数可⼤致分为三类。

⼀类是外设时钟使能函数,⼀类是时钟源和倍频因⼦配置函数,还有⼀类是外设复位函数。

当然还有⼏个获取时钟源配置的函数。

下⾯就来简单介绍下这些函数的使⽤。

⾸先看⼀下时钟使能函数,时钟使能函数包括外设时钟使能和时钟源使能。

外设时钟使能相关函数如下:void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);上⾯3个时钟使能函数也正是STM32的3条总线(这个在前⾯介绍存储器与寄存器章节讲过)。

由于STM32的外设都是挂接在AHB和APB 总线上的,所以要使能外设时钟,也就是使能对应外设所挂接的总线时钟。

⽐如GPIO外设它是挂接在APB2总线上的,如果使⽤GPIO外设,就需要先使能APB2总线时钟,使能时钟代码如下。

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph,FunctionalState NewState);要想哪个外设挂接在哪个总线上呢,可以通过STM32中⽂参考⼿册查找,还可以在固件库stm32f10x_rcc.h⽂件中查找。

STM32F时钟配置1

STM32F时钟配置1
//前面要想得到的 SYSCLK 在这里就知道了。因为 PLL 输出作为系统时钟,即 //SYSCLK=PLLCLK=36M
//程序中需要用的其他时钟也可以确定了。 //因为 APB1 Prescaler=1(没有分频),所以 TIMxCLK=PLCK1=36M //因为 APB2 Prescaler=1(没有分频),所以 TIM1CLK=PLCK2=36M //在 SystemInit 中 ADCPRE:ADC 预分频 00:PCLK2 2 分频后作为 ADC 时钟,即 ADCCLK=PCLK2/2,所以 ADCCLK=18M
FLASH->ACR |= FLASH_ACR_PRFTBE;
FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1;
CanolaFlower
RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
RCC->CIR = 0x009F0000;
SetSysClock(); }
static void SetSysClockTo36(void) { __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
//注释为:SYSLCK,HCLK,PCLK2 和 PCLK1 的配置
RCC->CR |= RCC_CR_PLLON;
while((RCC->CR & RCC_CR_PLLRDY) == 0) { }
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;

STM32时钟详细配置

STM32时钟详细配置

STM32时钟配置STM32时钟配置步骤// 开启HSI时钟寄存器操作1).开启高速时钟HSE // 设置时钟控制寄存器RCC_CR 位16 置1使能RCC->CR|= 0x00010000;位16 :HSEON:外部高速时钟使能当进入待机和停止模式时,该位由硬件清零,关闭4-16MHz外部振荡器。

当外部4-16MHz 振荡器被用作或被选择将要作为系统时钟时,该位不能被清零。

2).等待高速时钟就绪// 读取时钟控制寄存器RCC_CR位17为1就位while(!(RCC-> CR>>17));位17:HSERDY:外部高速时钟就绪标志由硬件置’1’来指示外部4-16MHz振荡器已经稳定。

在HSEON位清零后,该位需要6个外部4-25MHz振荡器周期清零。

3).设置APB1,APB2,AHB分频系数// 设置时钟配置寄存器RCC_CFGRRCC_CFGR=0x00000400;(AHB :位4-7, (低速)APB1 :位8-10, (高速)APB2 :位11-13)位7:4:HPRE[3:0]:AHB预分频(AHB Prescaler)0xxx:SYSCLK不分频位10:8:PPRE1[2:0]:低速APB预分频(APB1) 100:HCLK 2分频位13:11:PPRE2[2:0]:高速APB预分频(APB2) 0xx:HCLK不分频4).设置PLL倍频// 配置时钟配置寄存器RCC_CFGR 位18-21RCC_CFGR|=7<<18;位21:18:PLLMUL:PLL倍频系数0111:PLL 9倍频输出5).PLL输入时钟源选择// 配置时钟配置寄存器RCC_CFGR 位16RCC_CFGR|=1<<16;位16:PLLSRC:PLL输入时钟源(PLL entry clock source) 1:HSE时钟作为PLL输入时钟。

由软件置’1’或清’0’来选择PLL输入时钟源。

STM32F2xx的时钟说明

STM32F2xx的时钟说明

STM32F207的时钟说明请尽可能参阅英文原文件STM32F207有三个可选的时钟源,具体如下:(1)HIS时钟源(内部集成的时钟源)(2)HSE时钟源(外部高速晶体振荡器提供的时钟源或来自其他设备的时钟源)(3)PLL(PLL的时钟输入可以是HIS或者HSE时钟源)时钟控制器在选择内核及外设的时钟时具有高度的灵活性,以使他们都可以工作在最高频率上,并且能够保证给那些需要特殊频率的外设提供合适的频率,如Ethernet, USB OTG FS 和HS,I2S和SDIO。

三个可选的时钟源都可以独立地打开或关闭,以降低系统的功耗。

设备还有两个次要的时钟源,具体如下:(1)32KHz低速内部RC,可以驱动独立的看门狗和可以选择性使用的RTC(可用于在停止或待机状态下自动唤醒设备)(2)32.768KHz的低速外部晶体,可以作为RTC的时钟源。

几个预分频器用于配置AHB总线的频率,高速APB总线(APB2)和低速APB总线(APB1)所控制的区域的频率。

AHB总线的最高频率是120MHz,APB2总线的最高频率是60MHz,APB1总线的最高频率是30MHz。

所有的外设时钟都来源于系统时钟(SYSCLK),以下的几个除外:(1)USB OTG FS时钟(48MHz),随机模拟产生器(RNG)时钟(<=48MHz),SDIO时钟(<=48MHz),这些时钟来源于一个特殊的PLL(PLL2)的输出(PLL48CLK)。

(2)I2S时钟:为了达到高品质的音频效果,I2S时钟可能从特殊的PLL(PLLI2S)或外部接在I2S_CKIN引脚上的时钟得到。

(3)USB OTG HS(60MHz)时钟,由外部硬件提供。

(4)Ethernet MAC时钟(TX,RX和RMII)可以从外部硬件得到。

Ethernet使用时,AHB总线时钟不得低于25MHz。

RCC模块将AHB时钟8分频后提供给了Cortex系统定时器System Timer。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5
结论 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6
版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3
教程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1 向导模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
㟇$+%ᘏ㒓ǃ‫ݙ‬Ḍǃ ᄬ‫఼ټ‬੠'0$ 㟇FRUWH[㋏㒳ᅮᯊ఼ )+&/.&RUWH[㞾⬅䖤㸠ᯊ䩳
3&/.
㟇$3%໪䆒
4/16
文档 ID 022837 第 1 版
AN4055
1
术语表
表 1.
术语定义 术语
HCLK PCLK1 PCLK2 TIMCLK FCPU Ext.Clock VDD HSI HSE MCLK I2S Fs I2SCLK
AHB 时钟 APB1 时钟 APB2 时钟 定时器时钟 Cortex-M0 时钟 外部时钟 电源 高速内部时钟 高速外部时钟 主时钟 串行数字音频总线 采样频率 I2S 时钟
3.2 专家模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4
已知限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 STM32F0xx 微控制器的时钟方案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.3 I2S 时钟发生器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1. 单击“Microsoft Office”按钮,然后单击“Excel 选项”。 2. 依次单击“信任中心”、“信任中心设置”、“宏设置”。 3. 单击“启用所有宏(不推荐;可能会运行有潜在危险的代码)”。 4. 依次单击“信任中心”、“信任中心设置”、“ActiveX 设置”。 5. 单击“无限制启用所有控件并且不进行提示(不推荐;可能会运行有潜在危险的控件)”。 6. 单击“确定”。
有关如何启用宏和 ActiveX 控件的更多信息,请参见 Microsoft Office 网站。
2.2
2.2.1
2
硬件要求
简介
时钟工具可以为 STM32F0xx 微控制器配置系统时钟并生成 system_stm32f0xx.c 文件。 system_stm32f0xx.c 文件是系统时钟配置文件模板,可以修改该文件以选择相应的系统时钟 频率和配置 Flash 等待周期。
2/16
文档 ID 022837 第 1 版
AN4055
表格索引
表格索引
表 1. 表 2.
术语定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 文档版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
所有外设始终均源自 SYSCLK。 Flash 等待周期(延迟)数根据 CPU (Cortex-M0) 的频率设置: - 如果 0 < SYSCLK <= 24 MHz,则等待周期设置为“0” - 如果 SYSCLK > 24 MHz,则等待周期设置为“1”
时钟结构图
+6, 6<6&/.
)/,7)&/. 㟇)ODVK㓪⿟᥹ষ
STM32F0xx 微控制器的时钟方案
本节介绍的系统时钟方案取决于电压工作范围 (VDD) 与系统时钟频率的关系以及 Flash 等待 周期与系统时钟频率的关系。
6/16
文档 ID 022837 第 1 版
AN4055
使用入门
注: 图 1.
可以使用三种不同的时钟源来驱动系统时钟 (SYSCLK): 1. HSI (8 MHz) 振荡器时钟。 2. HSE(4 MHz 到 32 MHz)振荡器时钟。 3. 主锁相环 (PLL) 时钟,具有 PLL 电压控制的振荡器 (PLLVCO) 输入频率。
2012 年 05 月
文档 ID 022837 第 1 版
1/16

目录
目录
AN4055
1
术语表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Excel® 1997-2003 版
1. 单击菜单栏中的“工具”。 2. 单击“宏”。 3. 单击“安全性”。 4. 单击“低”(不建议使用)。
如果未启用 ActiveX 控件,将显示一条警告消息,询问是否启用 ActiveX。此时,应单击 “确定”以启用 ActiveX 控件。
注:
Excel 2007 版
说明
术语表
文档 ID 022837 第 1 版
5/16
15
使用入门
2
使用入门
AN4055
本节介绍使用时钟工具时的必要条件以及使用步骤。
2.1
软件要求
注:
要在 Windows® 操作系统中使用时钟工具,必须在至少有 256 MB RAM 的 PC 中安装最新 版本的 Windows,如 Windows XP、Vista 或 Windows 7。 在开始使用时钟工具前,确保已在计算机上安装了 Microsoft® Office,然后按照以下步骤操作: ● 从 下载最新版的适用于 STM32F0xx 产品的时钟工具。 ● 启用宏和 ActiveX® 控件:
AN4055 应用笔记
适用于 STM32F0xx 微控制器的时钟配置工具
简介
本应用笔记介绍了适用于 STM32F0xx 微控制器系列的时钟配置工具。 此工具是为了帮助用户配置微控制器时钟,并将电源和 Flash 访问模式等条件考虑在内。 此配置工具在“STM32F0xx_Clock_Configuration_VX.Y.Z.xls”文件中实现,该文件随 STM32F0xx 标准外设库提供,并可以从 下载。 此工具支持 STM32F0xx 的下列功能: ● 配置系统时钟、HCLK 源和输出频率 ● 配置 Flash 等待周期(等待周期数取决于 HCLK 频率) ● 设置 PCLK1、PCLK2、TIMCLK(定时器时钟)和 I2SCLK 频率 ● 生成含有上述全部设置的 system_stm32f0xx.c 文件(STM32F0xx CMSIS Cortex-M0 器
㟇,& 㟇 ,6
0+] +6, +6,5&

3//65& 3//08/
6:
+6,
3// [[
3//&/.
$+$%+% 乘ߚ䜡఼
[
+6(


&66
6<6&/.
/6(
㟇&(&
+&/.

$3% 乘ߚ䜡఼
2.2 硬件要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
文档 ID 022837 第 1 版
3/16
3
图片索引
图片索引
AN4055
图 1. 图 2. 图 3. 图 4. 图 5. 图 6. 图 7.
时钟结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 I2S 时钟结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 向导模式用户界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 选择时钟源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 文件生成错误 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 专家模式用户界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 超出系统时钟频率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
相关文档
最新文档