2、STM32 系统时钟配置
2016-11-27 11:53
211 查看
STM32F103外部接8M的振荡器,经过倍频后最高可达72MHz。目前TI的M3系列芯片最高可达80MHz。在stm32固件库3.0中对时钟频率的选择进行了大大的简化,系统调用函数为 SystemInit();该函数中会对系统各个总线时钟进行如下配置 :
constuint32_t SystemFrequency = SYSCLK_FREQ_72MHz; /* 硬件频率 */
constuint32_t SystemFrequency_SysClk = SYSCLK_FREQ_72MHz; /* 系统时钟 */
const uint32_t SystemFrequency_AHBClk = SYSCLK_FREQ_72MHz; /* AHB总线频率 */
constuint32_t SystemFrequency_APB1Clk = SYSCLK_FREQ_72MHz/2; /* APB1总线频率 */
constuint32_t SystemFrequency_AHB2Clk = SYSCLK_FREQ_72MHz; /* APB2总线频率 */
上面的函数只能将时钟设置为72MHz,如果需要自己定义各个总线的时钟,可进行如下初始化 :
void RCC_HSE_Configuration(void)
{
RCC_DeInit(); /* 将外设RCC寄存器重设为缺省值 */
RCC_HSEConfig(RCC_HSE_ON); /* 设置外部高速晶振(HSE)打开 */
if (RCC_WaitForHSEStartUp() == SUNCESS) /* 等待外部晶振HSE起振 */
{
/* 设置AHB时钟HCLK : RCC_SYSCLK_Div1 – AHB时钟 = 系统时钟 */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* 设置高速AHB时钟 PCLK2 : RCC_HCLK_Div1 – AHB2时钟 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* 设置低速AHB时钟 PCLK1 : RCC_HCLK_Div2 – AHB1时钟 = HCLK/2 */
RCC_PCLK1Config(RCC_HCLK_Div2);
/* 设置PLL时钟源及倍频系数, 9 表示倍频的倍数 8*9 = 72MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/* 使能PLL */
RCC_PLLCmd(ENABLE);
/* 检查指定的RCC标志位-PLL是否准备好 */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* 设置系统时钟 */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* 0x08 : PLL作为系统时钟 */
while(RCC_GetSYSCLKSource() != 0x08);
}
}
相关文章推荐
- STM32学习笔记2-系统时钟知识及程序配置
- STM32系统时钟配置
- stm32时钟系统配置
- STM32 HAL 库学习笔记之-------(系统时钟配置)
- STM32系统时钟设置,采用外部有源晶振相关配置问题
- stm32系统时钟配置函数
- 学习笔记∣stm32l0xx时钟系统详解与代码配置
- STM32 时钟 系统时钟 配置 与 时钟树解析
- STM32系统时钟配置
- STM32 自行配置系统时钟
- STM32系统学习——RCC(使用HSE/HSI配置时钟)
- 2011-03-10 17:04 STM32 时钟 系统时钟 配置 与 时钟树解析
- STM32系统时钟的配置
- 学习下stm32 配置 HSI作为系统时钟,但意义不大,一般不这样做!
- STM32学习笔记2-系统时钟知识及程序配置
- 如何在MDK中查看系统时钟配置(stm32编程技巧小记)
- STM32时钟源时钟系统配置
- STM32 系统时钟的配置
- STM32的时钟系统
- stm32 系统时钟设置