30 lines
772 B
C
30 lines
772 B
C
#include "Sys.h"
|
|
|
|
/*RCC时钟初始化*/
|
|
void RCC_Configuration(void)
|
|
{
|
|
RCC_DeInit(); //重设RCC寄存器为缺省值
|
|
/* 开启HSI 即内部晶振时钟 */
|
|
RCC->CR |= (uint32_t)0x00000001;
|
|
/*选择HSI为PLL的时钟源HSI必须2分频给PLL*/
|
|
RCC->CFGR |= (uint32_t)RCC_CFGR_PLLSRC_HSI_Div2;
|
|
/*PLLCLK=8/2*10=40MHz 设置倍频得到时钟源PLL的频率*/
|
|
RCC->CFGR |= (uint32_t)RCC_CFGR_PLLMULL10;
|
|
/* PLL不分频输出 */
|
|
RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
|
|
/* 使能 PLL时钟 */
|
|
RCC->CR |= RCC_CR_PLLON;
|
|
/* 等待PLL时钟就绪*/
|
|
while((RCC->CR & RCC_CR_PLLRDY) == 0)
|
|
{
|
|
}
|
|
/* 选择PLL为系统时钟的时钟源 */
|
|
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
|
|
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;
|
|
/* 等到PLL成为系统时钟的时钟源*/
|
|
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
|
|
{
|
|
}
|
|
}
|
|
|