STM32的內(nèi)部RC時鐘HSI RC、LSI RC可以被關(guān)閉,外部晶振時鐘HSE Osc、LSE
Osc可以被關(guān)閉或旁路,外部晶體時鐘更精確。
一、為所有外設(shè)提供時鐘
SYSCLK有三種時鐘源:HSI(8MHz)、HSE(8MHz)、PLLCLK。其中開啟CSS(時鐘監(jiān)視系統(tǒng))可以在HSE失能時自動切換到HSI;
PLLCLK-》USB Prescaler;
SYSCLK-》AHB Prescaler-》(HLCK,APB1 Prescaler,APB2
Prescaler):HLCK為核心總線、DMA、AHB總線提供時鐘;
APB1 Prescaler-》(PLCK1 up to 36MHz,TIM2、3、4 、5、6、7
Multiplier*1 or*2);
APB2 Prescaler-》(PLCK2 up to 72MHz,TIM1、8 Multiplier*1
or*2,ADC Prescaler)。
二、為RTC提供時鐘
RTCCLK有三種時鐘源:LSI(40KHz)、LSE(32.768KHz)、HSE/128。
三、為IDWG提供時鐘
IDWG由LSI提供時鐘。
四、引腳MCO
該引腳提供四選一的時鐘源:HSI、HSE、SYSCLK、PLLCLK/2進(jìn)行檢查和時鐘輸出。
五、在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法
如果使用內(nèi)部RC振蕩器而不使用外部晶振,應(yīng)按照下面方法處理:
1)對于100腳或144腳的產(chǎn)品,OSC_IN應(yīng)接地,OSC_OUT應(yīng)懸空。
2)對于少于100腳的產(chǎn)品,有2種接法:
2.1)OSC_IN和OSC_OUT分別通過10K電阻接地。此方法可提高EMC性能。
2.2)分別重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1為推挽輸出并輸出'0'。此方法可以減小功耗并(相對上面2.1)節(jié)省2個外部電阻。
六、程序設(shè)置時鐘參數(shù)流程
1、將RCC重新設(shè)置為默認(rèn)值
RCC_DeInit();
2、打開外部高速時鐘晶振HSE RCC_HSEConfig(RCC_HSE_ON);
3、等待外部高速時鐘晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp();
4、設(shè)置AHB時鐘
RCC_HCLKConfig;
5、設(shè)置高速APB時鐘
RCC_PCLK2Config;
6、設(shè)置低速APB時鐘
RCC_PCLK1Config;
7、設(shè)置PLL
RCC_PLLConfig;
8、打開PLL
RCC_PLLCmd(ENABLE);
9、等待PLL工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
10、設(shè)置系統(tǒng)時鐘
RCC_SYSCLKConfig;
11、判斷是否PLL是系統(tǒng)時鐘
while(RCC_GetSYSCLKSource() != 0x08)
12、打開要使用的外設(shè)時鐘
RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()
