当前位置: 代码迷 >> 综合 >> 以STMF103为例总结时钟树
  详细解决方案

以STMF103为例总结时钟树

热度:41   发布时间:2023-09-28 02:37:31.0
/*****************************************关于时钟: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 ****************************************************************************/

 

  相关解决方案