STM32时钟系统

本讲主要内容
  1.时钟树介绍
  2.时钟配置函数介绍
  3.系统时钟设置步骤

1.时钟树介绍
具体参考《 STM32F10x中文参考手册》时钟章节

SystemInit()后时钟频率大小:
SYSCLK(系统时钟) =72MHz
AHB 总线时钟(HCLK=SYSCLK) =72MHz
APB1 总线时钟(PCLK1=SYSCLK/2) =36MHz
APB2 总线时钟(PCLK2=SYSCLK/1) =72MHz
PLL 主时钟 =72MHz

2.时钟配置函数介绍
(1)时钟使能配置函数:
RCC_HSICmd
RCC_LSICmd
RCC_PLLCmd
RCC_RTCCLKCmd
RCC_AHBPeriphClockCmd
RCC_APBxPeriphClockCmd

(2)时钟源和分频因子相关配置函数:
RCC_HSEConfig
RCC_LSEConfig
RCC_PLLConfig
RCC_MCOConfig
RCC_SYSCLKConfig
RCC_HCLKConfig
RCC_PCLK1Config
RCC_PCLK2Config
RCC_RTCCLKConfig
RCC_ADCCLKConfig
RCC_USBCLKConfig

(3)外设复位函数:
RCC_APB1PeriphResetCmd
RCC_APB2PeriphResetCmd

(4)状态参数获取函数:
RCC_GetSYSCLKSource
RCC_GetClocksFreq
RCC_GetFlagStatus
RCC_ClearFlag

(5)RCC中断相关函数:
RCC_ITConfig
RCC_ClearITPendingBit
RCC_GetITStatus

3.系统时钟设置步骤
void RCC_HSE_Config(u32 div,u32 pllm) //自定义系统时间(可以修改时钟)
{
 RCC_DeInit(); //将外设RCC寄存器重设为缺省值
 RCC_HSEConfig(RCC_HSE_ON);//设置外部高速晶振(HSE)
 if(RCC_WaitForHSEStartUp()==SUCCESS) //等待HSE起振
 {
  RCC_HCLKConfig(RCC_SYSCLK_Div1);//设置AHB时钟(HCLK)
  RCC_PCLK1Config(RCC_HCLK_Div2);//设置低速AHB时钟(PCLK1)
  RCC_PCLK2Config(RCC_HCLK_Div1);//设置高速AHB时钟(PCLK2)
  RCC_PLLConfig(div,pllm);//设置PLL时钟源及倍频系数
  RCC_PLLCmd(ENABLE); //使能或者失能PLL
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);//检查指定的RCC标志位设置与否,PLL就绪
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//设置系统时钟(SYSCLK)
  while(RCC_GetSYSCLKSource()!=0x08);//返回用作系统时钟的时钟源,0x08:PLL作为系统时钟
 }
}

猜你喜欢

转载自www.cnblogs.com/zhb123456/p/10494699.html