STM32的时钟系统比较复杂,不像51单片机,可能只有一个时钟。原因:1、外设多,不同的外设有不同的时钟要求;2、功耗原因,速度越快,功耗越大,抗电磁干扰能力越弱。 此处以STM32F405为例,讲一点最常用的知识。其它的型号大同小异。
时钟 | 含义 | 特点 |
HSE | 外部高速时钟信号 | 一般选择外接晶振,最常用的时钟信号。电机驱动板外接12Mhz |
HSI | 内部高速时钟信号 | 由单片机内部的16MHzRC振荡器生成,成本低,但精度低。默认的系统时钟,但实际使用的场合不多。 |
PLL | 锁相环 | 由HSE或HSI提供时钟信号,主要用于生成高速系统时钟,STM32F405最高168Mhz,103 72Mhz 429 180Mhz |
LSE | 外部低速时钟信号 | 外接的32.768Khz晶振,用于驱动RTC时钟。RTC可以提供时钟、日历功能,功耗低精度高。 |
LSI | 内部低速时钟信号 | 32Khz左右,功耗低,可在停机、待机状态下使运行,供看门狗和自动唤醒单元使用 |
命名是很有规律的,H高 L低 I内 E外
在使用CubeMX以前,理解并正确配置时钟系统并不是一件容易的事情。在中文参考手册6.2节,有关于时钟系统的说明。也配备了时钟树的图,但不如STM32CubeMX中的图直观,除了可以显示各个分支的含义、速度,还能动态修正设定值。
不同的总线有不同的频率,不同的外设挂在不同的总线下,外设与总线的对应关系可以查看参考手册P52或数据手册P19。为了更适合初学者查阅,我把常用的外设与总线的对应关系总结如下:
比如,我们想知道定时器3的时钟是多少,可以通过上表查出定时器3属于APB1。然后再找APB1的时钟,对于定时器来说是84Mhz,对于其它外设是42Mhz,所以Timer3的时钟是84Mhz。