STOpenIO子系統 一 IO的時鐘配置及使能

2021-10-04 08:00:49 字數 1365 閱讀 2122

兩個基本概念:

i/o: input/output 輸入輸出

gpio:general-purpose input/output 通用輸入輸出

在mcu中,i/o是和外界進行資料互動的唯一途徑,其作用至關重要。

i/o的輸出驅動和輸入取樣都是在時鐘驅動下完成的,所以要使用i/o系統,首先要正確的配置時鐘系統,給對應的模組提供適合的驅動時鐘訊號。為了降低系統功耗,stm32f103系列的每乙個模組的時鐘也是可以單獨控制的,要使用對應的模組,就需要使能其時鐘,不需要使用的可以關閉以節省功耗(在設計低功耗產品的時候這點尤其重要)。

系統時鐘路徑如下時鐘樹所示:

從上面的時鐘路徑(紅色部分)我們可以看出來,要得到乙個正確的i/o時鐘,需要做如下配置:

pll的輸出:也就是sysclk這個時鐘,我們常常說的晶元跑72mhz還是48mhz就是指的這個時鐘。一般系統初始化的時候就確定下來了,很少改動,只有在做系統動態調節頻率的時候才需要用到。

ahb時鐘:圖中a點所示。從圖上可以看出來,這個橋接時鐘控制了後面一堆堆外設的工作時鐘。它慢,後面的所有裝置都慢,比如uart,adc等等

apb2:如上圖中b點所示,我們可以看到i/o的時鐘屬於apb2控制,要得到最合適的時鐘,需要正確配置apb2時鐘。一般我們配置到最大時鐘,以達到最快的操作速度。

enable模組時鐘:第一張圖中c點所示。要使對應的i/o能正常輸入輸出,還得使相對應的io模組的時鐘開啟。上圖rcc的暫存器(rcc_apb2enr)對應的位控制了相對應的模組,從暫存器的控制位可以看出來,每乙個io的輸出是可以單獨使能的。

系統提供了乙個函式來完成這個工作:

void

rcc_apb2periphclockcmd

(uint32_t rcc_apb2periph, functionalstate newstate)

else

}

比如我們要enable porta的時鐘,只要做如下初始化就開啟了gpioa的時鐘。

SPI子系統一

一 spi連線 sdi 資料輸入 sdo 資料輸出 sck 時鐘 cs 片選 1 sdo 主裝置資料輸出,從裝置資料輸入 2 sdi 主裝置資料輸入,從裝置資料輸出 3 sclk 時鐘訊號,由主裝置產生 4 cs 從裝置使能訊號,由主裝置控制 其中cs是控制晶元是否被選中的,也就是說只有片選訊號為預...

《思科UCS伺服器統一計算》一2 3 I O子系統

思科ucs伺服器統一計算 i o子系統負責在伺服器記憶體和外部世界之間傳輸資料。傳統上,這種傳輸是通過伺服器主機板上相容pci 外圍元件互聯,pci 標準的i o匯流排實現的。開發pci的目的是讓計算機系統的外圍裝置可實現互聯。pci的歷史非常悠久 1 現在的最新版本是pci express。外圍部...

Linux時間子系統一 時間子系統綜述

timer在硬體上是乙個非常簡單的東西 這裡不考慮虛擬化,安全相關的問題 一般來說timer都會支援兩種模式,一是periodic模式和free running模式,前者週期性的產生中斷,後者一直往前累加到配置的最大值,報一次中斷,稱為one shot。軟體上將timer抽象成clocksource...