正確設置:
void RCC_Configuration(void);
void RCC_Configuration(void) {
//éèÖÃPLLê±ÖóÔ′¼°±¶ÆμÏμêy RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);///*!< PLL input clock*12 */ //ê1ÄüPLL RCC_PLLCmd(ENABLE); //μè′yPLL3õê¼»ˉ3é1| while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { }
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); while(RCC_GetSYSCLKSource() != 0x08) //μè′yÏμí3ê±Öó3õê¼»ˉ3é1| { } } 去掉外部晶振后,單片機時鐘源會默認的使用內部高速RC振蕩器HSI,HSI頻率大約為8M,所以要想使系統獲得48M的頻率需要用PLL倍頻后做為系統的時鐘,PLL是一個鎖相環,專門用來倍頻或者分頻的。(倍頻后所得的頻率一般叫PLL時鐘) RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12); 這句話的意思是將HSI 時鐘12倍頻,為什么是12倍頻而不是6倍頻呢?如下圖STM32F051系列的時鐘樹所示:
0.png (125.51 KB, 下載次數: 49)
下載附件
2016-8-31 23:10 上傳
根據時鐘樹可以看出用PLL對HSI進行倍頻時,硬件將首先對HSI 二分頻,也就是為4M,所以必須再對其進行12倍頻才能變成48M,最后通過RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);語句將PLL時鐘作為系統時鐘,至此系統的時鐘變為48M
|