STM32中使能时钟的目的
首先强调:时钟使能必须在外设初始化之前!!!!!!!
在这引用一个解释,
“ARM的芯片,外设通常都是给了时钟后才能设置它的寄存器(即才能使用这个外设)。
STM32、LPC1XXX等等都是这样,这么做的目的是为了省电,使用了所谓时钟门控的技术。
寄存器是基于什么的?
当然是触发器!!!准确地说应该是D触发器
触发器的赋值是一定需要时钟的, 而寄存器的时钟是由总线时钟提供的,就是说没有总线时钟的话,你给寄存器值它是不会读入的。换句话说,只有送来了时钟,触发器才能被改写值,这样寄存器才会工作。
又会有人说为什么我之前学51的时候为什么不用使能时钟呢?
当初我们学51的时候,哪会关注功耗,我们能跑起来程序就行了,而且对于大多数厂家来说,绝大多数不会关注功耗。但是STM32不同,为了减少功耗,ST公司为了省电,使用了所谓的时钟门控的技术,这又涉及到了同步电路。同步电路中总有一个时钟控制。
在默认情况下这些时钟都是disable的。你如果要使用它,首先就需要enable。
我们也可以把这个时钟简单的比作为门,STM32之所以是低功耗,就是因为他把所有门都默认设置为disable,在你需要用哪个门的时候,开哪个门就可以,也就是说用到什么外设,只要打开对应外设的时钟就可以,其他的没用到的可以还是disable,这样耗能就会减少。