//源文件 void RccPhyConfig() { uint16_t retry = 0; RCC->APB1ENR|=1<<28; //電源介面時鐘使能 PWR->CR1|=3<<14; //高性能模式,時鐘可到 180Mhz PWR->CR1|=1<<16; //使能過驅動,頻率可到 216 ...
//源文件 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); /**********************************************************************/