0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

STM32 GPIO的八種工作模式

硬件攻城獅 ? 來源:CSDN技術(shù)社區(qū)rivencode ? 2024-11-06 09:40 ? 次閱讀

一.GPIO的簡介

GPIO (general purpose input output)是通用輸入輸出端口的簡稱,簡單來說就是軟件可控制的引腳,STM32芯片的GPIO引腳與外部設(shè)備連接起來,從而實現(xiàn)與外部通訊、控制以及數(shù)據(jù)采集的功能。

1.引腳全是GPIO嘛?

答案是否定的,不是所有引腳都是GPIO

STM32F103VET6引腳圖

0a1e04fa-90a2-11ef-a511-92fbcf53809c.png

STM32 芯片的 GPIO 被分成很多組,每組有 16 個引腳,如型號為 STM32F103VET6 型號的芯片有 GPIOA、GPIOB、GPIOC 至 GPIOE 共 5 組 GPIO,例如GPIOA(PA0~PA15 16個引腳)芯片一共 100 個引腳,其中GPIO 就占了一大部分,所有的 GPIO 引腳都有基本的輸入輸出功能

這100個引腳中除了GPIO還有特殊功能的引腳,例如復(fù)位引腳,電源引腳…

0a59b82e-90a2-11ef-a511-92fbcf53809c.png

2.GPIO的輸入輸出模式

GPIO可配置8種模式

輸出模式下可控制端口的輸出高低電平,可用于驅(qū)動LED、控制蜂鳴器、模擬通信協(xié)議輸出時序(SPI I2C 等)等

輸入模式下可讀取端口的高低電平或電壓,用于讀取按鍵輸入,外接模塊電平信號輸入,ADC電壓采集、模擬通信協(xié)議接收數(shù)據(jù)(SPI I2C 等)等

3.GPIO基本結(jié)構(gòu)

0a9048d0-90a2-11ef-a511-92fbcf53809c.png

每個GPIO端口對應(yīng)16個引腳,例GPIOA(PA0~PA15)

內(nèi)核cpu就可以通過APB2總線對寄存器讀寫,完成輸出電平和讀取電平的功能

二.GPIO功能框圖

0abe6800-90a2-11ef-a511-92fbcf53809c.png

保護二極管

芯片的引腳電平0~3.3V,部分引腳可以5V,引腳的兩個保護二級管可以防止引腳外部過高或過低的電壓輸入

1.當引腳電壓高于VDD 時,上方的二極管導(dǎo)通

0af28144-90a2-11ef-a511-92fbcf53809c.png

防止過高電壓進入芯片內(nèi)部燒壞芯片

2.當引腳電壓低于 VSS 時,下方的二極管導(dǎo)通

0b27ef6e-90a2-11ef-a511-92fbcf53809c.png

防止電壓過低,從芯片內(nèi)部汲取電流

施密特觸發(fā)器

0b4c476a-90a2-11ef-a511-92fbcf53809c.png

具有濾波的作用,就是讓通過的電平輸出穩(wěn)定的高低電平

0b781746-90a2-11ef-a511-92fbcf53809c.png

三.GPIO的8種工作模式

0bb03f54-90a2-11ef-a511-92fbcf53809c.png

1.浮空,上拉,下拉輸入

0bfb5782-90a2-11ef-a511-92fbcf53809c.png

在輸入模式時,施密特觸發(fā)器打開,輸出被禁止,可通過輸入數(shù)據(jù)寄存器 GPIOx_IDR讀取 I/O 狀態(tài)。

由于電阻阻值很大這里的上拉下拉輸入都是弱上拉 弱下拉,為了對外部輸入產(chǎn)生很大的影響

上拉輸入:給一個默認的高電平也就是說當沒有外部輸入時默認輸入高電平

0c38f0ba-90a2-11ef-a511-92fbcf53809c.png

下拉輸入:給一個默認的低電平也就是說當沒有外部輸入時默認輸入低電平

0c616db0-90a2-11ef-a511-92fbcf53809c.png

浮空輸入:如果輸入引腳啥都不接,此時輸入電平極易受外界的干擾導(dǎo)致輸入電平不確定,完全由外部的輸入決定。

0c8f2822-90a2-11ef-a511-92fbcf53809c.png

2.模擬輸入

這模式主要為片上外設(shè)ADC而配置,從外部讀取模擬信號

模擬信號:測試信號未經(jīng)過采樣前,均是時間和幅值均是連續(xù)的信號稱為模擬信號,例如連續(xù)變化的電壓,電流,溫度等等。

數(shù)字信號:模擬信號經(jīng)等間隔“采樣”及幅值量化以后,時間和幅值均是不連續(xù)的(離散)的信號,例如0 /1

0cc7a51c-90a2-11ef-a511-92fbcf53809c.png

這里不需要經(jīng)過施密特濾波,人家本來就要連續(xù)變化的模擬量

3.推挽和開漏輸出

● 施密特觸發(fā)輸入被激活

● 弱上拉和下拉電阻被禁止

● 出現(xiàn)在I/O腳上的數(shù)據(jù)在每個APB2時鐘被采樣到輸入數(shù)據(jù)寄存器

● 在開漏模式時,對輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)

● 在推挽式模式時,對輸出數(shù)據(jù)寄存器的讀訪問得到最后一次寫的值

除了模擬輸入的這種模式會關(guān)閉數(shù)字輸入功能其他七種模式,都可以通過輸入寄存器讀取I/O狀態(tài),例:在模擬I2C實驗中把GPIO的工作模式配置為開漏輸出時同時也可以讀取引腳電平狀態(tài),現(xiàn)在不知道不要緊后面會詳細講解

在輸出模式中,推挽模式時雙 MOS 管以輪流方式工作,輸出數(shù)據(jù)寄存器 GPIOx_ODR可控制 I/O 輸出高低電平。開漏模式時,只有 N-MOS 管工作,輸出數(shù)據(jù)寄存器可控制 I/O輸出高阻態(tài)或低電平。

1.推挽輸出

0cfccb52-90a2-11ef-a511-92fbcf53809c.png

當輸出寄存器輸出高電平,則引腳也輸出高電平

0d211a2a-90a2-11ef-a511-92fbcf53809c.png

當輸出寄存器輸出低電平,則引腳也輸出低電平

0d51cf8a-90a2-11ef-a511-92fbcf53809c.png

2.開漏輸出

當輸出寄存器輸出高電平,則引腳輸出高阻態(tài)

0d8fd0dc-90a2-11ef-a511-92fbcf53809c.png

當輸出寄存器輸出低電平,則引腳輸出低電平

0dbbab6c-90a2-11ef-a511-92fbcf53809c.png

4.復(fù)用功能推挽開漏輸出

復(fù)用功能模式中,輸出使能,輸出速度可配置,可工作在開漏及推挽模式, 但是輸出信號源于其它外設(shè)

輸出數(shù)據(jù)寄存器 GPIOx_ODR 無效;輸入可用,通過輸入數(shù)據(jù)寄存器可獲取 I/O 實際狀態(tài),但一般直接用外設(shè)的寄存器來獲取該數(shù)據(jù)信號

這里以串口的發(fā)送TX和接收RX引腳為例

串口的發(fā)送引腳TX

0dff6adc-90a2-11ef-a511-92fbcf53809c.png

串口的接收引腳RX

0e2d0a32-90a2-11ef-a511-92fbcf53809c.png

這里串口外設(shè)不知道是什么不要緊,以后會細講只要指到復(fù)用功能的推挽與開漏輸出與普通的推挽與開漏輸出只是輸出的寄存器換成外設(shè)的寄存器

四.GPIO的寄存器

通過對 GPIO 寄存器寫入不同的參數(shù),就可以改變 GPIO 的工作模式,要了解具體寄存器時一定要查閱《STM32F10X-中文參考手冊》中對應(yīng)外設(shè)的寄存器說明。

端口配置低寄存器

0e57e374-90a2-11ef-a511-92fbcf53809c.png

在 GPIO 外設(shè)中,控制端口高低控制寄存器 CRH 和 CRL 可以配置每個 GPIO 的工作模式和工作的速度,每 4 個位控制一個 IO,CRH 控制端口的高八位,CRL 控制端口的低 8 位,具體的看 CRH 和 CRL 的寄存器描述

端口配置低寄存器

0ea6bbc0-90a2-11ef-a511-92fbcf53809c.png

端口輸出寄存器

0edab6d2-90a2-11ef-a511-92fbcf53809c.png

端口位設(shè)置/清除寄存器

0f134b6e-90a2-11ef-a511-92fbcf53809c.png

端口位清除寄存器

0f48e562-90a2-11ef-a511-92fbcf53809c.png

端口位清除寄存器

0f8c5a7c-90a2-11ef-a511-92fbcf53809c.png

總結(jié)

大家一定要把八種GPIO的模式都弄清楚原理,為后面學(xué)習打下堅實的基礎(chǔ),本文就到這里。

來源:https://blog.csdn.net/k666499436/article/details/123845466

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

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    355981
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    964

    瀏覽量

    32077
  • 引腳
    +關(guān)注

    關(guān)注

    16

    文章

    1196

    瀏覽量

    50476
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1204

    瀏覽量

    52091

原文標題:拒絕枯燥繁瑣!詳解STM32-GPIO端口的八種工作模式 這次真的學(xué)會了

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【轉(zhuǎn)載】STM32GPIO工作模式區(qū)別

    在Cortex-M3里,對于GPIO的配置種類有8:(1)GPIO_Mode_AIN 模擬輸入 (2)GPIO_Mode_IN_FLOATING 浮空輸入(3)
    發(fā)表于 02-05 14:55

    STM32CubeMX-GPIO工作模式 精選資料分享

    STM32IO口的工作模式:1)、GPIO_Mode_IN_FLOATING:浮空輸入2)、
    發(fā)表于 07-22 08:36

    GPIO工作模式介紹

    一、GPIO介紹GPIO:就是一個引腳作為輸入或者輸出。GPIO工作
    發(fā)表于 01-24 06:52

    了解STM32輸出模式

    ? 在官方庫文件stm32f10x_gpio.h中對I/O口模式使用枚舉定義模式:typedef enum{
    發(fā)表于 02-28 06:54

    概述STM32GPIO的8工作模式

    概述STM32GPIO的8工作模式
    發(fā)表于 07-06 17:35 ?26次下載
    概述<b class='flag-5'>STM32</b>中<b class='flag-5'>GPIO</b>的8<b class='flag-5'>種</b><b class='flag-5'>工作</b><b class='flag-5'>模式</b>

    ST MCU_GPIO工作模式詳解。

    補充:N、P型的區(qū)別,就是一個為正電壓啟動(NMOS),一個為負電壓啟動(PMOS)GPIO工作模式詳解浮空輸入_IN_FLOATIN
    發(fā)表于 10-28 20:51 ?13次下載
    ST MCU_<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>詳解。

    STM32CubeMX-GPIO工作模式

    STM32IO口的工作模式:1)、GPIO_Mode_IN_FLOATING:浮空輸入2)、
    發(fā)表于 11-25 13:36 ?10次下載
    <b class='flag-5'>STM32CubeMX-GPIO</b>的<b class='flag-5'>八</b><b class='flag-5'>種</b><b class='flag-5'>工作</b><b class='flag-5'>模式</b>

    STM32STM32F4 GPIO模式工作原理詳解

    STM32STM32F4 GPIO模式工作
    發(fā)表于 11-26 17:06 ?11次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>STM32</b>F4 <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>原理詳解

    STM32的8GPIO輸入輸出模式

    STM32的8GPIO輸入輸出模式參考文章“STM32的8
    發(fā)表于 11-26 17:06 ?16次下載
    <b class='flag-5'>STM32</b>的8<b class='flag-5'>種</b><b class='flag-5'>GPIO</b>輸入輸出<b class='flag-5'>模式</b>

    GPIO的8工作模式詳細介紹!

    我們在用STM32這顆MCU的時候,用的最多的也是最基礎(chǔ)的應(yīng)該就是GPIO外設(shè)了,而在STM32的HAL庫中GPIO有8
    發(fā)表于 11-30 13:36 ?9次下載
    <b class='flag-5'>GPIO</b>的8<b class='flag-5'>種</b><b class='flag-5'>工作</b><b class='flag-5'>模式</b>詳細介紹!

    STM32STM32F4 GPIO模式工作原理詳解

    STM32STM32F4 GPIO模式工作
    發(fā)表于 12-04 14:51 ?9次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>STM32</b>F4 <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>原理詳解

    HAL庫的GPIO工作模式

    眾所周知,STM32GPIO工作模式,但是打開HAL庫發(fā)現(xiàn),有12中可以供自己設(shè)置。先
    發(fā)表于 12-05 13:06 ?8次下載
    HAL庫的<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工作模式

    GPIO是通用輸入/輸出端口的簡稱,GPIO的引腳與外部設(shè)備連接,可實現(xiàn)與外部通訊、控制外部硬件或者采集外部硬件數(shù)據(jù)的功能。GPIO的8輸入模式
    的頭像 發(fā)表于 07-02 16:38 ?1w次閱讀
    <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>

    STM32的8GPIO模式理解

    最近在看數(shù)據(jù)手冊的時候,發(fā)現(xiàn)STM32GPIO輸入輸出模式的配置種類有8之多
    的頭像 發(fā)表于 08-04 14:53 ?938次閱讀

    STM32 GPIO模式工作原理詳解

    圍設(shè)備(像控制led亮滅,按鍵控制,軟件模擬IIC等)直觀又簡單的控制。 GPIO的8模式 ?1. 輸入模式: ??(1)上拉輸入模式
    的頭像 發(fā)表于 07-22 09:32 ?6376次閱讀
    <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>原理詳解