STM32F4_RCC系统时钟配置及描述
2017-08-13 15:14
666 查看
STM32F4_RCC系统时钟配置及描述
1. stm32时钟树分析
在《STM32F4xx中文参考手册.pdf》的第6章介绍了RCC时钟树,时钟树如下:(1)时钟分类
STM32芯片(所有型号)的时钟包含4类:高速外部时钟
高速内部时钟
低速外部时钟
低速内部时钟
(2) 时钟源
从上图中可以看出,驱动stm32的系统时钟源有3种:内部高速时钟
HSE 外部高速时钟
PLLCLK倍频时钟
(3)怎么得到最高168MHz的系统频率
从图中可知,SYSCLK可以又3种时钟源提供:HSI、HSE、PLLCLK,HSI的时钟频率为16MHz,HSE的时钟频率为4~26MHz都不可能获得168MHz的系统频率,唯一能获得168MHz的只有PLLCLK,那么PLLCLK怎么得到168MHz呢?获得PLLCLK时钟如下图所示:
从图中可知:获得PLLCLK可以通过HSI或者HSE经PLL获得。现假设通过外部时钟HSE获得,且外部时钟为8MHz,那么获得168MHz频率的值可以如下取值:
(4)怎么配置AHB(Advanced High performance Bus)和APB(Advanced Peripheral Bus)时钟?
从图中可知配置AHB和APB的分屏系数就能够得到AHB和APB的时钟。
2. 代码分析
static ErrorStatus Stm32f4xxClockInit(void){
#define PLL_M 8 #define PLL_N 336 #define PLL_P 2 #define PLL_Q 7 ErrorStatus HSEStartUpStatus; RCC_DeInit(); /* 使能外部晶振时钟 */ RCC_HSEConfig(RCC_HSE_ON); /* 等待外部晶振源启振 */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); while(HSEStartUpStatus == ERROR); /* 设置HCLK, PCLK1,PCLK2 分频系数 */ RCC_HCLKConfig(RCC_SYSCLK_Div1); //(HCLK=SYSCLK)=168MHz RCC_PCLK1Config(RCC_HCLK_Div4); //(PCLK1=SYSCLK/4)=42MHz RCC_PCLK2Config(RCC_HCLK_Div2); //(PCLK2=SYSCLK/2)=84MHz /* 配置PLLCLK时钟 * PLL=8MHz * N/ (M*P)=8MHz* 336 /(8*2) = 168MHz */ RCC_PLLConfig(RCC_PLLSource_HSE,PLL_M ,PLL_N ,PLL_P,PLL_Q); RCC_PLLCmd(ENABLE); while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); /* 选择PLLCLK作为系统时钟源 */ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); while(RCC_GetSYSCLKSource() != 0x08); /* 关闭内部时钟HSI */ RCC_HSICmd(DISABLE); return HSEStartUpStatus;
}
相关文章推荐
- STM32F4_RCC系统时钟配置及描述
- STM32F4_RCC系统时钟配置及描述
- STM32F4系统时钟配置及描述
- stm32F4库函数中的RCC系统时钟配置
- STM32系统学习——RCC(使用HSE/HSI配置时钟)
- STM32F4xx那点事(二)——系统时钟的配置
- STM32F334系统时钟的配置RCC_Config()
- RCC—使用 HSE/HIS 配置时钟
- 学习下stm32 配置 HSI作为系统时钟,但意义不大,一般不这样做!
- STM32学习笔记2-系统时钟知识及程序配置
- uboot优美代码赏析3:系统时钟配置
- STM32的时钟系统RCC详细整理(转)
- 配置时间同步并将系统时间写入硬件时钟和配yum
- STM32F4如何设置系统时钟,非常重要
- STM32F429 时钟系统笔记
- STM32F4 RCC及SystemInit配置分析
- 1.关于时钟系统的配置
- STM32F103 使用HSI配置系统时钟为64MHZ
- STM32F4再探-1.时钟系统
- STM32F4_USART配置及细节描述