图文并茂详解STM32时钟配置
内容提要
时钟是单片机的核心,提供脉冲信号驱动单片机。关闭不使用的时钟可降低功耗。STM32时钟有分工,频率不同。时钟源可为HSI、LSI、HSE、LSE,PLL可倍频。RCC寄存器控制时钟信号通断。有时钟监视系统监测HSE工作状态。
延伸解读
时钟门控:STM32低功耗设计的关键
文章用“水库与门”的比喻说明:51单片机默认开启所有外设时钟,未使用的模块也在耗电;STM32则默认关闭所有外设时钟,仅在使用时使能,从而精确控制功耗。这体现了时钟门控技术,也是STM32低功耗特性的重要来源。读者在配置外设时,应先使能对应时钟,再操作寄存器,否则配置无效。
系统时钟源选择与PLL倍频的实践要点
STM32系统时钟SYSCLK可来自HSI、HSE或PLL。文章以外部8MHz晶振为例,经PLL九倍频得到72MHz,并指出内部RC振荡器存在精度误差,高精度场合建议使用外部晶体。PLL本身不是独立时钟源,而是对HSI/2、HSE或HSE/2进行2~16倍频,输出不得超过72MHz。配置时需等待HSE和PLL就绪标志,再切换系统时钟源。
总线分频与外设时钟的对应关系
系统时钟经AHB分频器后,为内核总线、Tick定时器、I2S、APB1和APB2等模块提供时钟。APB1最高36MHz,APB2最高72MHz,ADC另有独立分频器。文章特别提醒:若APB预分频系数为1,定时器时钟等于PCLKx;否则定时器时钟为APB域频率的两倍。因此配置定时器时,需根据APB分频系数确认实际时钟频率。
USB时钟与时钟安全系统的特殊约束
USB全速模块需要48MHz时钟,且只能从PLL输出获取,可选1.5分频或1分频,因此使用USB时PLL必须使能,频率需配置为48MHz或72MHz。此外,STM32提供时钟监视系统CSS,监测HSE工作状态,一旦HSE失效会自动切换HSI作为系统时钟,保障系统继续运行。这些约束在涉及USB通信或高可靠性场景时需特别注意。
Q&A
STM32为什么需要配置时钟,而51单片机不用?
STM32为降低功耗,默认关闭所有外设时钟,使用时才开启;51单片机默认开启所有时钟,功耗无法降低。
STM32的时钟源有哪些?各自频率是多少?
有四个时钟源:HSI(内部高速RC,8MHz)、HSE(外部高速,4-16MHz)、LSI(内部低速RC,40kHz)、LSE(外部低速,32.768kHz)。PLL可倍频,输出最大72MHz。
STM32的系统时钟SYSCLK可以来自哪些时钟源?
SYSCLK可来源于HSI振荡器时钟、HSE振荡器时钟或PLL时钟,最大72MHz。
STM32的USB模块需要什么时钟?如何配置?
USB模块需要48MHz时钟源,只能从PLL输出获取,可选择1.5分频或1分频,因此PLL必须使能且频率配置为48MHz或72MHz。
如何将STM32的时钟信号输出到外部?
通过配置MCO引脚(PA8),可选择输出PLL输出的2分频、HSI、HSE或系统时钟,供外部设备使用。
STM32的RCC寄存器有什么作用?
RCC寄存器用于时钟配置和控制,控制提供给各模块时钟信号的通断,包括使能、时钟源选择、分频系数设定等。
使用HSE配置STM32系统时钟为72MHz的步骤是什么?
步骤:1. RCC_DeInit复位;2. 使能HSE;3. 等待HSE就绪;4. 设置AHB、APB1、APB2分频;5. 配置PLL(HSE倍频9倍);6. 使能PLL并等待就绪;7. 选择PLL作为系统时钟;8. 使能外设时钟。
STM32的时钟监视系统(CSS)有什么作用?
CSS用于监视高速外部时钟(HSE)的工作状态,若HSE失效,会自动切换HSI作为系统时钟,保证系统正常运行。