RCC时钟控制系统组成及时钟原程序分析

发布者:清新生活最新更新时间:2024-06-20 来源: elecfans关键字:RCC 手机看文章 扫描二维码
随时随地手机看文章

RCC:Reset and Clock Control,复位与时钟控制系统。系统复位有三种:系统复位、电源复位、RTC domain复位。本文重点详解Clock Control部分。下面看下STM32L152芯片的时钟框图和cubeMX软件中的时钟框图。

RCC时钟控制系统组成及时钟原程序分析

RCC时钟控制系统组成及时钟原程序分析

RCC时钟控制系统组成及时钟原程序分析

如上图所示,在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。

①HSI:High Speed Internal,高速内部时钟,RC振荡器

②HSE:High Speed External,高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源;

③LSI:Low Speed Internal,低速内部时钟,RC振荡器,频率为37kHz;

④LSE:Low Speed External,低速外部时钟,接频率为32.768kHz的石英晶体;

⑤PLL:Phase Locked Loop,锁相环倍频分频输出。

另外,STM32还具有双时钟机制,即时钟安全系统CSS(Clock Security System)。在外部晶振不工作时,转而使用内部RC振荡器作为自己时钟心跳保证系统正常运行。当外部晶振恢复正常后,重新使用外部晶振。

上图中也提到3种时钟,FCLK、HCLK和PCLK。简单介绍下三种时钟。

(1)FCLK:Free Running Clock,为CPU提供时钟信号,平时说的CPU主频,就是这个时钟信号,1/Fclk即为CPU时钟周期;

(2)HCLK:为AHB bus peripherals提供时钟信号,AHB:advanced high-performance bus;HCLK是高速外设时钟,一般给内存、flash提供时钟。

(3)PCLK:为APB bus peripherals供给时钟信号,APB:advanced peripherals bus;PCLK是低速外设时钟,一般给CAN、USB、I2C、USART、SPI、Timer、ADC和DAC提供时钟信号。下面结合Cubemx生成的系统时钟原程序进行分析。

void SystemClock_Config(void)

{

RCC_OscInitTypeDef RCC_OscInitStruct;

RCC_ClkInitTypeDef RCC_ClkInitStruct;

RCC_PeriphCLKInitTypeDef PeriphClkInit;

/**Configure the main internal regulator output voltage

*/

__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);//设置调压器输出电压级别1,用来设置调压器输出电压级别,器件未以最大频率工作,达到性能和功耗平衡

/**Initializes the CPU, AHB and APB busses clocks

*/

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI

|RCC_OSCILLATORTYPE_HSE;

RCC_OscInitStruct.HSEState = RCC_HSE_ON;

RCC_OscInitStruct.HSIState = RCC_HSI_ON;

RCC_OscInitStruct.HSICalibrationValue = 16;//HSI时钟16M

RCC_OscInitStruct.LSIState = RCC_LSI_ON;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;//PLL时钟源为HSE

RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8;//8倍频

RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV2;//2分频

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)//初始化

{

_Error_Handler(__FILE__, __LINE__);

}

/**Initializes the CPU, AHB and APB busses clocks

*/

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;//AHB 1分频

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;//APB1 1分频

RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;//APB2 1分频

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)//初始化

{

_Error_Handler(__FILE__, __LINE__);

}

PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;

PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;//RTC时钟选择LSI

if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)

{

_Error_Handler(__FILE__, __LINE__);

}

/**Configure the Systick interrupt time

*/

HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);//滴答定时器配置

/**Configure the Systick

*/

HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);//滴答定时器选择HCLK 不分频

/* SysTick_IRQn interrupt configuration */

HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);//滴答定时器中断优先级


关键字:RCC 引用地址:RCC时钟控制系统组成及时钟原程序分析

上一篇:为什么晶振不集成到芯片内部去?
下一篇:制作一个0-20mA的信号发生器,可以给很多仪器仪表做校准或测试

推荐阅读最新更新时间:2026-03-21 11:29

STM32按键输入、所需要的C语言复习、时钟系统框图
第一部分: STM32按键输入是我的第二个在STM32 平台上有输入的小实例。思路为,先查询硬件图看清按键是低电平有效还是高电平有效,根据我的开发环境得知四个按键有三个按键是低电平有效,有一个按键是高电平有效。然后设计代码,设计代码之前得分析清楚,按键有两种情况,可持续按键和不可持续按键。可持续按键的意思是,按一下放开后,继续按还会有用,而不可持续按键就不行。 分清按键类型就可以照一般运用外设的三步走战略前进,第一步初始化按键输入时钟,第二步初始化所运用的IO时钟,第三步扫描键盘 初始化时钟选择时钟系统中的高速总线挂载的时钟,APB2所包含的时钟函数RCC_APB2PeriphClockCmd()。具体下面的时钟系统分析会清晰的讲
[单片机]
STM32——关于在K5中RCC的标志位
STM32的时钟系统框图 STM32 有4个独立时钟源:HSI、HSE、LSI、LSE。 ①、HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。 ②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③、LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。  ④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 其中LSI是作为IWDGCLK(独立看门狗)时钟源和RTC时钟源 而独立使用 而HSI高速内部时钟、HSE高速外部时钟、PLL锁相环时钟、这三个经过分频或者倍频 作为系统时钟来使用。 PLL为锁相环倍频输出,其时钟输入源可选
[单片机]
STM32F7系统配置控制器(SYSCFG)及复位和时钟控制(RCC
这篇文章带大家看一下 STM32F7的系统配置控制器 。系统配置控制器主要用于: 1、 选择以太网PHY接口; 2、 交换FMC SDRAM存储区域与NOR/PSRAM存储区域; 3、 管理GPIO外部中断线连接; 在系统控制寄存器里有一个bit位来选择使用哪个选项字定义的启动基地址来启动。 复位类型 一共有三种复位类型,系统复位、电源复位和备份域复位。 系统复位在VDD保持正常工作电压的前提下,有五种事件可以产生复位,分别是低功耗管理复位、软件复位、独立看门狗计数器溢出、窗口看门狗计数器溢出和NRST引脚上的低电平。这里低功耗管理复位指的是MCU执行低功耗模式进入序列的时候是产生复位还是停止待机模式,这个是可以通过选
[单片机]
STM32学习之路-RCC
RCC-复位和时钟控制.主要看下时钟控制这部分 系统时钟树: 有三种时钟源可以驱动系统时钟(SYSCLK) 分别是HSI振荡器、HSE振荡器、PLLCLK HSI时钟信号:由内部8MHZ的RC振荡器产生,可直接作为SYSCLK或者2分频以后给PLL当输入,当HSI作为PLL时钟的输入时,SYSCLK最大为64MHZ(8/2*16) HSE时钟信号:由外部振荡器产生频率在4-16MHZ,在时钟控制寄存器RCC_CR中用HSERDY位用来指示高速外部振荡器是否稳定 在启动时,直到这一位被硬件置'1',时钟才背释放,如果在时钟中断寄存器RCC_CIR中允许产生中断,将会产生相应的中断。 HSE可以
[单片机]
STM32学习之路-<font color='red'>RCC</font>
STM32学习笔记(四)---RCC
RCC: Reset Clock Control 复位和时钟控制器 RCC时钟框图—时钟树 系统时钟 对应的是图中黄色部分,下面的数字标号对应上面的红色标号1-6 1.HSE高速外部时钟信号 HSE是高速的外部时钟信号,可由有源晶振或无源晶振提供。 当使用有源晶振时,时钟从OSC_IN引脚进入,OSC_OUT引脚悬空。 当使用无源晶振时,时钟从OSC_IN和OSC_OUT进入,并且要配谐振电容。 注意:当HSE故障时候,不仅HSE会被关闭,PLL也会被关闭,此时高速的内部时钟信号HSI会作为备用的系统时钟,直到HSE回复正常,HSI=16M。 2.锁相环PLL PLL的主要作用是对时钟进行倍频,然后把时钟输
[单片机]
STM32学习笔记(四)---<font color='red'>RCC</font>
STM32时钟控制RCC探究
RTC是STM32单片机的脉搏,是单片机的驱动源。使用任何一个外设都必须打开相应的时钟。这样的好处就是,如果不使用一个外设的时候,就把它的时钟关掉,从而可以降低系统的功耗,达到节能,实现低功耗的效果。 STM32单片机的时钟可以由以下3个时钟源提供: 1、HSI:高速内部时钟信号(high speed clock internal)stm32单片机内带的时钟(8M频率)精度较差 2、HSE:高速外部时钟信号(high speed clock external)精度高来源(1)HSE外部晶体/陶瓷谐振器(晶振) (2)HSE用户外部时钟 3、LSE:低速外部晶体(low speed external)32.768kH
[单片机]
RCC_AHBPeriph_DMA DMA_Channel1 在那里定义的?
下面的在:stm32f10x_rcc.h中 #define RCC_AHBPeriph_DMA1 ((uint32_t)0x00000001) #define RCC_AHBPeriph_DMA2 ((uint32_t)0x00000002) 下面的在:stm32f10x.h中 #define DMA1_BASE (AHBPERIPH_BASE + 0x0000) #define DMA1_Channel1_BASE (AHBPERIPH_BASE + 0x0008) #define DMA1_Channel2_BASE (AHBPERIPH_BASE + 0x001C) #define
[单片机]
STM32的RCC配置流程
在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 用户可通过预分频器配置AHB,APB2,APB1总线的频率,AHB和APB2域的最大频率是72MHZ。APB1域的最大允许频
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved