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作為軟體...