STM32F10xx复位和时钟控制(RCC)一览

以下内容适用于小/中/大容量产品。互联网产品于此有差别。

 

一 时钟

RCC,是复位和时钟控制的缩称。顾名思义,其相关feature涉及到两大主题:复位和时钟控制。先看下哪些寄存器跟复位相关

寄存器

描述

RCC_APB2RSTR

控制使用APB2时钟的硬件。包括ADC1-3, GPIOA-G, USART1, TIM1, TIM8, SPI1, AFIO

RCC_APB1RSTR

控制使用APB1时钟的硬件。包括DAC, PWR, CAN, BKP, USB, I2C1-2, UART2-5, SPI2-3, WWDG, TIM2-7

RCC_BDCR

备份域软件复位。另外,还控制RTC时钟选择和时钟使能和LSE时钟使能、ready flag、by-pass

 

然后来看STM32F10xx的复位。

STM32F10XX支持三种形式复位:系统复位、上电复位和备份区域复位。

STM32F10xx复位和时钟控制(RCC)一览_第1张图片

当以下事件中之一发生时,产生备份区域复位。
55/754
1. 软件复位,备份区域复位可由设置备份域控制寄存器 (RCC_BDCR)(6.3.9)
中的
BDRST
位产生。
2. VDDVBAT两者掉电的前提下, VDDVBAT上电将引发备份区域复位。

 

二 clock

总框图如下: 

STM32F10xx复位和时钟控制(RCC)一览_第2张图片

HSE,LSE,HSI和LSI是最原始的真实时钟源(也就是不是由其他时钟经分频或者倍频生成)。

首先看PLLCLK,它有两个时钟源选择:HSI和HSE。受到寄存器位PLLXTPRE(RCC_CFGR的bit17),PLLSRC(RCC_CFGR的bit16)和PLLMUL(RCC_CFGR的bit[21:18])控制。

PLLXTPRE决定是否对HSE进行二分频。

PLLSRC决定选择HSI还是HSE(此时已经不是最原始的时钟源。HSI是经过二分频的。HSE是否分频由PLLXTPRE决断)。

PLLMUL决定上述时钟的倍频系数。

综上,PLLCLK可表示成:

PLLCLK = [HSE/2^PLLXTPRE, HSI/2]{1} * PLLMUL

 

系统时钟SYSCLK有三种选择:PLLCLK,HSI和HSE。由时钟配置寄存器RCC_CFGR的bit[1:0]控制。

AHB时钟的分频系数由RCC_CFGR的bit[7:4]控制。

进一步,APB2和APB1的时钟分频系数也由RCC_CFGR控制。

RTC时钟有三种选择:HSE/128,LSE(32.768kHz)和LSI。是由ECC_BDCR bit[9:8]控制。

另外,LSI固定作为独立看门狗(IWDG)的时钟源。

PLLCLK/2,HSE,HSI和SYSCLK可以作为主时钟输出(MCO),由RCC_CFGR bit[26:24]决定。

USB使用PLLCLK经过分频后的时钟。

I2S2和I2S3使用SYSCLK。

SDIO,AHB总线,核心存储器,DMA,FSMC(Flexible Static Memory Controller,可变静态存储控制器。博文:http://blog.csdn.net/artmcu/article/details/8162510)使用AHB时钟。

AHB时钟八分频后作为Contex系统时钟。

FCLK指的是自由运行时钟。

AHB二分频后作为SDIO AHB接口的时钟。也就是说AHB除了桥接(APB)到外设之外,还通过接口电路连接到SD card。

 

至于AHB时钟的去向,在此先不探究。

 

你可能感兴趣的:(arm)