新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 設(shè)置stm32系統(tǒng)各部分時(shí)鐘

設(shè)置stm32系統(tǒng)各部分時(shí)鐘

作者: 時(shí)間:2018-07-24 來源:網(wǎng)絡(luò) 收藏

函數(shù)如下:

本文引用地址:http://butianyuan.cn/article/201807/383712.htm

/**************************************************************************

* 函數(shù)名 : RccInitialisation
* 函數(shù)描述 : 設(shè)置系統(tǒng)
* 輸入?yún)?shù) : 無
* 輸出結(jié)果 : 無
* 返回值 : 無
**************************************************************************/
void RccInitialisation(void)
{
/* 定義枚舉類型變量 HSEStartUpStatus */
ErrorStatus HSEStartUpStatus;
/* 復(fù)位系統(tǒng)時(shí)鐘設(shè)置*/
RCC_DeInit();
/* 開啟HSE*/
RCC_HSEConfig(RCC_HSE_ON);
/* 等待HSE起振并穩(wěn)定*/
HSEStartUpStatus = RCC_WaitForHSEStartUp();
/* 判斷HSE起是否振成功,是則進(jìn)入if()內(nèi)部 */
if(HSEStartUpStatus == SUCCESS)
{
/* 選擇HCLK(AHB)時(shí)鐘源為SYSCLK 1分頻 */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* 選擇PCLK2時(shí)鐘源為 HCLK(AHB) 1分頻 */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* 選擇PCLK1時(shí)鐘源為 HCLK(AHB) 2分頻 */
RCC_PCLK1Config(RCC_HCLK_Div2);
/* 設(shè)置FLASH延時(shí)周期數(shù)為2 */
FLASH_SetLatency(FLASH_Latency_2);
/* 使能FLASH預(yù)取緩存 */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/* 選擇鎖相環(huán)(PLL)時(shí)鐘源為HSE 1分頻,倍頻數(shù)為9,則PLL輸出頻率為 8MHz * 9 = 72MHz
*/
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/* 使能PLL */
RCC_PLLCmd(ENABLE);
/* 等待PLL輸出穩(wěn)定 */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* 選擇SYSCLK時(shí)鐘源為PLL */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* 等待PLL成為SYSCLK時(shí)鐘源 */
while(RCC_GetSYSCLKSource() != 0x08);
}

}

在main函數(shù)中調(diào)用此函數(shù)即可完成時(shí)鐘的正常配置。

  • STM32單片機(jī)中文官網(wǎng)
  • STM32單片機(jī)官方開發(fā)工具
  • STM32單片機(jī)參考設(shè)計(jì)


評(píng)論


技術(shù)專區(qū)

關(guān)閉