在STM32中,可以用內(nèi)部時鐘,也可以用外部時鐘,在要求進度高的應用場合最好用外部晶體震蕩器,內(nèi)部時鐘存在一定的精度誤差。
內(nèi)部時鐘有2個時鐘源可以選分別是HSI、LSI、(內(nèi)部高速,內(nèi)部低速,),高速時鐘主要用于系統(tǒng)內(nèi)核和總線上的外設時鐘。低速時鐘主要用于獨立看門狗IWDG、實時時鐘RTC。
1、HSI是高速內(nèi)部時鐘,RC振蕩器,頻率為8MHz,上電后默認的系統(tǒng)時時鐘 SYSCLK = 8MHz,F(xiàn)lash編程時鐘。
2、LSI是低速內(nèi)部時鐘,RC振蕩器,頻率為40kHz,可用于獨立看門狗IWDG、實時時鐘RTC。
使用時需要注意 注釋掉這個SystemInit(); 時鐘配置函數(shù)
//配置內(nèi)置振蕩器 36MHz
RCC_DeInit(); /*將外設RCC寄存器重設為缺省值 */
RCC_HSICmd(ENABLE); //使能內(nèi)部時鐘 HSI
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);//等待HSI就緒
RCC_HCLKConfig(RCC_SYSCLK_Div1); /*設置AHB時鐘(HCLK) RCC_SYSCLK_Div1——AHB時鐘 = 系統(tǒng)時*/
RCC_PCLK2Config(RCC_HCLK_Div1); /* 設置高速AHB時鐘(PCLK2)RCC_HCLK_Div1——APB2時鐘 = HCLK*/
RCC_PCLK1Config(RCC_HCLK_Div2); /*設置低速AHB時鐘(PCLK1)RCC_HCLK_Div2——APB1時鐘 = HCLK / 2*/
//下面這語句設置時鐘頻率 記住參考
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_9);/*設置PLL時鐘源及倍頻系數(shù),頻率為8/2*9=36Mhz*/
RCC_PLLCmd(ENABLE); /*使能PLL *///這里使用的內(nèi)部時鐘所以不能被 失能
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ; /*檢查指定的RCC標志位(PLL準備好標志)設置與否 等待是否配置成功*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /*設置系統(tǒng)時鐘(SYSCLK) */
//選擇哪一個做為時鐘
0x00:HSI 作為系統(tǒng)時鐘 RCC_SYSCLKSource_HSI
// 0x04:HSE作為系統(tǒng)時鐘 RCC_SYSCLKSource_HSE
// 0x08:PLL作為系統(tǒng)時鐘 RCC_SYSCLKSource_PLLCLK
while(RCC_GetSYSCLKSource() != 0x08);//需與被選擇的系統(tǒng)時鐘對應起來,RCC_SYSCLKSource_PLL
整合自:CSDN、博客園
編輯:jq
-
STM32
+關注
關注
2288文章
10999瀏覽量
361982
發(fā)布評論請先 登錄
ADXL355內(nèi)部時鐘的精度或者誤差為多少呢?
白話理解RCC時鐘樹(可下載)
ADS1298芯片內(nèi)部有無時鐘源呢?
一千余字解讀stm32時鐘樹

用SPI來配置ADS7229芯片,用外部時鐘SCLK和內(nèi)部時鐘CCLK有區(qū)別嗎?
用ADS124S08實現(xiàn)高精度溫度采集,用內(nèi)部時鐘源好還是外部時鐘源好?
TLV320ADC6140內(nèi)部有時鐘源嗎?
TAS5731M內(nèi)部有主時鐘MCLK嗎?
PSoC 6是否有辦法在main_cm4p.c中訪問內(nèi)部時鐘?
AG32 時鐘(外部時鐘和片上內(nèi)部振蕩器)
CKS32F107xx系列時鐘系統(tǒng)具體配置方法講解

評論