首先強調:時鍾使能必須在外設初始化之前!!!!!!!
在這引用一個解釋,
“ARM的芯片,外設通常都是給了時鍾后才能設置它的寄存器(即才能使用這個外設)。
STM32、LPC1XXX等等都是這樣,這么做的目的是為了省電,使用了所謂時鍾門控的技術。
寄存器是基於什么的?
當然是觸發器!!!准確地說應該是D觸發器
觸發器的賦值是一定需要時鍾的, 而寄存器的時鍾是由總線時鍾提供的,就是說沒有總線時鍾的話,你給寄存器值它是不會讀入的。換句話說,只有送來了時鍾,觸發器才能被改寫值,這樣寄存器才會工作。
又會有人說為什么我之前學51的時候為什么不用使能時鍾呢?
當初我們學51的時候,哪會關注功耗,我們能跑起來程序就行了,而且對於大多數廠家來說,絕大多數不會關注功耗。但是STM32不同,為了減少功耗,ST公司為了省電,使用了所謂的時鍾門控的技術,這又涉及到了同步電路。同步電路中總有一個時鍾控制。
在默認情況下這些時鍾都是disable的。你如果要使用它,首先就需要enable。
我們也可以把這個時鍾簡單的比作為門,STM32之所以是低功耗,就是因為他把所有門都默認設置為disable,在你需要用哪個門的時候,開哪個門就可以,也就是說用到什么外設,只要打開對應外設的時鍾就可以,其他的沒用到的可以還是disable,這樣耗能就會減少。