gpio(general purpose input and output)的暫存器分為兩大類:資料暫存器:
說明:
x
代表a、b、d、e、f、g
mux
代表功能切換的意思對於
gpxmux
和gpxdir
,a,b,d,e,f,g都有;而gpxqual
,只有a,b,d,e才有多路復用
以pwm1引腳作為例子來理解以下概念功能選擇控制暫存器(
gpxmux
)因為gpio的引腳是復用的,所以在使用gpio的引腳之前,就需要選擇這個引腳是作為功能引腳還是通用的數字i/o口
所以想讓pwm1引腳作為pwm波形的輸出引腳,這將gpioa的d0位置1;反之,若想讓pwm1引腳作為通用的數字i/o口,這將gpioa的d0位置0。
gpio的控制暫存器都是受
eallow
保護。所以對其操作前後需要加上eallow;
和edis;
方向控制暫存器(eallow;
gpiomuxregs.gpamux.bit.pwm1_gpioao=1;
//pwm波形的輸出引腳
gpiomuxregs.gpamux.bit.pwm1_gpioao=0;
//通用的數字i/o口
edis;
gpxdir
)假設將引腳pwm1設為通用的數字i/o口,這時需要判斷是否是做輸入引腳還是輸出引腳,用如下設定進行設定 (0入1出)
資料暫存器(eallow;
gpiomuxregs.gpadir.bit.gpioao =0;
//輸入引腳
gpiomuxregs.gpadir.bit.gpioao =1;
//輸出引腳
edis;
gpxdat
)當我們選擇完功能和方向之後,我們就可以進行讀該引腳的電平資訊,如下所示
若是賦值,就使用乙個等號既可if
(gpiodataregs.gpadat.bit.gpioao ==1)
//高電平
if(gpiodataregs.gpadat.bit.gpioao ==0)
//低電平
作用:防止輸入干擾訊號舉例說明
假設取樣視窗為6個訊號寬度,只有連續6個被取樣的訊號都是一樣才變化,否則認為是干擾訊號,不改變原來的狀態
符號解釋
通用io輸入功能分析
首先從pin口輸入訊號,到達輸入量化,這個由系統時鐘和輸入限定控制暫存器共同決定當前電平,然後再往上走,到達單向選擇驅動,這裡控制線(水平那個)需要為0時,取非為1才能導通,而這個是由方向控制暫存器控制,當方向控制暫存器為0時,則導通,那麼輸入訊號就可以儲存到資料暫存器中
通用io輸出功能分析
當要將資料暫存器資料輸出時,首先進過①,當
gpxdir
暫存器為1(輸出)時,①導通,資料來到了mux,當gpxmux
暫存器選擇0(通用的數字i/o口)時,資料就可以流到②的位置,此時若置位端沒有按下(為1),也沒有越界(為1),加上gpxdir
暫存器為1,通過或非門,則輸出0,所以②導通,資料成功到達引腳(pin)功能引腳分析
首先
gpxmux
為1,則將外設i/o口的輸出引腳接到pin埠,具體如圖所示tip:
高阻控制:高阻狀態不是0也不是1,就是這條線沒有用了,若不是高阻狀態則為1
內部上拉或下拉:簡單說就是將輸出的電平變的精確,要麼為0,要麼為1,就不會存在乙個模糊的值(如0.5這樣)
通用輸入輸出口 GPIO
1概述 埠i o埠主要功能是用於內部微控制器和外設進行通訊的媒介。乙個埠最多有8個引腳。引腳每個引腳都是獨立的,也就是說當我們對其中乙個引腳進行操作的時候不會影響到其他引腳。我們可以對引腳單獨設定為數字輸入或者數字輸出。其中有些引腳還可以用著模擬輸入和和外設中斷。同一時刻只有乙個功能對映到同乙個引腳...
STM8 通用輸入輸出口 GPIO
每個埠都分配的暫存器有 輸出暫存器 odr 輸入暫存器 idr 資料方向暫存器 ddr 控制暫存器1 cr1 和控制暫存器2 cr2 後面三個暫存器組和可以配置為8種 gpio 的模式。乙個i o口工作在輸入還是輸出是取決於該口的資料方向暫存器的狀態。通過在odr idr中置0 1,達到資料輸入輸出...
實驗記錄三 通用輸入輸出(GPIO)
之前把全部程式都跑了一次後,得到了導師下一步的安排。例如以下 1.編寫乙個程式。實如今lcd上顯示乙個萬年曆,包含年月日 星期 還有室內的溫度。2.編寫乙個程式,將原來的交通燈改為跑馬燈。期限是這學期。好吧。一學期編兩個程式。還真是從0做起。儘管是用c程式設計,可是用的庫函式卻是對應project開...