STM32F103学习之系统时钟配置
一、根据时钟源配置系统时钟(SYSCLK)
1.开发板选择的8M的外部高速时钟(HSE)作为时钟源的最后配置系统时钟为72M。
2.时钟树如下具体配置步骤见代码部分。
二、系统时钟配置步骤
1.代码
#include "stm32f10x_rcc.h"
#include "stm32f10x_flash.h"
void Rcc_Config(void)
{
ErrorStatus err;
// 系统时钟相关的寄存器设为默认值
RCC_DeInit();
// 开启外部高速晶振
RCC_HSEConfig(RCC_HSE_ON);
// 等待HSE晶振正常起振
err = RCC_WaitForHSEStartUp();
if (SUCCESS == err)
{
// 使能FLASH预取缓存
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
// 设置延时等待周期
FLASH_SetLatency(FLASH_Latency_2);
// 将外部高速晶振1分频选为锁相环的时钟源,并且倍频系数配置为9倍频
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
// 使能锁相环时钟
RCC_PLLCmd(ENABLE);
// 等待PLL就绪
while (SET != RCC_GetFlagStatus(RCC_FLAG_PLLRDY));
// 配置AHB的预分频器的分频系数
RCC_HCLKConfig(RCC_SYSCLK_Div1);
// 配置APB1的预分频器的分频系数
RCC_PCLK1Config(RCC_HCLK_Div2);
// 配置APB2的预分频器的分频系数
RCC_PCLK2Config(RCC_HCLK_Div1);
// 选择锁相环的输出时钟作为系统时钟源
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
// 检测系统时钟源是否为锁相环时钟
while (0x08 != RCC_GetSYSCLKSource());
}
}