嵌入式系統

通用輸入輸出(GPIO)

GPIO 是微控制器上的一根腳位,你的程式可以把它拉高或拉低(輸出),或是讀取它是開還是關(輸入)——這是晶片接觸外界最基本的方式。它就像一根金屬小腳上同時裝了由軟體控制的電燈開關和門鈴:寫入 1 讓它變成 3.3 伏特(點亮 LED、吸合繼電器),寫入 0 把它接地,或設成「輸入」去問按鈕有沒有被按下。「通用(general-purpose)」是指同一根腳位這些事都能做,由韌體決定,而非晶片裡寫死的。

每根 GPIO 由暫存器控制——方向暫存器選擇輸入或輸出,資料暫存器設定或讀取電位。輸入腳常需要上拉或下拉電阻,讓一根沒接東西的腳能讀到乾淨的 1 或 0,而不是浮動的雜訊;多數 MCU 都內建這些電阻並可用軟體切換。GPIO 也是你「軟體模擬(bit-bang)」通訊協定、閃爍那顆著名「Hello World」LED、接上感測器的地方。要注意電流上限:一根典型腳位只能輸出約 20 mA,點 LED 夠用,但帶不動馬達——馬達得靠電晶體來扛重活。

DDRB |= (1<<PB0); PORTB |= (1<<PB0); // set PB0 as output, drive HIGH

新手常見的錯:按鈕接到 GPIO 卻沒接上拉/下拉電阻,輸入腳會「浮接」,於是從環境雜訊讀到隨機的 1 和 0。只要一行程式啟用內部上拉就能解決。

又稱
digital I/O pinGPIO 腳位通用 I/O