通用輸入輸出口 GPIO

2022-08-02 06:51:12 字數 2629 閱讀 3070

1概述

埠i/o埠主要功能是用於內部微控制器和外設進行通訊的媒介。乙個埠最多有8個引腳。

引腳每個引腳都是獨立的,也就是說當我們對其中乙個引腳進行操作的時候不會影響到其他引腳。我們可以對引腳單獨設定為數字輸入或者數字輸出。其中有些引腳還可以用著模擬輸入和和外設中斷。同一時刻只有乙個功能對映到同乙個引腳。

gpio主要功能(我只列舉我比較陌生的)

輸入相容5v電壓

i/o口工作電壓範圍為1.6v到vddiomax

i/o口的配置和使用

io口常用的暫存器有5個odr  idr  ddr  cr1  cr2

資料輸出暫存器odr    輸入暫存器idr     和方向暫存器ddr     控制暫存器1cr1    控制暫存器2cr2

需要注意的是這裡的引腳位和暫存器的位是一一對應的,即暫存器中的位n對應於口的引腳n。

通過這個表我們可以看出配置好乙個i/o口只需要ddr方向暫存器,cr1控制暫存器,和cr2控制暫存器

下面我們先來看看輸入模式

將方向暫存器ddrx位清零就選擇了輸入模式,在該模式下讀idr暫存器的位將返回對應i/o口引腳上的電頻值。

理論上可以通過軟體配置得到4中不同的輸入模式:懸浮不帶中斷輸入,懸浮帶中斷輸入,上拉不帶中斷輸入,上拉帶中斷輸入。但是在實際情況下不是所有的i/o口都具有外部中斷和上啦,我們應該參考資料手冊中關於每個引腳的實際硬體效能描述。

懸浮輸入或者上拉輸入

埠的輸入功能是不會自動選擇,使用者可以通過寫相應的外設暫存器的控制位來選擇輸入功能,通過上表可以看出我們可以通過設定ddr和cr1暫存器的相應位來配置輸懸浮輸入或者上拉輸入。

中斷功能

我們可以在i/o口引腳為輸入模式時通過設定px_cr2暫存器的相應位來配置某個i/o作為外部輸入中斷模式。在這種配置下,i/o引腳上的乙個訊號沿或者是低電頻會產生乙個中斷請求。

在exti_cr[2:1]j暫存器中對於每乙個中斷向量都可以單獨程式設計為上公升沿或者下降沿觸發。

外部中斷只對i/o口設定為輸入模式才有效

中斷遮蔽

可以通過對px_cr2暫存器的相應位進行程式設計來單獨使能/關閉外部中斷功能,復位後外部中斷是關閉的。

模擬通道

adc外設可以選擇某些i/o口作為模擬輸入通道。當使用模擬通道的時候,adc_tdr暫存器的輸入施密特觸發器必須被關閉。

施密特觸發器

部分i/o口包括乙個內嵌的輸入施密特觸發器。可以通過adc_tdr施密特觸發器禁止暫存器來使能/禁止施密特觸發器

輸出模式

將ddrx位置1就選擇了輸出模式。在該模式下向odr暫存器的位寫入資料將會通過鎖存器輸出對應數字值到i/o口。讀idr的位將會返回相應的i/o引腳電頻值。通過軟體配置cr1,cr2暫存器可以得到不同的輸出模式:上拉輸出,開漏輸出。

輸出功能為微控制器輸出到外部或者i/o引腳提供乙個方便的操作方法,輸出功能使能時,輸出功能模組接管了輸出鎖存暫存器(px_odr)並強制px_odr相應的位為1

輸出功能可以是上拉或者開漏輸出,取決於外設本身和控制暫存器1(px_cr1),輸出頻率取決於控制暫存器2(px_cr2)的值。

例如:考慮達到最佳效能,spi輸出引腳必須設定為上拉,快速擺率.  uart_tx可以被配置為上拉或者開漏外部帶上啦來實現從機的配置。

擺率控制

擺率輸出可以使用cr2的相應位通過軟體控制。置位cr相應位選擇為10mhz的輸出頻率。該功能可以在開漏也可以用在帶上啦的輸出模式i/o口,輸出型別為o3和o4

復位後的預設配置

復位之後,所有的引腳都是懸浮輸入模式。

沒有使用的引腳

沒有使用的引腳必須連線到乙個固定的電頻。

低功耗模式

低功耗模式對gpio口的影響

等待(wait)   對i/o口無影響。外部中斷可以腮紅mcu退出等待(wait)模式

停機(halt)   對i/o口無影響。 外部中斷可以說使mcu從停機模式(halt)喚醒

gpio暫存器

gpio 暫存器表和復位值

以上暫存器值的描述是我複製stm8s手冊描述。

STM8 通用輸入輸出口 GPIO

每個埠都分配的暫存器有 輸出暫存器 odr 輸入暫存器 idr 資料方向暫存器 ddr 控制暫存器1 cr1 和控制暫存器2 cr2 後面三個暫存器組和可以配置為8種 gpio 的模式。乙個i o口工作在輸入還是輸出是取決於該口的資料方向暫存器的狀態。通過在odr idr中置0 1,達到資料輸入輸出...

實驗記錄三 通用輸入輸出(GPIO)

之前把全部程式都跑了一次後,得到了導師下一步的安排。例如以下 1.編寫乙個程式。實如今lcd上顯示乙個萬年曆,包含年月日 星期 還有室內的溫度。2.編寫乙個程式,將原來的交通燈改為跑馬燈。期限是這學期。好吧。一學期編兩個程式。還真是從0做起。儘管是用c程式設計,可是用的庫函式卻是對應project開...

STM32之GPIO輸入輸出

gpio的輸出 背景 應用在點亮led。led串聯電阻再上拉,另一端與gpio口相連。因此,gpio輸出高電平則led滅,輸出低電平則led亮。第一步工作是初始化gpio,使能外設時鐘,因為gpio是掛載在apb2中線上的。然後對gpio inittypedef結構體進行初始化,設定gpio pin...