在嵌入式系统中时钟是其脉搏,处理器内核在时钟驱动下完成指令执行,状态变换等动作。外设部件在时钟的驱动下完成各种工作,比如串口数据的发送、A/D转换、定时器计数等等。
02 STM32时钟源
◆ HSI是高速内部时钟,RC振荡器,频率为8MHz。
◆ HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,比较常用的8MHz 12MHz 25MHz。
◆ LSI是低速内部时钟,RC振荡器,频率为40kHz。
◆ LSE是低速外部时钟,接频率为32.768kHz的石英晶体。
在STM32中每个外设都有其单独的时钟,在使用某个外设之前必须打开该外设的时钟 ,为什么要这么麻烦来设置每一个外设的时钟而不是将所有外设的时钟统一打开?因为STM32的外设繁多,外设的运作所需要的最佳时钟各不相同,如果所有时钟同时运行会给MCU带来极大的负载,所以STM32为了实现低功耗,而设计的功能完善构成复杂的时钟系统,称之时钟树。使外设功能的时钟可自配置。
03 STM32 时钟树
上图下红框中LSE和LSI是提供给系统看门狗和RTC(实时时钟)使用的。如果需要精度较高的RTC时钟,需要使用LSE,频率为32.768K提供一个精确的时钟源。
HSI为8M,和HSE相比精度较差,对于性能无要求场景又要节省成本使用HSI。
在时钟树系统中,主时钟选择由PLL生成,PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。
css时钟监视系统但HSE失效时自动切换至HSI5、外设有独立的时钟分频配置,主要有USB、SDIO、FSMC、APB1、APB2、ADC等。APB1和APB2是俩个总线桥:APB1和APB2,其中APB1是低速总线,APB2是全速总线。
具体哪些外设挂在那条总线上可参考下图:
** 使用STM32CubeMX配置时钟**
以STM32F105为例打开工程选择HSE,选择外部晶振作为输入。
点击Clock Configuration如下图:
04 结尾
本篇主要分析STM32的时钟,并以stm32f105为例使用STM32CubeMX配置时钟演示