mdk學習 為何外設需要時鐘使能

2021-09-20 12:54:49 字數 891 閱讀 8938

rcc_apb2periphclockcmd()函式是設定外設時鐘。arm與c51微控制器不同的是,不用外設的時候,如io口、adc、定時器等等,都是禁止時鐘的,以達到節能的目的,只有要用到的外設,才開啟它的時鐘。因此在需要用到gpiob和gpiod的時候,我們需要先開啟它的時鐘,具體用到的是函式庫裡面的函式:

void rcc_apb2periphclockcmd(uint32_t rcc_apb2periph, functionalstate newstate)

其中,第乙個引數需要指示要開啟什麼埠的時鐘,rcc_apb2periph_gpiox就是開啟gpiox的時鐘,第二個引數需要指示是開啟還是關閉,enable/disable。

開啟外設時鐘之後,然後就開始對gpio的配置暫存器進行設定了

所有暫存器都需要時鐘才能配置吧,暫存器是由d觸發器組成的,只有送來了時鐘,觸發器才能被改寫值。

任何mcu的任何外設都需要有時鐘,8051也是如此;stm32為了讓使用者更好地掌握功耗,對每個外設的時鐘都設定了開關,讓使用者可以精確地控制,關閉不需要的裝置,達到節省供電的目的。

51微控制器不用配置io時鐘,只是因為預設使用同乙個時鐘,這樣是方便,但是這樣的話功耗就降低不了。

例如,某個功能不需要,但是它還是一直執行。

stm32需要配置時鐘,就可以把不需要那些功能的功耗去掉。

當你想關閉某個io的時候,關閉它想對應的時鐘使能就是了,不過在51裡面,在使用io的時候是沒有設定io的時鐘的,還有在stm32中,有外部和內部時鐘之分,關於時鐘等好好研究

arm的晶元都是這樣,外設通常都是給了時鐘後,才能設定它的暫存器(即才能使用這個外設)。stm32、lpc1***等等都是這樣。

這麼做的目的是為了省電,使用了所謂時鐘門控的技術。

這也屬於電路裡同步電路的範疇:同步電路總是需要1個時鐘。

為何顯示卡與顯示器也需門當戶對?

在以往傳統的crt顯示器上,只需要改變行偏轉線圈和場偏轉線圈的電壓,就可以控制電子束把整個顯示區域 放大 或 縮小 到整個螢幕,放大 或縮小 的 雖然邊緣沒有lcd在標準解析度下那麼銳利,但是由於其沒有對訊號進行處理,只是對顯示區域的幅度作了放大 或縮小 所以總體效果還是可以讓人滿意的。52硬體上講...

ESP32學習 外設 timer

typedef struct timer config t 定時器初始化結構體成員6個,從上到下依次是,中斷使能,計數使能,中斷模式,計數方向,自動過載,分頻係數。timer init timer group 0,timer 1,timerconfig 初始化結構體後,呼叫初始化函式,三個引數包括,...

ESP32學習 外設 UART

brief uart configuration parameters for uart param config function typedef struct uart config t esp32總共有三個串列埠分別是uart num0,uart num1,uart num2。串列埠0作為軟體...