一、时钟树介绍
三种不同的时钟源可被用来驱动系统时钟(SYSCLK):
- HSI振荡器时钟
- HSE振荡器时钟
- PLL时钟
这些设备有以下两种二级时钟源:
- 40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。 RTC用于从停机/待机模式下自动唤醒系统。
- 32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。
当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。
小容量、中容量和大容量产品的复位和时钟控制(RCC)
SystemInit()后时钟频率大小:
- SYSCLK(系统时钟) =72MHz
- AHB 总线时钟(HCLK=SYSCLK) =72MHz
- APB1 总线时钟(PCLK1=SYSCLK/2) =36MHz
- APB2 总线时钟(PCLK2=SYSCLK/1) =72MHz
- PLL 主时钟 =72MHz
二、时钟配置函数介绍
(一)时钟使能配置函数
RCC_HSICmd
RCC_LSICmd
RCC_PLLCmd
RCC_RTCCLKCmd
RCC_AHBPeriphClockCmd
RCC_APBxPeriphClockCmd
(二)时钟源和分频因子相关配置函数
RCC_HSEConfig
RCC_LSEConfig
RCC_PLLConfig
RCC_MCOConfig
RCC_SYSCLKConfig
RCC_HCLKConfig
RCC_PCLK1Config
RCC_PCLK2Config
RCC_RTCCLKConfig
RCC_ADCCLKConfig
RCC_USBCLKConfig
(三)外设复位函数
RCC_APB1PeriphResetCmd
RCC_APB2PeriphResetCmd
(四)状态参数获取函数
RCC_GetSYSCLKSource
RCC_GetClocksFreq
RCC_GetFlagStatus
RCC_ClearFlag
(五)RCC中断相关函数
RCC_ITConfig
RCC_ClearITPendingBit
RCC_GetITStatus
三、系统时钟设置步骤
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作为系统时钟
}
}
网友评论