名稱:io口總結
說明:最近橫向學習了51微控制器、stm32和s3c2440的io口,做了幾個相關的實驗。
我們資料結構老師曾經說過 」差異就是知識「。在此,比較了這幾個晶元io口的使用後,有些感悟,總結如下:
1.io口是晶元內部cpu和外設之間溝通的橋梁,也是其他模組(如i2c通訊、spi通訊)的基礎。不同的晶元對io的操作不太相同,但很類似。高階一點的晶元(如stm32,s3c2440)用暫存器控制io口,輸出相應電平;低階一點的晶元(如51),直接控制io。
2.對於51這樣的微控制器來說,其io口的控制使用很簡單,就是直接往相應的io口寫入或讀出。51微控制器的io口一般比較少,其可以直接控制到位操作。對於stm32和2440來說,對其io口的控制則必須通過對應的暫存器進行控制。而且一般高階一點的晶元,其會提供更多的io口,有的io口還可以進行功能復用,所以在使用時也需要通過配置相應的控制暫存器選擇相應的功能。具體來說,對於stm32,一般其每個gpio口會有8種輸入輸出模式可供選擇,所以對其配置也要複雜的多(不僅要配置功能模式,還要配置埠引腳的最大速度,還要開啟相應的時鐘模組)。而對於2440來說,對其gpio的操作要稍微簡單些,只需控制三個暫存器即可(分別是控制暫存器、資料暫存器、還有控制上拉暫存器)。其次,控制2440也不需要像stm2那樣配置相應的時鐘樹,只需要對相應的io口配置相應的功能,然後從資料暫存器中寫入或讀出資料即可。
3.再說一點關於對於stm32和2440開發過程中遇到的一些想法:對於stm32來說,其在開發過程中可以使用提供的韌體庫(當然也可以直接操縱暫存器),而對於2440來說,一般還是直接操縱其暫存器。大概是因為stm32的暫存器的操縱比較複雜,2440的暫存器操作要相對簡單些吧。
如果非要做比較的話,cpu就像是人的大腦,io就像是cpu的觸手,用來感觸外部世界,從外界獲取資訊,經過處理之後,產生回饋。這裡的io觸手往往和片外外設相聯絡,如控制led燈,獲取外部感測器資訊,通過io口進行串列埠通資訊等。(同時cpu獲取資訊還可以通過片內外設的方式,如定時器中斷等。)這就決定了有些io既可以作為普通的io進行輸入輸出,也可以有復用功能,也就是作為其他外設模組(如i2c,串列埠,外部中斷等)的基礎,通過這些外設模組中的控制器進行操作(本質上還是通過io口進行輸入輸出,不同的是這些io資訊在到達cpu之時已經被外設控制器處理一番了)。
對於io口的工作方式來說,大的方面分為輸入和輸出兩種。但是為了滿足各種各樣的需要,有些微控制器的io口細化了輸入輸出的功能。如:c51的io口除了有普通的輸入輸出功能外還有功能復用口(並不是全部,有些有);stm32有多達8中的io口模式選擇。所以在操縱io口的時候一般都需要對io口進行配置以選擇合適的工作方式。(51微控制器不用配置io,選擇復用功能是直接開啟對應的功能設定位)。
a. 對於c51來說,其主要的功能復用是在p3口,(52微控制器p1口也有幾個復用io口)
b. s3c2440a來說,其有8個埠,每個埠的io引腳一般數目不一樣。
c. 對於stm32來說,其埠不僅有復用功能還有埠重對映功能(把一些復用功能重新對映到其他一些腳上),當用到埠重對映功能的時候需要開啟afio時鐘。
Linux嵌入式之IO程式設計總結篇
步驟如下 步驟2 列出伺服器中的所有檔案 opendir readdir 涉及的 檔案io 系統呼叫函式有 open read write close 涉及的 標準io c庫函式有 fopen fputs fgets fputc fgetc fread fwrite fclose 客戶端client...
嵌入式學習總結
第一天我學習到了linux學習的乙個大致的框架,以及了解了我們將要學習哪些知識,和學習的大致順序。首先以程式的概念入手,知道程式設計的基礎知識對於計算機來說,程式就是系統可以識別的指令,程式是怎樣在計算機裡執行的?首先記憶體儲器從硬碟裡呼叫程式,然後暫存器從記憶體裡把程式運送到cpu裡面執行。語言的...
嵌入式測試總結
從事嵌入式測試工作至今半年了,目前這份工作一半技術,一半溝通。單從技術上來說,主要有兩大難點,一是 從嵌入式系統測試的角度,你能夠從乙個高點來看待由很多個軟體項組成的系統,根據相關的實踐經驗,考慮什麼樣的系統是可靠的 第二 從語法上來說,測試人員的功底是否紮實將對 審查的質量起到很大的影響,是否能夠...