HSE = Hight-speed external clock singal
HSI = Hight-speed internal clock singal
LSI = Low-speed external clock singal
LSE = Low-speed internal clock singal
HSE 为外部高速外部晶振 (4~16M HSE OSC,推荐为 8 M 的OSC )
HSI 为高速内部晶振 (8 M 的HSE OSC)
LSI 为低速内部晶振 (在30kHz和60kHz之间)
-------LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和
-------自动唤醒单元提供时钟。LSI时钟频率大约40kHz(在30kHz和60kHz之间)。进一步信息请参考数
-------据手册中有关电气特性部分。
LSE 为低速外部晶振 (32.768 KHZ)
-------LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供
-------一个低功耗且精确的时钟源。
单片机要工作的话,首先要有时钟。单片机的时钟由晶振产生,所以晶振之于单片机就像心脏之于咱们人一样,单片机没了这颗心脏(晶振)的话就没法工作。
STM32的系统时钟可以由以下三种不同的时钟源来驱动
1、HSI 震荡器时钟
2、HSE 振荡器时钟
3、PLL 时钟 (锁相环时钟)
让单片机工作时,首先可通过设置以上三种中的任何一种来产生单片机的系统时钟,即是SYSCLK(注意SYSCLK不能超过72MZ).
在系统时钟SYSCLK产生后又会经过AHB总线来产生AHB时钟,即HCLK。
在产生AHB时钟之后,通过一定的预分频后再产生AHB1(即是低速的AHB时钟PCLK1)跟 AHB2(即是高速的AHB时钟PCLK2)这两个时钟来驱动单片机的外设 。这两个时钟也是也是我们在使用单片机的外设(即是单片机里面的各个资源模块)时首先要做的工作。
下面列举下不同的时钟对应于单片机的那些资源模块。
AHB2 时钟用于以下资源:
RCC_APB2Periph_AFIO 功能复用 IO时钟
RCC_APB2Periph_GPIOA GPIOA 时钟
RCC_APB2Periph_GPIOB GPIOB 时钟
RCC_APB2Periph_GPIOC GPIOC 时钟
RCC_APB2Periph_GPIOD GPIOD 时钟
RCC_APB2Periph_GPIOE GPIOE 时钟
RCC_APB2Periph_ADC1 ADC1 时钟
RCC_APB2Periph_ADC2 ADC2 时钟
RCC_APB2Periph_TIM1 TIM1 时钟
RCC_APB2Periph_SPI1 SPI1 时钟
RCC_APB2Periph_USART1 USART1 时钟
RCC_APB2Periph_ALL 全部 APB2外设时钟
AHB1 时钟用于以下资源:
RCC_APB1Periph_TIM2 TIM2 时钟
RCC_APB1Periph_TIM3 TIM3 时钟
RCC_APB1Periph_TIM4 TIM4 时钟
RCC_APB1Periph_WWDG WWDG时钟
RCC_APB1Periph_SPI2 SPI2 时钟
RCC_APB1Periph_USART2 USART2 时钟
RCC_APB1Periph_USART3 USART3 时钟
RCC_APB1Periph_I2C1 I2C1 时钟
RCC_APB1Periph_I2C2 I2C2 时钟
RCC_APB1Periph_USB USB 时钟
RCC_APB1Periph_CAN CAN时钟
RTC 时钟来源:
RCC_RTCCLKSource_LSE 选择 LSE 作为 RTC 时钟
RCC_RTCCLKSource_LSI 选择 LSI 作为 RTC 时钟
RCC_RTCCLKSource_HSE_Div128 选择 HSE 时钟频率除以 128 作为 RTC时钟
ADC 时钟来源:
该时钟源自 APB2 时钟(PCLK2)
RCC_PCLK2_Div2 ADC 时钟 = PCLK / 2
RCC_PCLK2_Div4 ADC 时钟 = PCLK / 4
RCC_PCLK2_Div6 ADC 时钟 = PCLK / 6
RCC_PCLK2_Div8 ADC 时钟 = PCLK / 8
USB 时钟来源:
该时钟来源于PLLCLK时钟的预分频
总结:要使单片机工作,首先得设置单片机的时钟,一般的步骤如下
1、设置系统时钟 SYSCLK
2、设置AHB(PCLK)时钟
3、设置AHB1(PCLK1)跟AHB2(PCLK2)时钟
4、设置完毕