“STM32芯片通电后,系统默认使用内部高速时钟,随后程序在启动的过程中切换到稳定性较强的高速外部时钟作为系统的时钟源;当检测到外部时钟失效时,该时钟将会被隔离,系统自动切换到内部的RC振荡器。”
STM32中,共含有五个时钟源。
1、HSI (High-speed internal clock) 高速内部时钟,RC振荡器,默认频率16MHz。
2、HSE (High-speed external clock) 高速外部时钟,可接石英/陶瓷振荡器,或结外部时钟源,可外接频率范围:4~26MHz。
3、LSI (Low-speed internal clock) 低速内部时钟,RC振荡器担当一个低功耗时钟源的角色,评率为32KHz用于独立看门狗或驱动RTC。
4、LSE (Low-speed external clock) 低速外部时钟,连接频率为32.768kHz的石英晶体,用于驱动RTC。
5、PLL (Phase Locked Loop) 锁相环输出,有两个用途。
(1)主PLL由HSI或HSE振荡器提供时钟,具有两种特性。
①第一种是输出时钟。其中,第一个输出用于产生高速系统时钟(设置芯片的主频,高达168MHz);第二个输出用于产生USB OTG FS (48MHz) 的时钟。
②随机模拟发生器()以及SDIO ()。
(2)专用PLL (),用于生成精确的时钟以提高在接口上的音频性能。
*RTC (Real-time clock) 实时时钟,用于从停机/待机模式下自动唤醒系统。
*USB OTG FS (USB On-The-Go Full Speed),除了FS全速,还有HS (High Speed)高速、LS (Low Speed)低速。
*(Inter—IC Sound)总线, 又称集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。
图2.1 STM32F10xxx时钟树
微控制器必须由周期性的时钟脉冲来驱动,往往由一个外部晶振振荡器提供的时钟输入作为开始,最终转换为多个外部设备的周期性运作作为结尾。其中,时钟脉冲流经的路径,犹如大树的根一样通过主干流向各个分支,其路径通常称为“时钟树”。
1、SYSCLK (System Clock) 系统时钟
在系统复位之后,会默认将HSI作为系统时钟。若时钟源直接或通过PLL间接作为系统时钟,那么它将不可停止。只有目标时钟源准备就绪后才能切换,如果先选择了尚未准备好的时钟源,那么只能等待目标时钟源准备完成才能切换。
其中,RCC时钟控制器 (RCC_CR)中就能标指出哪个时钟准备就绪了。
*RCC (Reset and Clock Control) 复位和时钟控制器,负责管理时钟源和时钟分频,并且为系统中的各个外设提供时钟使能。
*RCC_CR (Reset and Clock Control_Control Registers) 时钟控制寄存器。
2、CSS (Clock Security System) 时钟安全系统
时钟安全系统可以通过软件被激活。激活后,时钟监测器将在HSE振荡器启动延迟后被 使能,并在HSE时钟关闭后关闭。 如果HSE时钟发生故障,会自动禁止该振荡器,将时钟故障时间发送到高级控制定时器TIM1和TIM8的中断输入中,并产生时钟安全中断CSSI,允许软件完成营救操作。此CSSI中断连接到 Cortex™-M3的NMI中断(不可屏蔽中断)。
注意: 一旦CSS被激活,并且HSE时钟出现故障,CSS中断就产生,并且NMI也自动产生。NMI将被不断执行,直到CSS中断挂起位被清除。因此,在NMI的处理程序中必须通过设置时钟中断寄存器 (RCC_CIR)里的CSSC位来清除CSS中断。
如果HSE振荡器被直接或间接地作为系统时钟,(间接的意思是:它被作为PLL输入时钟,并且 PLL时钟被作为系统时钟),时钟故障将导致系统时钟自动切换到HSI振荡器,同时外部HSE振荡 器被关闭。在时钟失效时,如果HSE振荡器时钟(被分频或未被分频)是用作系统时钟的PLL的输 入时钟,PLL也将被关闭。
3、RTC (Real-time clock) 实时时钟/AWU (Automatic Wake-up Unit) 自动唤醒单元时钟
4、Watchdog Clock 看门狗时钟
如果独立看门狗已经由硬件选项或软件启动,LSI振荡器将被强制在打开状态,并且不能被关 闭。在LSI振荡器稳定后,时钟供应给独立看门狗 (IWDG)。
*IWDG (Independent watchdog) 独立看门狗。
*备份域 (Backup domain)是由电子单独供电的区域,防止单片机因断电、复位或其他突发情况导致数据丢失。
图3.1
如图3.1可知,AHB时钟的主要频率是由PLL时钟提供的,通过AHB分频器分频后将时钟作为AHB bus的运行时钟。
APBx分为APB1(低速总线时钟)&APB2(高速总线时钟)两个时钟,时钟来源为AHB时钟。
*AHB (Advanced High Performance Bus) 先进的高性能总线。
*APB (Advanced Peripheral Bus) 高级外设总线。