1.概述
简单的说,时钟是单片机的脉搏,是单片机的驱动源,使用任何一个外设都必须打开相应的
时钟。这样的好处是,如果不使用一个外设的时候,就把它的时钟关掉,从而可以降低系统
的功耗,达到节能,实现低功耗的效果。每个时钟tick,系统都会处理一步数据,这样
才能让工作不出现紊乱。
2.原理
首先,任何外设都需要时钟,51 单片机,stm32,430 等等,因为寄存器是由 D 触发器组成
的,往触发器里面写东西,前提条件是有时钟输入。
51 单片机不需要配置时钟,是因为一个时钟开了之后所有的功能都可以用了,而这个时钟
是默认开启的,比如有一个水库,水库有很多个门,这些门默认是开启的,所以每个门都会
出水,我们需要哪个门的水的时候可以直接用,但是也存在一个问题,其他没用到的门也在
出水,即也在耗能。这里水库可以认为是能源,门可以认为是每个外设的使用状态,时钟可
以认为是门的开关。stm32 之所以是低功耗,他将所有的门都默认设置为 disable,在你需
要用哪个门的时候,开哪个门就可以,也就是说用到什么外设,只要打开对应外设的时钟就
可以,其他的没用到的可以还是 disable,这样耗能就会减少。
在 51 单片机中一个时钟把所有的都包了,而 stm32 的时钟是有分工的,并且每类时钟的频
率不一样,因为没必要所有的时钟都是最高频率,只要够用就行,好比一个门出来水流大小,
我只要洗脸,但是出来的是和洪水一样涌出来的水,那就 gg 了,消耗能源也多,所以不同
的时钟也会有频率差别,或者在配置的时候可以配置时钟分频。
拓展:为何要先配置时钟,再配置GPIO(功能模块)
所有寄存器都需要时钟才能配置,寄存器是由 D 触发器组成的,只有送来了时钟,触发器
才能被改写值。
任何 MCU 的任何外设都需要有时钟,8051 也是如此;STM32 为了让用户更好地掌握功耗,
对每个外设的时钟都设置了开关,让用户可以精确地控制,关闭不需要的设备,达到节省供
电的目的。
51 单片机不用配置 IO 时钟,只是因为默认使用同一个时钟,这样是方便,但是这样的话功
耗就降低不了。
例如,某个功能不需要,但是它还是一直运行。
stm32 需要配置时钟,就可以把不需要那些功能的功耗去掉。
当你想关闭某个 IO 的时候,关闭它相对应的时钟使能就是了,不过在 51 里面,在使用 IO
的时候是没有设置 IO 的时钟的,还有在 STM32 中,有外部和内部时钟之分,关于时钟等好
好研究
ARM 的芯片都是这样,外设通常都是给了时钟后,才能设置它的寄存器(即才能使用这个
外设)。STM32、LPC1XXX 等等都是这样。
这么做的目的是为了省电,使用了所谓时钟门控的技术。
这也属于电路里同步电路的范畴:同步电路总是需要 1 个时钟。
3.分类