單片機的幾種GPIO輸入輸出模型詳解

模式選擇匯總參考表:

模式輸出驅動輸入阻抗默認狀態典型應用場景
推挽輸出強驅動禁用可配置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;

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92356.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92356.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92356.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度解析ECharts.js:構建現代化數據可視化的利器

引言:數據可視化的新時代挑戰 在數字化轉型浪潮中,數據可視化已成為企業決策和用戶體驗的關鍵環節。面對海量數據的呈現需求,傳統表格已無法滿足用戶對直觀洞察的渴求。作為百度開源的JavaScript可視化庫,ECharts.js憑借其強大的功…

從零構建實時通信引擎:Freeswitch源碼編譯與深度優化指南

一、構建工具:編譯FreeSWITCH及其依賴庫的基礎 1. CMake2. Autoconf 二、匯編器:提升音視頻處理性能 3. YASM / NASM 三、音視頻編解碼器:支撐實時媒體傳輸 4. Opus5. x264 (可選)6. libvpx / libvpx2 (可選) 四、多媒體框架與工具庫&#xf…

網絡原理 HTTP 和 HTTPS

目錄 一 . HTTP 協議 二 . 抓包 三 . HTTP 請求 / 響應的基本格式 (1)HTTP請求的基本格式 (2)HTTP響應的基本格式 四 . HTTP 方法 GET 和 POST 的區別: 五 . 請求報頭和響應報頭 (1&#…

基于單片機的自動條幅懸掛機

摘 要 隨著日新月異科技發展,在心率體溫測量方面,我們取得了迅速的發展,就近日而言,脈搏測量儀已經在多個領域大展身手,除了在醫學領域有所建樹,在人們的日常生活方面的應用也不斷拓展,如檢疫…

《C++》面向對象編程--類(中)

文章目錄一、構造函數1.1定義1.2語法1.3特性二、析構函數2.1定義2.2語法2.3特性三、拷貝構造函數3.1定義3.2語法3.3特性3.4淺拷貝3.4.1定義3.4.2淺拷貝的風險3.5深拷貝一、構造函數 1.1定義 在C中,構造函數(Constructor) 是一種特殊的成員函…

機器學習初學者理論初解

大家好! 為什么手機相冊能自動識別人臉?為什么購物網站總能推薦你喜歡的商品?這些“智能”背后,都藏著一位隱形高手——機器學習(Machine Learning)。一、什么是機器學習?簡單說,機器學習是教計…

原碼反碼補碼

在Java中,無論是小數還是整數,他們都要帶有符號(和C語言不同,C語言有無符號數)。首位就作為符號位。原碼反碼:正數的反碼是其原碼本身負數的反碼是在其原碼的基礎上, 符號位不變,其余各個位取反…

使用ubuntu:20.04和ubuntu:jammy構建secretflow環境

一、使用ubuntu:20.04構建隱語編譯環境FROM ubuntu:20.04LABEL maintainer"build SecureProtocolLib on ubuntu:20.04"ARG TARGETPLATFORM# change dash to bash as default shell RUN ln -sf /bin/bash /bin/shRUN apt update \&& apt upgrade -y \&&am…

Hinge Loss(鉸鏈損失函數)詳解:SVM 中的關鍵損失函數

📌 一、什么是 Hinge Loss?Hinge Loss(鉸鏈損失),是 支持向量機(SVM, Support Vector Machine) 中常用的一種損失函數,用于最大間隔分類。其核心思想是:當預測結果已經正…

days32 :零基礎學嵌入式之網絡2.0

一、wireshark :網絡抓包工具1.功能:抓取通過電腦網卡的網絡數據2.作用:排查故障、抓取數據做數據分析、3.用法:(1)sudo wireshark(2)選擇需要抓取的網卡》any(3&#xf…

數字護網:一次深刻的企業安全體系靈魂演練

🧩 引言:什么是“護網”?—— 不止是攻防,更是企業安全能力的年度大考 每年,由國家相關部門牽頭的“護網行動”都如期而至,各大企事業單位的安全團隊也隨之進入高度戒備狀態。然而,“護網”遠非…

基于 NumPy 的高效數值計算技術解析與實踐指引

在數據處理與科學計算領域,高效是核心訴求。NumPy 作為 Python 生態高效數值計算的基石,以高性能多維數組對象及配套函數,成為數據從業者的必備工具。其數組支持算術、比較、邏輯等豐富運算,通過向量化操作直接處理每個元素&#…

Kafka MQ 控制器 broker

Kafka MQ 控制器 broker 1 控制器broker的選舉 在 Kafka 集群中會有一個或多個 broker,其中有一個 broker 會被選舉為控制器(Kafka Controller)?,它負責管理整個集群中所有分區和副本的狀態。當某個分區的leader副本出現故障時,由控制器負責為該分區選舉新的leader副本…

50天50個小項目 (Vue3 + Tailwindcss V4) ? | ImageCarousel(圖片輪播組件)

&#x1f4c5; 我們繼續 50 個小項目挑戰&#xff01;—— ImageCarousel組件 倉庫地址&#xff1a;https://github.com/SunACong/50-vue-projects 項目預覽地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 <script setup> 語法以及 Tailwind CSS …

基于springboot的智能物流管理系統(源碼+論文)

一、開發環境 MYSQL數據庫 MySQL是一個真正的多用戶、多線程SQL數據庫服務器&#xff0c;基于SQL的客戶/服務器模式的關系數據庫管理系統。其特點包括&#xff1a; 功能強大&#xff1a;支持多用戶、多線程操作。使用簡單&#xff1a;管理方便&#xff0c;安全可靠性高。跨平…

Collection接口的詳細介紹以及底層原理——包括數據結構紅黑樹、二叉樹等,從0到徹底掌握Collection只需這篇文章

目錄 Collection簡介 Collection的遍歷方式 迭代器遍歷 增強for遍歷 Lambda表達式遍歷 List集合 List集合的遍歷方式 列表迭代器遍歷以及普通for循環 數據結構 棧 隊列 數組 鏈表 單向鏈表 雙向鏈表 二叉樹 遍歷方式 普通二叉樹 二叉查找樹 平衡二叉樹 旋轉…

《安順棒壘球》世界十大運動·棒球1號位

Worlds Top 10 Sports for Newbies | 棒球排第幾&#xff1f; 全球青訓體系大揭秘 ?添加圖片注釋&#xff0c;不超過 140 字&#xff08;可選&#xff09;神王棒球世界十大運動排名 Top 10 Global Sports&#xff08;按參與度/商業價值/影響力綜合排序&#xff09;足球 Footba…

什么是“差分“?

1. 什么是"差分"&#xff1f;想象兩個人在玩蹺蹺板&#xff1a;當兩人同時向上跳&#xff08;同向移動&#xff09;→ 蹺蹺板不動 → 這叫"共模"當一人向上&#xff0c;另一人向下&#xff08;反向移動&#xff09;→ 蹺蹺板傾斜 → 這叫"差分"差…

4.組合式API知識點(2)

10 組合式API - 模版引用模板引用的概念如何使用&#xff08;以獲取dom為例 組件同理&#xff09;組件實例對象defineExpose()11 組合式API - provide和inject作用和場景跨層傳遞普通數據跨層傳遞響應式數據跨層傳遞方法需求解決思考

GitLab企業版部署與許可證生成完整指南

GitLab企業版部署與許可證生成完整指南一、背景二、環境準備三、部署步驟1. 創建目錄結構2. 生成GitLab許可證2.1 克隆許可證生成器2.2 修改生成器腳本2.3 構建Docker鏡像2.4 生成許可證文件3. 創建Docker Compose配置文件4. 啟動GitLab容器4.1 初始啟動4.2 修改GitLab配置4.3 …