新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > stm32v3.5庫(kù)的時(shí)鐘配置

stm32v3.5庫(kù)的時(shí)鐘配置

作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
在基于STM32的3.5版本庫(kù)函數(shù)的開(kāi)發(fā)應(yīng)用中,其時(shí)鐘初始化函數(shù)SystemInit()函數(shù)是在啟動(dòng)文件中被調(diào)用的,而且其調(diào)用是在Main()函數(shù)之前,所以說(shuō),如果不打算修改其默認(rèn)的系統(tǒng)時(shí)鐘(sysclk72M,AHB 72M,PCLK1 36M,PCLK272M,PLL 72M),在main函數(shù)中可以不添加系統(tǒng)時(shí)鐘初始化函數(shù)SystemInit()函數(shù),其在相應(yīng)的函數(shù)文件中已經(jīng)被設(shè)置好了。

如果要對(duì)系統(tǒng)時(shí)鐘進(jìn)行重新設(shè)置,可以在main()函數(shù)中對(duì)其進(jìn)行重新配置,也就回到了較早版本的ST開(kāi)發(fā)庫(kù)的應(yīng)用之中,現(xiàn)舉例如下:

本文引用地址:http://m.butianyuan.cn/article/201611/321356.htm

1、以外部高速晶振為時(shí)鐘源

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.以?xún)?nèi)部高速晶振為時(shí)鐘源(可在外部晶振損壞時(shí)采用,精度稍低,之前有同志問(wèn)到過(guò)這個(gè)問(wèn)題,現(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



關(guān)鍵詞: stm32v35庫(kù)時(shí)鐘配

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉