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

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

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

STM32 GPIO的八種工作模式

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

一.GPIO的簡(jiǎn)介

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

1.引腳全是GPIO嘛?

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

STM32F103VET6引腳圖

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

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

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

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

2.GPIO的輸入輸出模式

GPIO可配置8種模式

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

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

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

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

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

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

二.GPIO功能框圖

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

保護(hù)二極管

芯片的引腳電平0~3.3V,部分引腳可以5V,引腳的兩個(gè)保護(hù)二級(jí)管可以防止引腳外部過(guò)高或過(guò)低的電壓輸入

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

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

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

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

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

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

施密特觸發(fā)器

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

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

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

三.GPIO的8種工作模式

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

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

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

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

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

上拉輸入:給一個(gè)默認(rèn)的高電平也就是說(shuō)當(dāng)沒(méi)有外部輸入時(shí)默認(rèn)輸入高電平

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

下拉輸入:給一個(gè)默認(rèn)的低電平也就是說(shuō)當(dāng)沒(méi)有外部輸入時(shí)默認(rèn)輸入低電平

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

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

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

2.模擬輸入

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

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

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

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

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

3.推挽和開(kāi)漏輸出

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

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

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

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

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

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

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

1.推挽輸出

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

當(dāng)輸出寄存器輸出高電平,則引腳也輸出高電平

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

當(dāng)輸出寄存器輸出低電平,則引腳也輸出低電平

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

2.開(kāi)漏輸出

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

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

當(dāng)輸出寄存器輸出低電平,則引腳輸出低電平

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

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

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

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

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

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

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

串口的接收引腳RX

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

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

四.GPIO的寄存器

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

端口配置低寄存器

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

在 GPIO 外設(shè)中,控制端口高低控制寄存器 CRH 和 CRL 可以配置每個(gè) GPIO 的工作模式和工作的速度,每 4 個(gè)位控制一個(gè) 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é)習(xí)打下堅(jiān)實(shí)的基礎(chǔ),本文就到這里。

來(lái)源:https://blog.csdn.net/k666499436/article/details/123845466

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

    關(guān)注

    2264

    文章

    10853

    瀏覽量

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

    關(guān)注

    4

    文章

    944

    瀏覽量

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

    關(guān)注

    16

    文章

    1172

    瀏覽量

    50129
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1188

    瀏覽量

    51823

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    在Cortex-M3里,對(duì)于GPIO的配置種類(lèi)有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:就是一個(gè)引腳作為輸入或者輸出。GPIO工作
    發(fā)表于 01-24 06:52

    了解STM32輸出模式

    ? 在官方庫(kù)文件stm32f10x_gpio.h中對(duì)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工作模式詳解。

    補(bǔ)充:N、P型的區(qū)別,就是一個(gè)為正電壓?jiǎn)?dòng)(NMOS),一個(gè)為負(fù)電壓?jiǎn)?dòng)(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工作模式詳細(xì)介紹!

    我們?cè)谟?b class='flag-5'>STM32這顆MCU的時(shí)候,用的最多的也是最基礎(chǔ)的應(yīng)該就是GPIO外設(shè)了,而在STM32的HAL庫(kù)中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>詳細(xì)介紹!

    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庫(kù)的GPIO工作模式

    眾所周知,STM32GPIO工作模式,但是打開(kāi)HAL庫(kù)發(fā)現(xiàn),有12中可以供自己設(shè)置。先
    發(fā)表于 12-05 13:06 ?8次下載
    HAL庫(kù)的<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是通用輸入/輸出端口的簡(jiǎn)稱(chēng),GPIO的引腳與外部設(shè)備連接,可實(shí)現(xiàn)與外部通訊、控制外部硬件或者采集外部硬件數(shù)據(jù)的功能。GPIO的8輸入模式
    的頭像 發(fā)表于 07-02 16:38 ?9495次閱讀
    <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ù)手冊(cè)的時(shí)候,發(fā)現(xiàn)STM32GPIO輸入輸出模式的配置種類(lèi)有8之多
    的頭像 發(fā)表于 08-04 14:53 ?902次閱讀

    STM32 GPIO模式工作原理詳解

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