//源文件
void RccPhyConfig()
{
uint16_t retry = 0;
RCC->APB1ENR|=1<<28; //电源接口时钟使能
PWR->CR1|=3<<14; //高性能模式,时钟可到 180Mhz
PWR->CR1|=1<<16; //使能过驱动,频率可到 216Mhz
PWR->CR1|=1<<17; //使能过驱动切换
RCC->CR |= (1<<16); //开启HSE
while( ((RCC->CR&(1<<17))==0)&&(retry<0X1FFF)) //等待HSE 就绪
{
retry++;
}
if(retry == 0X1FFF)
{
ZlError();
}
RCC->CR &= ~(1<<24); //关闭主PLL
RCC->CFGR|=(0<<4)|(5<<10)|(4<<13);//HCLK 不分频;APB1 4 分频;APB2 2 分频
RCC->PLLCFGR = PLL_M|(PLL_N<<6)|(((PLL_P>>1)-1)<<16)|(PLL_Q<<24)|(1<<22);
RCC->CR |= (1<<24); //打开主PLL
while((RCC->CR&(1<<25))==0);//等待 PLL 准备好
FLASH->ACR|=1<<8; //指令预取使能.
FLASH->ACR|=1<<9; //使能 ART Accelerator
FLASH->ACR|=7<<0; //8 个 CPU 等待周期.
RCC->CFGR&=~(3<<0); //清零
RCC->CFGR|=2<<0; //选择主 PLL 作为系统时钟
while((RCC->CFGR&(3<<2))!=(2<<2));//等待主 PLL 作为系统时钟成功.
}
void ZlError()
{
while(1);
}
//头文件
/***************************** RCC*************************************/
#define PLL_M 8
#define PLL_N 432
#define PLL_P 2
#define PLL_Q 9
void RccPhyConfig(void);
void ZlError(void);
/**********************************************************************/