STM32F4_RCC系统时钟配置及描述
来源:互联网 发布:hse风险矩阵标准 编辑:程序博客网 时间:2024/05/19 12:25
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 7ErrorStatus HSEStartUpStatus;RCC_DeInit();/* 使能外部晶振时钟 */RCC_HSEConfig(RCC_HSE_ON); /* 等待外部晶振源启振 */HSEStartUpStatus = RCC_WaitForHSEStartUp();while(HSEStartUpStatus == ERROR);/* 设置HCLK, PCLK1,PCLK2 分频系数 */RCC_HCLKConfig(RCC_SYSCLK_Div1); //(HCLK=SYSCLK)=168MHzRCC_PCLK1Config(RCC_HCLK_Div4); //(PCLK1=SYSCLK/4)=42MHzRCC_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;
}
阅读全文
0 0
- STM32F4_RCC系统时钟配置及描述
- STM32F4_RCC系统时钟配置及描述
- STM32学习笔记2-系统时钟知识及程序配置
- C8051F340系统时钟配置
- 系统时钟的配置
- Wince系统时钟配置
- STM32系统时钟配置
- STM32系统时钟配置
- STM32F407系统时钟配置
- STM32F103系统时钟配置
- STM32 时钟 系统时钟 配置 与 时钟树解析
- stm32系统时钟配置函数
- STM32系统时钟的配置
- stm32f 查看系统时钟配置
- STM32 系统时钟的配置
- 【KF8V111控制器】系统时钟配置
- STM32F4_USART配置及细节描述
- uCOS iii/uCOS Ⅲ系统时钟解释及CAN通信速度的配置
- 只会喊666的咸鱼
- 第四节总结
- C++继承重名问题
- MAC版E信心跳包加密KEY的逆向
- 最长上升子序列问题(LIS)和最长公共子序列问题(LCS)
- STM32F4_RCC系统时钟配置及描述
- bzoj 2005 能量采集 莫比乌斯反演
- Google大数据三宝之MapReduce
- 读写锁:ReadWriteLock
- C51 定时器Timer使用,及产生1ms系统Tick
- 最短路——解决负权边(Bellman算法)
- MySQL日志种类分析
- Java IO的RandomAccessFile的使用
- 系统编程函数之进程及进程通信