以STMF103爲例總結時鐘樹

/*****************************************關於時鐘:system_stm32f10x.c中有如下說明*******************************************/

//STM32的4類時鐘:
//外部時鐘HSE:高速外部時鐘信號,精度高。來源:(1)HSE外部晶體/陶瓷諧振器(晶振) ;(2)HSE用戶外部時鐘
//外部時鐘LSE:低速外部晶體 32.768kHz 主要提供一個精確的時鐘源 一般作爲RTC時鐘使用  
//內部時鐘HSI:高速內部時鐘信號,stm32單片機內帶的時鐘 (8M頻率)精度較差
//內部時鐘LSI:LSI是低速內部時鐘,RC振盪器,頻率爲40kHz。
//ST官方推薦的外接晶振(HSE)是 8M,所以庫函數的設置都是假定你的硬件已經接了 8M 晶振來運算的。

//			#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
//			/* #define SYSCLK_FREQ_HSE    HSE_VALUE */
//			 #define SYSCLK_FREQ_24MHz  24000000
//			#else
//			/* #define SYSCLK_FREQ_HSE    HSE_VALUE */
//			/* #define SYSCLK_FREQ_24MHz  24000000 */ 
//			/* #define SYSCLK_FREQ_36MHz  36000000 */
//			/* #define SYSCLK_FREQ_48MHz  48000000 */
//			/* #define SYSCLK_FREQ_56MHz  56000000 */
//			#define SYSCLK_FREQ_72MHz  72000000
//所以系統時鐘爲72M


//			static SetSysClockTo72(void)函數中配置瞭如下內容:
//			RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;

//			RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;

//			RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
//			對?這段代碼進行解析:

//			具體的寄存器含義可以參看stm32f10x數據手冊的第63頁。下面只做簡要說明。

//			RCC_CFRG爲時鐘配置寄存器。

//			HPRE爲AHB預分頻,確定AHB的時鐘;

//			PPRE1爲APB1的預分頻,確定低速APB的時鐘;

//			PPRE2爲APB2的預分頻,確定高速APB的時鐘;

//			system_stm32f10x.c 中函數 static void SetSysClockTo72(void)中有:

			/* HCLK = SYSCLK */
//    RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
      
			/* PCLK2 = HCLK */
//    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
    
			/* PCLK1 = HCLK/2 */
//    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;

//					
//所以:												AHB (HCLK) 時鐘 = 72M;
//														APB2(PCLK2)時鐘 = 72M;
//														APB1(PCLK1)時鐘 = 36M;
	
//而後其他外設的時鐘分別再AHB、APB1、APB2等總線上,故可確定外設的時鐘。	
/*********************************************END	OF    RCC ****************************************************************************/

 

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