1. 时钟源

5个,分别是:

HSI、HSE、PLL 可以作 SYSCLK 的时钟源;

LSI 可以作 IWDG 和 RTC(used for Auto-wakeup from Stop/Standby mode,唤醒功能)的时钟源

LSE 作 RTC 的时钟源

STM32时钟_晶振

 2. 时钟配置

STM32CubeMX,再加上手册和标准库代码,大部分都能搞懂;这个工具的好处就是可视化界面配置,列出了所有可选项,不可选项置灰,对于新手来说,NICE。

STM32时钟_晶体振荡器_02

Q1:只有HSE、LSE?

A1:HSI、LSI 是内部时钟源;PLL 是 HSI 或 HSE 倍频得到。

Q2:Crystal/Ceramic Resonator?

A2:晶体/陶瓷谐振器;谐振器,2pin,还需要内部时钟电路支持才可以起振;通常说的无源晶振。

Q3:BYPASS Clock Source?

A3:旁路时钟源;内部时钟电路被旁路,不需要了,晶振自己可以搞定;接入的是晶体振荡器(区别于谐振器),通常说的有源晶振,4pin,VCC GND OUT NC,OUT接RCC_OSC_IN;

  有些晶振从外观上看是4pin的,但实际上只有2个pin使用,是晶体谐振器,多看手册求证就可以了。

 

时钟源搞定了,接下来看看 72MHz 及 HCLK等;感觉下面这个图就比手册的时钟树图更容易入门。

STM32时钟_sed_03

 STM32时钟_sed_04

跟踪这个函数,对比手册 RCC->CR,RCC->CFGR,轻松梳理,哪里不分频,哪里倍频N,选择 HSE 还是 HSI,清清楚楚。

Q4:Enable CSS?

A4:RCC->CR,bit[19];默认OFF;时钟安全系统;监控 HSE 是否故障;如果 HSE 故障,自动切换 HSI,并关闭 HSE,产生 CSS 中断,同时产生 NMI 中断

STM32时钟_旁路_05