模式選擇匯總參考表:
模式 | 輸出驅動 | 輸入阻抗 | 默認狀態 | 典型應用場景 |
---|---|---|---|---|
推挽輸出 | 強驅動 | 禁用 | 可配置 | LED, SPI, 高速信號 |
開漏輸出 | 弱驅動 | 禁用 | 低/懸空 | I2C, 電平轉換, 線與 |
浮空輸入 | 禁用 | 極高 | 不確定 | 外部強驅動信號 |
上拉輸入 | 禁用 | 中高 | 高電平 | 按鍵(接地型), 數字輸入 |
下拉輸入 | 禁用 | 中高 | 低電平 | 按鍵(接VDD型), 中斷 |
模擬輸入 | 禁用 | 極高 | 無 | ADC, 模擬信號采集 |
輸出模式:
1. 推挽輸出 (Push-Pull)
VDD│├──P-MOS?──┐ (受控導通)│ │
控制邏輯─┤ ├───GPIO引腳│ │├──N-MOS?──┘ (受控導通)│GND工作狀態:
高電平:P-MOS導通,N-MOS截止 → 引腳=VDD
低電平:P-MOS截止,N-MOS導通 → 引腳=GND
特點:
雙MOS管協同工作(P管拉高,N管拉低)
可主動輸出高/低電平
驅動能力強(典型20mA),多個IO之間不可以直接并聯,否則短路
應用:
LED控制
驅動繼電器
SPI、UART通信
高速數字信號
2. 開漏輸出 (Open-Drain)
VDD│├──P-MOS ──┐ (永久禁用)│ │
控制邏輯─┤ ├───GPIO引腳───┬──外部上拉電阻──VDD_EXT│ │ │ (可選不同電壓)├──N-MOS?──┘ (受控導通) ││ ▼GND GND工作狀態:
低電平:N-MOS導通 → 引腳=GND
高電平:N-MOS截止 → 引腳懸空(需外部上拉)
特點:
只有N-MOS工作
高電平依賴外部上拉
支持"線與"連接,即多個IO之間可以直接并聯
應用:
I2C/SMBus總線
電平轉換(3.3V?5V)
多設備中斷共享
開關鍵控
?
?
輸入模式:?
1. 浮空輸入 (Floating Input)
VDD│├──P-MOS ──┐ (禁用)│ │
控制邏輯─┤ ├───GPIO引腳───外部信號源│ │├──N-MOS ──┘ (禁用)│GND▲│無上拉/下拉
特點:
完全懸空狀態
高阻抗輸入(>1MΩ)
易受干擾
應用:
外部明確驅動的信號
ADC輸入前級
高速數字信號接收
?2. 上下拉輸入 (Pull-up Input)
VDD││ 內部上拉電阻(30-50kΩ)├───┬──────┐│ │ │├──P-MOS ──┤ (禁用)│ │
控制邏輯─┤ ├───GPIO引腳│ │├──N-MOS ──┘ (禁用)│GNDVDD│├──P-MOS ──┐ (禁用)│ │
控制邏輯─┤ ├───GPIO引腳│ │├──N-MOS ──┘ (禁用)│GND▲│內部下拉電阻(30-50kΩ)
特點:
內部上拉電阻使能
默認高電平
抗干擾能力增強
應用:
按鍵檢測(按鍵接地)
數字傳感器輸入
默認高有效的信號
?3. 模擬輸入 (Analog Input)
VDD│├──P-MOS ──┐ (禁用)│ │
控制邏輯─┤ ├───GPIO引腳───┬──ADC輸入│ │ │├──N-MOS ──┘ (禁用) ▼│ 模擬信號源GND
特點:
完全斷開數字電路
高阻抗模式(>10MΩ)
無上拉/下拉
應用:
ADC采樣
模擬傳感器接口
精密測量電路
實際配置示例(STM32 HAL庫):
// 推挽輸出
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;// 開漏輸出(I2C)
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;// 上拉輸入(按鍵檢測)
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;// 下拉輸入
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;// 模擬輸入(ADC)
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
?