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