色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32 GPIO八種模式及工作原理詳解

哈哈hfgfdf ? 來源:電子嵌入式學習 ? 作者:電子嵌入式學習 ? 2024-07-22 09:32 ? 次閱讀

一. 前言

??GPIO全稱General Purpose Input Output,是微控制數字輸入/輸出的基本模塊,可以實現微控制器與外部環境的數字進行交換。借助GPIO微控制器可以實現對外圍設備(像控制led亮滅,按鍵控制,軟件模擬IIC等)直觀又簡單的控制。

GPIO的8種模式

?1. 輸入模式:
??(1)上拉輸入模式 GPIO_Mode_IPU
??(2)下拉輸入模式 GPIO_Mode_IPD
??(3)模擬輸入模式 GPIO_Mode_AIN
??(4)浮空輸入模式 GPIO_Mode_IN_FLOATING

2. 輸出模式:
??(1)推挽輸出模式 GPIO_Mode_Out_PP
??(2)開漏輸出模式 GPIO_Mode_Out_OD
??(3)復用推挽輸出模式 GPIO_Mode_AF_PP
??(4)復用開漏輸出模式 GPIO_Mode_AF_OD

3. 最大輸出速度:
??(1)2MHz GPIO_Speed_2MHz
??(2)25MHz GPIO_Speed_25MHz
??(3)50MHz GPIO_Speed_50MHz

636696d2-430c-11ef-a4b4-92fbcf53809c.png

二. 輸入模式

輸入驅動器

??GPIO的輸入驅動器主要由TTL肖特基觸發器、帶開關的上拉電阻和帶開關的下拉電阻組成,GPIO的輸入驅動器沒有多路選擇開關,輸入信號送到GPIO輸入數據寄存器的同時,送給了片上外設,所以GPIO的輸入沒有復用功能選項。

1. 上拉輸入模式

??上拉就是把當前引腳的電位拉高,比如拉到VDD。弱上拉和強上拉的區別只是上拉電阻的阻值不同。
??輸出緩沖器被禁止,TTL施密特觸發輸入被激活,此時圖中GPIO內部上拉電阻端的開關閉合,接通VDD,下拉電阻端開關斷開。此時引腳默認輸入為高電平。

6381623c-430c-11ef-a4b4-92fbcf53809c.png

2. 下拉輸入模式

??下拉就是把當前引腳的電位拉低,比如拉到GND。
??輸出緩沖器被禁止,TTL施密特觸發輸入被激活,此時圖中GPIO內部下拉電阻端的開關閉合,接通VSS,上拉電阻端開關斷開。此時引腳默認輸入為低電平。

63a50aca-430c-11ef-a4b4-92fbcf53809c.png

3. 模擬輸入模式

??應用于ADC模擬輸入,或者是低功耗下的省電。
??輸出緩沖器被禁止,TTL施密特觸發輸入被禁止。

63ca498e-430c-11ef-a4b4-92fbcf53809c.png

4. 浮空輸入模式

??浮空就是GPIO輸入引腳即不接高電平,也不接低電平。由于邏輯器件的內部結構,當它輸入引腳懸空時,相當于該引腳接了高電平。實際運用時,引腳不建議懸空,容易受到干擾。

輸出緩沖器被禁止,TTL施密特觸發輸入被激活,GPIO內部下拉電阻端的開關斷開,上拉電阻端開關也斷開。

63ec255e-430c-11ef-a4b4-92fbcf53809c.png

三. 輸出模式

輸出驅動器

GPIO的輸出驅動器主要由多路選擇器、輸出控制邏輯和一對互補的MOS管組成。多路選擇器是根據用戶的設置決定某個引腳是輸出還是復用功能輸出。輸出控制邏輯和一對互補的MOS管是根據用戶的設置通過控制P-MOS管和N-MOS管的導通還是斷開決定GPIO是開漏、推挽輸出模式還是關閉。

1. 推挽輸出模式

??推挽輸出既可以輸出高電平,也可以輸出低電平,連接數字器件。推挽輸出的結構一般是指兩個三極管分別受到兩個互補信號的控制,在一個三極管被導通的時候另一個三極管被截止。輸出的高點電平則是由IC的電源決定。

640d1f48-430c-11ef-a4b4-92fbcf53809c.png

2. 開漏輸出模式

??開漏模式一般用在IIC等需要“線與”功能的總線電路中,除此之外,還可以用在電平不匹配的場合,像需要輸出5V的高電平就可以在外部接入一個上拉電阻,上拉電源為5v,并把GPIO設置為開漏模式,當輸出高阻態時,由上拉電源向外部輸出5V的電平。

6440e346-430c-11ef-a4b4-92fbcf53809c.png

在開漏輸出時,只有N-MOS會參與工作,上方的P-MOS管完全不工作。當輸出控制為0(低電平)時,P-MOS管關閉,N-MOS管導通,使得輸出GND。當輸出控制為1(高電平)時,P-MOS管和N-MOS管全部關閉,引腳既不輸出高電平也不輸出低電平,此時呈現一個高阻態。正常使用的情況下,必須接一個上拉電阻,若不接上拉電阻,則引腳只能輸出低電平。
??在推挽輸出時,施密特觸發器是打開的,即輸入可用,通過輸入數據寄存器GPIOx_IDR可讀取I/O的實際狀態。

3. 復用推挽輸出模式

??GPIO復用為其他外設(IIC的SCL,SDA)。除了輸出信號的來源改變 ,其他操作與推挽輸出的功能相同。

64713686-430c-11ef-a4b4-92fbcf53809c.png

4. 復用開漏輸出模式

??GPIO復用為其他外設(TX1,MOSI,MISO,SCK,SS)。除了輸出信號的來源改變 ,其他操作與開漏輸出的功能相同。

648f486a-430c-11ef-a4b4-92fbcf53809c.png

四. GPIO的選用

當作為普通GPIO輸入:根據需要配置該引腳為浮空、上拉或下拉輸入,同時不使能該引腳對應的所有復用功能模塊。

當作為普通GPIO輸出:根據需要配置該引腳為推挽輸出或開漏輸出,同時不使能該引腳對應的所有復用功能模塊。

當作為普通模擬輸入:配置該引腳為模擬輸入模式,同時不使能該引腳對應的所有復用功能模塊。

當作為內置外設的輸入:根據需要配置該引腳為浮空、上拉或下拉輸入,同時使能該引腳對應的某個復用功能模塊。

當作為內置外設的輸出:根據需要配置該引腳為復用推挽輸出或復用開漏輸出,同時使能該引腳對應的所有復用功能模塊。

五. 有關GPIO輸入/輸出模式的初始化(F1系列 HAL庫函數)

?GPIO_InitTypeDef 類型的結構體

typedef struct{  uint32_t Pin;       /*!<指定要配置的GPIO引腳。該參數可以是@ref GPIO_pins_define 的任意值 */  uint32_t Mode;      /*!<指定所選引腳的工作模式。該參數可以是@ref GPIO_mode_define 的值 */  uint32_t Pull;      /*!< 指定所選引腳的上拉或下拉激活。該參數可以是@ref GPIO_pull_define的值 */  uint32_t Speed;     /*!< 指定所選引腳的速度。該參數可以是@ref GPIO_speed_define的值 */} GPIO_InitTypeDef;

可以選擇的GPIO引腳

/** @defgroup GPIO_pins_define GPIO pins define  * @{  */#define GPIO_PIN_0                 ((uint16_t)0x0001)  /* Pin 0 selected    */#define GPIO_PIN_1                 ((uint16_t)0x0002)  /* Pin 1 selected    */#define GPIO_PIN_2                 ((uint16_t)0x0004)  /* Pin 2 selected    */#define GPIO_PIN_3                 ((uint16_t)0x0008)  /* Pin 3 selected    */#define GPIO_PIN_4                 ((uint16_t)0x0010)  /* Pin 4 selected    */#define GPIO_PIN_5                 ((uint16_t)0x0020)  /* Pin 5 selected    */#define GPIO_PIN_6                 ((uint16_t)0x0040)  /* Pin 6 selected    */#define GPIO_PIN_7                 ((uint16_t)0x0080)  /* Pin 7 selected    */#define GPIO_PIN_8                 ((uint16_t)0x0100)  /* Pin 8 selected    */#define GPIO_PIN_9                 ((uint16_t)0x0200)  /* Pin 9 selected    */#define GPIO_PIN_10                ((uint16_t)0x0400)  /* Pin 10 selected   */#define GPIO_PIN_11                ((uint16_t)0x0800)  /* Pin 11 selected   */#define GPIO_PIN_12                ((uint16_t)0x1000)  /* Pin 12 selected   */#define GPIO_PIN_13                ((uint16_t)0x2000)  /* Pin 13 selected   */#define GPIO_PIN_14                ((uint16_t)0x4000)  /* Pin 14 selected   */#define GPIO_PIN_15                ((uint16_t)0x8000)  /* Pin 15 selected   */#define GPIO_PIN_All               ((uint16_t)0xFFFF)  /* All pins selected */
#define GPIO_PIN_MASK              0x0000FFFFu /* PIN mask for assert test *//**  * @}  */

可以選擇的GPIO引腳模式

/** @defgroup GPIO_mode_define GPIO mode define  * @{  */#define  GPIO_MODE_INPUT                        0x00000000u   /*!< 輸入模式      */#define  GPIO_MODE_OUTPUT_PP                    0x00000001u   /*!< 推挽輸出模式              */#define  GPIO_MODE_OUTPUT_OD                    0x00000011u   /*!< 開漏輸出模式              */#define  GPIO_MODE_AF_PP                        0x00000002u   /*!< 復用推挽輸出模式    */#define  GPIO_MODE_AF_OD                        0x00000012u   /*!< 復用開漏輸出模式    */#define  GPIO_MODE_AF_INPUT                     GPIO_MODE_INPUT   /*!< 復用功能輸入模式      */
#define  GPIO_MODE_ANALOG                       0x00000003u   /*!< 模擬輸入模式  */
#define  GPIO_MODE_IT_RISING                    0x10110000u   /*!< 上升沿觸發檢測的外部中斷模式         */#define  GPIO_MODE_IT_FALLING                   0x10210000u   /*!< 下降沿觸發檢測的外部中斷模式         */#define  GPIO_MODE_IT_RISING_FALLING            0x10310000u   /*!< 上升/下降沿觸發檢測的外部中斷模式  */
#define  GPIO_MODE_EVT_RISING                   0x10120000u   /*!< 上升沿觸發檢測的外部事件模式         */#define  GPIO_MODE_EVT_FALLING                  0x10220000u   /*!< 下降沿觸發檢測的外部事件模式         */#define  GPIO_MODE_EVT_RISING_FALLING           0x10320000u   /*!< 上升/下降沿觸發檢測的外部事件模式  *//**  * @}  */

可以選擇的GPIO引腳上拉/下拉激活

/** @defgroup GPIO_pull_define GPIO pull define  * @brief GPIO Pull-Up or Pull-Down Activation  * @{  */#define  GPIO_NOPULL        0x00000000u   /*!< 沒有激活上拉或下拉  */#define  GPIO_PULLUP        0x00000001u   /*!< 上拉激活           */#define  GPIO_PULLDOWN      0x00000002u   /*!< 下拉激活           *//**  * @}  */

可以選擇的GPIO引腳的速度

/** @defgroup GPIO_speed_define  GPIO speed define  * @brief GPIO Output Maximum frequency  * @{  */#define  GPIO_SPEED_FREQ_LOW              (GPIO_CRL_MODE0_1) /*!< Low speed 低速 */#define  GPIO_SPEED_FREQ_MEDIUM           (GPIO_CRL_MODE0_0) /*!< Medium speed 中速 */#define  GPIO_SPEED_FREQ_HIGH             (GPIO_CRL_MODE0)   /*!< High speed 高速 *//**  * @}  */

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2270

    文章

    10895

    瀏覽量

    355743
  • GPIO
    +關注

    關注

    16

    文章

    1204

    瀏覽量

    52052
收藏 人收藏

    評論

    相關推薦

    GPIO模式工作原理(電路原理和三極管)

    首先介紹一下接口類型 接口就是芯片之間的連接方式。單片機通過GPIO與各種模塊相連接,傳輸數據、信號。接口類型可分為以下幾種: 1、普通GPIO接口 通常只有一個引腳,只負責輸出、輸入高低
    的頭像 發表于 12-16 16:25 ?321次閱讀
    <b class='flag-5'>GPIO</b>的<b class='flag-5'>八</b><b class='flag-5'>種</b><b class='flag-5'>模式</b>及<b class='flag-5'>工作原理</b>(電路原理和三極管)

    GPIO內部電路的原理

    前言 筆者近日在B站刷到了一個視頻,使我對GPIO的I/O口內部基本結構以及工作原理有了恍然大明白的理解,現在對此做一個總結,并為大家推薦該視頻Keysking 【STM32GPIO
    的頭像 發表于 11-20 09:24 ?292次閱讀
    <b class='flag-5'>GPIO</b>內部電路的原理

    stm32 GPIO中斷配置教程

    在嵌入式開發中,STM32微控制器因其高性能和豐富的外設而廣受歡迎。GPIO(通用輸入/輸出)中斷是STM32微控制器中常用的功能之一,它允許開發者在特定引腳上檢測到外部信號變化時快速響應。 1.
    的頭像 發表于 11-19 15:53 ?691次閱讀

    STM32 GPIO工作模式

    GPIO (general purpose input output)是通用輸入輸出端口的簡稱,簡單來說就是軟件可控制的引腳,STM32芯片的GPIO引腳與外部設備連接起來,從而實現與外部通訊、控制以及數據采集的功能。
    的頭像 發表于 11-06 09:40 ?512次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的<b class='flag-5'>八</b><b class='flag-5'>種</b><b class='flag-5'>工作</b><b class='flag-5'>模式</b>

    以太網的傳輸介質和工作模式

    以太網是一廣泛應用的局域網(LAN)技術,它通過特定的傳輸介質和工作模式,在多個設備之間高效地傳輸數據。本文將從以太網的傳輸介質和工作模式
    的頭像 發表于 10-08 10:07 ?765次閱讀

    gpio接口是干什么的 gpio輸入輸出模式怎么選擇

    GPIO接口的作用 GPIO(General Purpose Input/Output)接口,即通用輸入輸出接口,是一用于連接和控制各種外部設備的數字接口。它由一組引腳組成,可以通過編程的方式控制
    的頭像 發表于 10-06 16:07 ?2513次閱讀

    晶體管的基本工作模式

    晶體管作為電子電路中的核心元件,其基本工作模式對于理解其工作原理和應用至關重要。晶體管的工作模式主要可以分為兩大類:放大
    的頭像 發表于 09-13 16:40 ?782次閱讀

    vim的三工作模式是什么?如何切換

    Vim是一款功能強大的文本編輯器,它具有多種工作模式,以滿足不同用戶的需求。在Vim中,主要有三工作模式:普通
    的頭像 發表于 08-30 14:50 ?2679次閱讀

    路數據分配器的基本概念及工作原理

    路數據分配器是一常見的電子設備,用于將一個輸入信號分配到多個輸出端。在本文中,我們將詳細介紹路數據分配器的基本概念、工作原理、應用場景以及設計方法。 一、
    的頭像 發表于 07-10 10:40 ?1908次閱讀

    三菱PLC的工作模式詳解

    三菱PLC(可編程邏輯控制器)作為工業自動化領域的核心控制設備,其工作模式直接關系到控制系統的穩定性和效率。本文將圍繞三菱PLC的工作模式展開詳細討論,包括RUN
    的頭像 發表于 06-18 09:32 ?1960次閱讀

    請問STM32WB55RG怎么配置GPIO輸入模式

    在CubeMX中配置STM32WB55的GPIO輸入模式時,在下拉選擇中為何沒有輸入模式選擇?
    發表于 05-23 07:58

    快速搞懂GPIO控制器的六模式

    的六常見模式,我們特地整理了這篇文章。。快速搞懂GPIO控制器的六模式我們拿STM32芯片舉
    的頭像 發表于 05-18 08:04 ?1465次閱讀
    快速搞懂<b class='flag-5'>GPIO</b>控制器的六<b class='flag-5'>種</b><b class='flag-5'>模式</b>

    STM32GPIO口如果既要輸入又要輸出怎么辦?STM32 GPIO口8模式如何準確的分析?

    STM32GPIO口如果既要輸入又要輸出怎么辦?STM32 GPIO口8模式如何準 確的分析?
    發表于 04-08 08:27

    徹底搞懂8GPIO輸入輸出模式

    一、STM32的4輸入模式輸入浮空:此模式下該引腳的高低電平由外部決定,用于讀取外部電平狀態。輸入上拉:此模式下該引腳浮空時電平狀態為高電
    的頭像 發表于 04-03 08:09 ?4096次閱讀
    徹底搞懂8<b class='flag-5'>種</b><b class='flag-5'>GPIO</b>輸入輸出<b class='flag-5'>模式</b>

    淺析電子負載常見的的四工作模式

    淺析電子負載常見的的四工作模式 電子負載是電子設備的一,用于模擬負載并測試電源的性能。它在電子行業和電力領域有廣泛的應用。電子負載常見的四
    的頭像 發表于 01-22 13:43 ?2672次閱讀
    主站蜘蛛池模板: 99 久久99久久精品免观看| 春药按摩人妻中文字幕| 国产精品亚洲视频在线观看| 另类专区hy777| 亚洲AV中文字幕无码久久| MD传媒MD0021在线观看| 久久免费电影| 亚洲 日本 中文字幕 制服| 啊灬啊灬啊灬快灬深高潮啦| 老司机午夜影院试看区| 亚洲国产在线精品国偷产拍| 抽插的日日液液H| 欧美精品一区二区三区视频 | 在线视频免费观看| 国产精品色无码AV在线观看| 秋霞最新高清无码鲁丝片| 姉调无修版ova国语版| 红尘影院在线观看| 学生无码AV一区二区三区| 大乳牛奶女在线观看| 女配穿书病娇被强啪h| 2017天天拍天天拍香蕉视频| 精品高清国产a毛片| 亚洲AVAV天堂AV在线网爱情| 国产成人小视频在线观看| 欧美精品九九99久久在免费线| 2020美女视频黄频大全视频| 久久re视频精品538在线| 亚洲成人综合在线| 国产乱人伦AV麻豆网| 双性人皇上被c到哭| 抽插性奴中出乳精内射| 漂亮的保姆5电影免费观看完整版中文| 51国产偷自视频在线视频播放 | 超碰免费碰免费视频| 欧美午夜福利主线路| 99热久久视频只有精品6| 男女一边摸一边做羞羞的事情免费| 在线视频 国产精品 中文字幕| 久久精品国产亚洲AV影院| 野花香在线观看免费观看大全动漫 |