標(biāo)題:
STM32學(xué)習(xí)-使用內(nèi)部時鐘HSI做為系統(tǒng)時鐘
[打印本頁]
作者:
xiongxiao
時間:
2015-5-27 16:25
標(biāo)題:
STM32學(xué)習(xí)-使用內(nèi)部時鐘HSI做為系統(tǒng)時鐘
現(xiàn)在新做了塊STM32的板子,有點兒悲摧,晶振還沒有,但程序還是要調(diào)試的,所以考慮使用內(nèi)部時鐘HSI。
首先在主程序中注釋掉SystemInit()
然后使用下面的函數(shù)做為系統(tǒng)時鐘的初始化函數(shù)
void RCC_Configuration(void)
{
RCC_DeInit();//將外設(shè) RCC寄存器重設(shè)為缺省值
RCC_HSICmd(ENABLE);//使能HSI
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET)//等待HSI使能成功
{
}
if(1)
{
//FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
//FLASH_SetLatency(FLASH_Latency_2);
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PCLK2Config(RCC_HCLK_Div1);
//設(shè)置 PLL 時鐘源及倍頻系數(shù)
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_2);
//使能或者失能 PLL,這個參數(shù)可以取:ENABLE或者DISABLE
RCC_PLLCmd(ENABLE);//如果PLL被用于系統(tǒng)時鐘,那么它不能被失能
//等待指定的 RCC 標(biāo)志位設(shè)置成功 等待PLL初始化成功
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
//設(shè)置系統(tǒng)時鐘(SYSCLK) 設(shè)置PLL為系統(tǒng)時鐘源
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//等待PLL成功用作于系統(tǒng)時鐘的時鐘源
// 0x00:HSI 作為系統(tǒng)時鐘
// 0x04:HSE作為系統(tǒng)時鐘
// 0x08:PLL作為系統(tǒng)時鐘
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
}
當(dāng)然這段程序是從網(wǎng)上找來的,做了適當(dāng)?shù)男薷摹1尘霸O(shè)為綠色的部分已經(jīng)注釋掉的代碼,可能跟庫版本有關(guān),先注釋掉了,要不無法通過編譯。
現(xiàn)在把程序的流程理一下
中間配置時鐘的:
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PCLK2Config(RCC_HCLK_Div1);
分別對應(yīng)下圖①②③標(biāo)注的部分。RCC_HCLKConfig(RCC_SYSCLK_Div1)——表示AHB時鐘為系統(tǒng)時鐘SYSCLK;
RCC_PCLK1Config(RCC_HCLK_Div2)——表示APB1時鐘為HCLK/2,其中HCLK為AHB時鐘;RCC_PCLK2Config
(RCC_HCLK_Div1)——表示APB2時鐘為HCLK.
設(shè)置PLL,對應(yīng)圖中紅圈兒部分,設(shè)置PLL時鐘源和倍頻系統(tǒng)。
設(shè)置系統(tǒng)時鐘,對應(yīng)圖中藍(lán)圈部分。
作者:
6278779JJJ
時間:
2019-10-16 13:42
學(xué)習(xí)了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1