每個埠都分配的暫存器有:輸出暫存器(
odr),輸入暫存器(
idr),資料方向暫存器(
ddr),控制暫存器1(
cr1)和控制暫存器2(
cr2)
.後面三個暫存器組和可以配置為8種
gpio
的模式。乙個i/o口工作在輸入還是輸出是取決於該口的資料方向暫存器的狀態。通過在odr、idr中置0/1,達到資料輸入輸出的通斷。
gpio主要功能
i/o的配置和使用
每乙個埠都有乙個輸出資料暫存器(odr),乙個引腳輸入暫存器(idr)和乙個資料方向暫存器(ddr)總是同相關的。
控制暫存器1(cr1)和控制暫存器2(cr2)用於對輸入/輸出進行配置。任何乙個i/o引腳可以通過對ddr,odr,cr1和cr2暫存器的相應位進行程式設計來配置。
暫存器中的位n對應於口的引腳n。各種不同配置總結如表18。
(表18:io口配置表)
注意:連線vdd的二極體在實際開漏極狀態引腳是無效的,在引腳和vol之間的區域性保護裝置重要性是有效的。輸入模式沒有使用的i/o引腳必須連線到乙個固定的電平值。或者是上拉或者是下拉。
輸出模式
將ddrx位置1就選擇了輸出模式。在該模式下向odr暫存器的位寫入資料將會通過鎖存器輸出對應數字值到i/o口。讀idr的位將會返回相應的i/o引腳電平值。通過軟體配置cr1,cr2暫存器可以得到不同的輸出模式:上拉輸出,開漏輸出。
1、上拉輸入:上拉就是把電位拉高,比如拉到
vcc。
上拉就是將不確定的訊號通過乙個電阻嵌位在高電平!電阻同時起限流作用!弱強只是上拉電阻的阻值不同,沒有什麼嚴格區分。
2、下拉輸入:
就是把電壓拉低,拉到gnd
。與上拉原理相似。 3、
浮空輸入
:浮空(floating
)就是邏輯器件的輸入引腳即不接高電平,也不接低電平。由於邏輯器件的內部結構,當它輸入引腳懸空時,相當於該引腳接了高電平。一般實際運用時,引腳不建議懸空,易受干擾。
通俗講就是讓管腳什麼都不接,浮空著。
4、模擬輸入:
模擬輸入是指傳統方式的輸入.
數字輸入是輸入
pcm數碼訊號,即
0,1的二進位制數碼訊號
,通過數模轉換
,轉換成模擬訊號
,經前級放大進入功率放大器
,功率放大器還是模擬的。
5、推挽輸出:
可以輸出高
,低電平
,連線數字器件
; 推挽結構一般是指兩個三極體分別受兩互補訊號的控制
,總是在乙個三極體導通的時候另乙個截止。高低電平由
ic的電源低定。
6、開漏輸出:
輸出端相當於三極體的集電極
. 要得到高電平狀態需要上拉電阻才行
. 適合於做電流型的驅動
,其吸收電流的能力相對強(一般
20ma
以內).
7、復用開漏輸出、復用推挽輸出:可以理解為gpio
口被用作第二功能時的配置情況(即並非作為通用
io口使用
)。在stm32
中選用io
模式,下面是參考網上的總結一下。
(1) 浮空輸入
_in_floating
——浮空輸入,可以做
key識別,
rx(2
)帶上拉輸入
_ipu
——io
內部上拉電阻輸入
(3)帶下拉輸入
_ipd
—— io
內部下拉電阻輸入
(4) 模擬輸入
_ain
——應用
adc模擬輸入,或者低功耗下省電
(5)開漏輸出
_out_od
——io輸出0
接gnd,io
輸出1,懸空,需要外接上拉電阻,才能實現輸出高電平。當輸出為1時,
io口的狀態由上拉電阻拉高電平,但由於是開漏輸出模式,這樣
io口也就可以由外部電路改變為低電平或不變。可以讀
io輸入電平變化,實現
c51的
io雙向功能
(6)推挽輸出
_out_pp
——io
輸出0-
接gnd
, io
輸出1 -
接vcc
,讀輸入值是未知的
(7)復用功能的推挽輸出
_af_pp
——片內外設功能(
i2c的
scl,sda)(8
)復用功能的開漏輸出
_af_od
——片內外設功能(
tx1,mosi,miso.sck.ss)
通用輸入輸出口 GPIO
1概述 埠i o埠主要功能是用於內部微控制器和外設進行通訊的媒介。乙個埠最多有8個引腳。引腳每個引腳都是獨立的,也就是說當我們對其中乙個引腳進行操作的時候不會影響到其他引腳。我們可以對引腳單獨設定為數字輸入或者數字輸出。其中有些引腳還可以用著模擬輸入和和外設中斷。同一時刻只有乙個功能對映到同乙個引腳...
實驗記錄三 通用輸入輸出(GPIO)
之前把全部程式都跑了一次後,得到了導師下一步的安排。例如以下 1.編寫乙個程式。實如今lcd上顯示乙個萬年曆,包含年月日 星期 還有室內的溫度。2.編寫乙個程式,將原來的交通燈改為跑馬燈。期限是這學期。好吧。一學期編兩個程式。還真是從0做起。儘管是用c程式設計,可是用的庫函式卻是對應project開...
STM32之GPIO輸入輸出
gpio的輸出 背景 應用在點亮led。led串聯電阻再上拉,另一端與gpio口相連。因此,gpio輸出高電平則led滅,輸出低電平則led亮。第一步工作是初始化gpio,使能外設時鐘,因為gpio是掛載在apb2中線上的。然後對gpio inittypedef結構體進行初始化,設定gpio pin...