在基于STM32的3.5版本庫函數(shù)的開發(fā)應用中,其時鐘初始化函數(shù)SystemInit()函數(shù)是在啟動文件中被調用的,而且其調用是在Main()函數(shù)之前,所以說,如果不打算修改其默認的系統(tǒng)時鐘(sysclk72M,AHB 72M,PCLK1 36M,PCLK272M,PLL 72M),在main函數(shù)中可以不添加系統(tǒng)時鐘初始化函數(shù)SystemInit()函數(shù),其在相應的函數(shù)文件中已經被設置好了。如果要對系統(tǒng)時鐘進行重新設置,可以在main()函數(shù)中對其進行重新配置,也就回到了較早版本的ST開發(fā)庫的應用之中,現(xiàn)舉例如下:
本文引用地址:http://2s4d.com/article/201611/321356.htm1、以外部高速晶振為時鐘源
void RCC_PLL_Configuration(void)
{
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
if(RCC_WaitForHSEStartUp() == SUCCESS) {
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
FLASH_SetLatency(FLASH_Latency_2);
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
RCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_3);
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ;
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x08);
}
}
2.以內部高速晶振為時鐘源(可在外部晶振損壞時采用,精度稍低,之前有同志問到過這個問題,現(xiàn)在此給出)void RCC_HSI_Configuration(void){
RCC_DeInit();
RCC_HSICmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);//等待HSI就緒
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
FLASH_SetLatency(FLASH_Latency_2);
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
while(RCC_GetSYSCLKSource() != 0x00);
}
如果系統(tǒng)不用72M可以在這里修改
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
#define SYSCLK_FREQ_24MHz 24000000
#else
#define SYSCLK_FREQ_72MHz 72000000
#endif
評論