|
|
本帖最后由 51hei社區(qū) 于 2016-1-11 05:30 編輯
一、STM32共有5種時(shí)鐘:
HSI:內(nèi)部高速振蕩器時(shí)鐘;?
HSE:外部高速振蕩器時(shí)鐘;
?PLL:鎖相環(huán)倍頻時(shí)鐘;
LSI:40kHz低速內(nèi)部RC振蕩器時(shí)鐘;
LSE:32.768kHz外部低速振蕩器時(shí)鐘;
前三種可以作為系統(tǒng)時(shí)鐘SYSCLK,LSI可以用于驅(qū)動(dòng)獨(dú)立看門(mén)狗和RTC,LSE可驅(qū)動(dòng)RTC。
STM32時(shí)鐘樹(shù)如下圖:
STM32F10X時(shí)鐘樹(shù)
二、用HSE時(shí)鐘,程序設(shè)置時(shí)鐘參數(shù)流程:
?1、將RCC寄存器重新設(shè)置為默認(rèn)值 RCC_DeInit;
?2、打開(kāi)外部高速時(shí)鐘晶振HSE RCC_HSEConfig(RCC_HSE_ON);
?3、等待外部高速時(shí)鐘晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp();
?4、設(shè)置AHB時(shí)鐘 RCC_HCLKConfig;
?5、設(shè)置高速AHB時(shí)鐘 RCC_PCLK2Config;
?6、設(shè)置低速速AHB時(shí)鐘 RCC_PCLK1Config;
7、設(shè)置PLL RCC_PLLConfig;
?8、打開(kāi)PLL RCC_PLLCmd(ENABLE);
?9、等待PLL工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
?10、設(shè)置系統(tǒng)時(shí)鐘 RCC_SYSCLKConfig;
?11、判斷是否PLL是系統(tǒng)時(shí)鐘 while(RCC_GetSYSCLKSource() != 0x08)
?12、打開(kāi)要使用的外設(shè)時(shí)鐘 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()
|
|