2、使用寄存器进行RCC时钟初始化配置
void RCC_init(u8 PLL)//输入PLL的倍频值2—16倍频
//HCLK=PLLCLK=SYSCLK=P2CLK=P1CLK*2=ADCCLK*2=TIMCLK=USBCLK*2/3
{
unsigned char temp=0;
//RCC_DeInit();
//将RCC寄存器重新设置为默认值
RCC->CR|=0x00010000;
//外部高速时钟使能HSEON
while(!(RCC->CR>>17));//等待外部时钟就绪
RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
PLL-=2;//抵消2个单位
RCC->CFGR|=PLL<<18;
//设置PLL倍频值 2~16
RCC->CFGR|=1<<16;
//PLL时钟源选择
FLASH->ACR|=0x32;
//FLASH 2个延时周期
RCC->CR|=0x01000000;
//PLLON
while(!(RCC->CR>>25));//等待PLL锁定
RCC->CFGR|=0x00000002;//PLL作为系统时钟
while(temp!=0x02)
//等待PLL作为系统时钟设置成功
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
} |