首先,要先說下gpio和引腳的區別,整理下網上提出的問題和答案。
gpio的英文全稱general-purpose input /output ports,中文意思是通用i/o埠。
在微控制器上,微控制器有很多管腳(pin)
除了一些特殊的pin,比如電源,比如地線,晶振接線等等,其他很多都可以任意定義成兩種功能中的一種:
1. 模組的管腳,2. gpio
當定義為模組管腳時,pin起模組中定義的功能。比如定義成spi模組的管腳,那就按照具體晶元的規定,或者定義成mosi,或者定義成miso,或者定義成sclk,這些不是任意的。spi是模組,miso等是功能管腳。
當定義成gpio時,可以定義成高阻,輸入,或者輸出。這時候,就可以用作操作控制位,點led燈等功能了。
很多模組的功能管腳,嚴格意義上來講也是io,比如canh,canl,所以這裡為了避免混淆,就將沒有定義成模組功能管腳的那些微控制器管腳定義成general purpose的io了,以示區別。
好,現在換種說法,其實是乙個意思,不過我覺得說的也很好。
在嵌入式系統中,經常需要控制許多結構簡單的外部裝置或者電路,這些裝置有的需要通過cpu控制,有的需要cpu提供輸入訊號。並且,許多裝置或電路只要求有開/關兩種狀體就夠了,比如led的亮與滅。對這些裝置的控制,使用傳統的串列埠或者並口就顯得比較複雜,所以,在嵌入式微處理器上通常提供了一種「通用可程式設計i/o埠」,也就是gpio。
如果要操作gpio,就必須對相應的暫存器進行操作。
乙個gpio埠至少需要兩個暫存器,乙個做控制用的「通用io埠
控制暫存器」,還有乙個是存放資料的「通用i/o埠資料暫存器」。資料暫存器的每一位是和gpio的硬體引腳對應的,而資料的傳遞方向是通過控制暫存器設定的,通過控制暫存器可以設定每一位引腳的資料流向。
(gpio相關的暫存器有,iopin、ioset、ioclr、iodir四個暫存器。)
關於gpio分組:
rk1108 datasheet中的截圖
對GPIO相關配置的理解
本文章僅僅是個人對學習的總結,如有錯誤,望各位前輩指明告知 1 gpio mode ain 模擬輸入 2 gpio mode in floating 浮空輸入 3 gpio mode ipd 下拉輸入 4 gpio mode ipu 上拉輸入 5 gpio mode out od 開漏輸出 6 gp...
我對補碼的理解
計算機中用補碼表示乙個數是為了方便運算的,這樣減法也可以通過加法來實現。為什麼這樣設計行呢?主要是因為計算機里數的特殊儲存格式決定的,計算機裡用固定位數表示乙個數,超過該位置的部分會被捨棄。拿8byte的int型來說,無符號形式下,最大到1111 1111 255,超過了該範圍,會被截斷的,如 11...
我對SOA的理解
每次給客戶做工作流培訓,都要接觸不同的行業,但我每次都被問了乙個同樣的問題 hongsoft老師,請問應該怎麼理解soa?這個問題其實和工作流培訓關係不大,但現在如火如荼的soa的推廣都和bpel扯上了關係,而bpel又和工作流間 說不清,道不明 所以我還真要說說,我是怎麼理解soa的。7 80年代...