STM32 時鐘源和RCC 配置

STM32一共有5個時鐘源,分別是HSI HSE LSI LSE PLL

①HSI 是高速內部時鐘, RC 振盪器,頻率爲 8MHz ;

②HSE 是高速外部時鐘,可接石英 / 陶瓷諧振器,或者接外部時鐘源,頻率範圍是 4MHz – 16MHz(一般接8M) ;

③LSI 是低速內部時鐘, RC 振盪器,頻率爲 40KHz ;

④LSE 是低速外部時鐘,接頻率爲 32.768KHz 的石英晶體;

⑤PLL 爲鎖相環倍頻輸出,嚴格的來說並不算一個獨立的時鐘源, PLL 的輸入可以接 HSI/2 、 HSE 或者 HSE/2 。PLL倍頻可選擇爲 2 – 16 倍,但是其輸出頻率最大不得超過 72MHz 。

其中, 40kHz 的 LSI 供獨立看門狗 IWDG 使用,另外它還可以被選擇爲實時時鐘 RTC 的時鐘源。另外,實時時鐘 RTC 的時鐘源還可以選擇 LSE ,或者是 HSE 的 128 分頻。
這裏介紹RCC 常用配置代碼

void rcc_config(void)
{
    ErrorStatus HSEStartUpStatus;

    RCC_DeInit();                               /* RCC defualt config */
    RCC_HSEConfig(RCC_HSE_ON);                  /* open HSE */
    HSEStartUpStatus = RCC_WaitForHSEStartUp();	/* wait */
   
    if(HSEStartUpStatus == SUCCESS) 
	  { 
        RCC_HCLKConfig(RCC_SYSCLK_Div1);
        RCC_PCLK2Config(RCC_HCLK_Div1);
        RCC_PCLK1Config(RCC_HCLK_Div2);
        FLASH_SetLatency(FLASH_Latency_2);		  /* set FLASH delay */
	      FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);	
        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);	/*set HSE as PLL clock,72MHz*/
        RCC_PLLCmd(ENABLE);
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
        while(RCC_GetSYSCLKSource() != 0x08);
    }
}

此處的開發板爲外接8MHZ 晶振,按照上面代碼配置完後主頻爲72MHZ, APB1爲36MHZ,APB2爲72MHZ ,FLASH 延時爲兩個週期,這裏的延時週期與選定的主頻有關;
關係如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章