娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

stm32學(xué)習(xí)筆記之GPIO功能框圖分析

發(fā)布者:Lihua1314520最新更新時(shí)間:2024-12-20 來(lái)源: jianshu關(guān)鍵字:stm32  GPIO  功能框圖 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

  GPIO 是通用輸入輸出端口的簡(jiǎn)稱,簡(jiǎn)單來(lái)說(shuō)就是STM32 可控制的引腳,STM32 芯片的GPIO

引腳與外部設(shè)備連接起來(lái),從而實(shí)現(xiàn)與外部通訊、控制以及數(shù)據(jù)采集的功能。STM32 芯片的GPIO被分成很多組,每組有16

個(gè)引腳,如型號(hào)為STM32F103VET6 型號(hào)的芯片有GPIOA、GPIOB、GPIOC 至GPIOE 共5 組GPIO,芯片一共100

個(gè)引腳,其中GPIO就占了一大部分,所有的GPIO引腳都有基本的輸入輸出功能。

  最基本的輸出功能是由STM32 控制引腳輸出高、低電平,實(shí)現(xiàn)開(kāi)關(guān)控制,如把GPIO引腳接入到LED 燈,那就可以控制LED

燈的亮滅,引腳接入到繼電器或三極管,那就可以通過(guò)繼電器或三極管控制外部大功率電路的通斷。最基本的輸入功能是檢測(cè)外部輸入電平,如把GPIO

引腳連接到按鍵,通過(guò)電平高低區(qū)分按鍵是否被按下。

  GPIO 框圖剖析

  通過(guò)GPIO 硬件結(jié)構(gòu)框圖,就可以從整體上深入了解GPIO 外設(shè)及它的各種應(yīng)用模式。該圖從最右端看起,最右端就是代表STM32 芯片引出的GPIO

引腳,其余部件都位于芯片內(nèi)部。

  基本結(jié)構(gòu)分析

  下面我們按圖中的編號(hào)對(duì)GPIO端口的結(jié)構(gòu)部件進(jìn)行說(shuō)明。

  1. 保護(hù)二極管及上、下拉電阻

  引腳的兩個(gè)保護(hù)二級(jí)管可以防止引腳外部過(guò)高或過(guò)低的電壓輸入,當(dāng)引腳電壓高于VDD 時(shí),上方的二極管導(dǎo)通,當(dāng)引腳電壓低于VSS

時(shí),下方的二極管導(dǎo)通,防止不正常電壓引入芯片導(dǎo)致芯片燒毀。盡管有這樣的保護(hù),并不意味著STM32

的引腳能直接外接大功率驅(qū)動(dòng)器件,如直接驅(qū)動(dòng)電機(jī),強(qiáng)制驅(qū)動(dòng)要么電機(jī)不轉(zhuǎn),要么導(dǎo)致芯片燒壞,必須要加大功率及隔離電路驅(qū)動(dòng)。

  2. P-MOS 管和N-MOS 管

  GPIO 引腳線路經(jīng)過(guò)兩個(gè)保護(hù)二極管后,向上流向“輸入模式”結(jié)構(gòu),向下流向“輸出模式”結(jié)構(gòu)。先看輸出模式部分,線路經(jīng)過(guò)一個(gè)由P-MOS 和N-MOS

管組成的單元電路。這個(gè)結(jié)構(gòu)使GPIO具有了“推挽輸出”和“開(kāi)漏輸出”兩種模式。

  所謂的推挽輸出模式,是根據(jù)這兩個(gè)MOS 管的工作方式來(lái)命名的。在該結(jié)構(gòu)中輸入高電平時(shí),經(jīng)過(guò)反向后,上方的P-MOS 導(dǎo)通,下方的N-MOS

關(guān)閉,對(duì)外輸出高電平;而在該結(jié)構(gòu)中輸入低電平時(shí),經(jīng)過(guò)反向后,N-MOS 管導(dǎo)通,P-MOS 關(guān)閉,對(duì)外輸出低電平。當(dāng)引腳高低電平切換時(shí),兩個(gè)管子輪流導(dǎo)通,P

管負(fù)責(zé)灌電流,N 管負(fù)責(zé)拉電流,使其負(fù)載能力和開(kāi)關(guān)速度都比普通的方式有很大的提高。推挽輸出的低電平為0

伏,高電平為3.3伏,它是推挽輸出模式時(shí)的等效電路。

  而在開(kāi)漏輸出模式時(shí),上方的P-MOS 管完全不工作。如果我們控制輸出為0,低電平,則P-MOS 管關(guān)閉,N-MOS 管導(dǎo)通,使輸出接地,若控制輸出為1

(它無(wú)法直接輸出高電平)時(shí),則P-MOS 管和N-MOS

管都關(guān)閉,所以引腳既不輸出高電平,也不輸出低電平,為高阻態(tài)。為正常使用時(shí)必須外部接上拉電阻。它具有“線與”特性,也就是說(shuō),若有很多個(gè)開(kāi)漏模式引腳連接到一起時(shí),只有當(dāng)所有引腳都輸出高阻態(tài),才由上拉電阻提供高電平,此高電平的電壓為外部上拉電阻所接的電源的電壓。若其中一個(gè)引腳為低電平,那線路就相當(dāng)于短路接地,使得整條線路都為低電平,0

伏。

  推挽輸出模式一般應(yīng)用在輸出電平為0 和3.3 伏而且需要高速切換開(kāi)關(guān)狀態(tài)的場(chǎng)合。在STM32

的應(yīng)用中,除了必須用開(kāi)漏模式的場(chǎng)合,我們都習(xí)慣使用推挽輸出模式。

  開(kāi)漏輸出一般應(yīng)用在I2C、SMBUS 通訊等需要“線與”功能的總線電路中。除此之外,還用在電平不匹配的場(chǎng)合,如需要輸出5

伏的高電平,就可以在外部接一個(gè)上拉電阻,上拉電源為5 伏,并且把GPIO 設(shè)置為開(kāi)漏模式,當(dāng)輸出高阻態(tài)時(shí),由上拉電阻和電源向外輸出5 伏的電平。

  3. 輸出數(shù)據(jù)寄存器

  前面提到的雙MOS 管結(jié)構(gòu)電路的輸入信號(hào), 是由GPIO“

輸出數(shù)據(jù)寄存器GPIOx_ODR”提供的,因此我們通過(guò)修改輸出數(shù)據(jù)寄存器的值就可以修改GPIO

引腳的輸出電平。而“置位/復(fù)位寄存器GPIOx_BSRR”可以通過(guò)修改輸出數(shù)據(jù)寄存器的值從而影響電路的輸出。

  4. 復(fù)用功能輸出

  “復(fù)用功能輸出”中的“復(fù)用”是指STM32 的其它片上外設(shè)對(duì)GPIO 引腳進(jìn)行控制,此時(shí)GPIO

引腳用作該外設(shè)功能的一部分,算是第二用途。從其它外設(shè)引出來(lái)的“復(fù)用功能輸出信號(hào)”與GPIO本身的數(shù)據(jù)據(jù)寄存器都連接到雙MOS

管結(jié)構(gòu)的輸入中,通過(guò)圖中的梯形結(jié)構(gòu)作為開(kāi)關(guān)切換選擇。

  例如我們使用USART 串口通訊時(shí),需要用到某個(gè)GPIO引腳作為通訊發(fā)送引腳,這個(gè)時(shí)候就可以把該GPIO引腳配置成USART

串口復(fù)用功能,由串口外設(shè)控制該引腳,發(fā)送數(shù)據(jù)。

  1 // GPIOB 16 個(gè)IO 全部輸出 0XFF

  2 GPIOB->ODR = 0XFF;

  5. 輸入數(shù)據(jù)寄存器

  看GPIO 結(jié)構(gòu)框圖的上半部分,GPIO

引腳經(jīng)過(guò)內(nèi)部的上、下拉電阻,可以配置成上/下拉輸入,然后再連接到施密特觸發(fā)器,信號(hào)經(jīng)過(guò)觸發(fā)器后,模擬信號(hào)轉(zhuǎn)化為0、1

數(shù)字信號(hào),然后存儲(chǔ)在“輸入數(shù)據(jù)寄存器GPIOx_IDR”中,通過(guò)讀取該寄存器就可以了解GPIO引腳的電平狀態(tài)。

  1 // 讀取GPIOB 端口的16 位數(shù)據(jù)值2uint16_ttemp;3 temp = GPIOB->IDR;

  6. 復(fù)用功能輸入

  與“復(fù)用功能輸出”模式類似,在“復(fù)用功能輸入模式”時(shí),GPIO引腳的信號(hào)傳輸?shù)?p>  STM32 其它片上外設(shè),由該外設(shè)讀取引腳狀態(tài)。

  同樣,如我們使用USART 串口通訊時(shí),需要用到某個(gè)GPIO引腳作為通訊接收引腳,這個(gè)時(shí)候就可以把該GPIO 引腳配置成USART

串口復(fù)用功能,使USART 可以通過(guò)該通訊引腳的接收遠(yuǎn)端數(shù)據(jù)。

  7. 模擬輸入輸出

  當(dāng)GPIO 引腳用于ADC 采集電壓的輸入通道時(shí),用作“模擬輸入”功能,此時(shí)信號(hào)是不經(jīng)過(guò)施密特觸發(fā)器的,因?yàn)榻?jīng)過(guò)施密特觸發(fā)器后信號(hào)只有0、1

兩種狀態(tài),所以ADC 外設(shè)要采集到原始的模擬信號(hào),信號(hào)源輸入必須在施密特觸發(fā)器之前。類似地,當(dāng)GPIO 引腳用于DAC

作為模擬電壓輸出通道時(shí),此時(shí)作為“模擬輸出”功能,DAC 的模擬信號(hào)輸出就不經(jīng)過(guò)雙MOS 管結(jié)構(gòu),模擬信號(hào)直接輸出到引腳。

  GPIO 工作模式

  總結(jié)一下,由GPIO的結(jié)構(gòu)決定了GPIO可以配置成以下模式:

  (在固件庫(kù)中,GPIO總共有8 種細(xì)分的工作模式,大致歸類為以下三類)

  1. 輸入模式(模擬/浮空/上拉/下拉)

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

狀態(tài)。其中輸入模式,可設(shè)置為上拉、下拉、浮空和模擬輸入四種。上拉和下拉輸入很好理解,默認(rèn)的電平由上拉或者下拉決定。浮空輸入的電平是不確定的,完全由外部的輸入決定,一般接按鍵的時(shí)候用的是這個(gè)模式。模擬輸入則用于ADC

采集。

  2. 輸出模式(推挽/開(kāi)漏)

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

管工作,輸出數(shù)據(jù)寄存器可控制I/O輸出高阻態(tài)或低電平。輸出速度可配置,有2MHz10MHz50MHz 的選項(xiàng)。此處的輸出速度即I/O

支持的高低電平狀態(tài)最高切換頻率,支持的頻率越高,功耗越大,如果功耗要求不嚴(yán)格,把速度設(shè)置成最大即可。

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

  3. 復(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)。

  通過(guò)對(duì)GPIO 寄存器寫入不同的參數(shù),就可以改變GPIO

的工作模式,再?gòu)?qiáng)調(diào)一下,要了解具體寄存器時(shí)一定要查閱《STM32F10X-中文參考手冊(cè)》中對(duì)應(yīng)外設(shè)的寄存器說(shuō)明。在GPIO

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

控制端口的低8 位,具體的看CRH 和CRL 的寄存器描述。

關(guān)鍵字:stm32  GPIO  功能框圖 引用地址:stm32學(xué)習(xí)筆記之GPIO功能框圖分析

上一篇:《嵌入式-STM32開(kāi)發(fā)指南》第二部分 基礎(chǔ)篇 - 第7章DMA(HAL庫(kù))
下一篇:stm32零基礎(chǔ)入門,應(yīng)學(xué)習(xí)那些知識(shí)

推薦閱讀最新更新時(shí)間:2025-06-07 22:21

1+X 傳感網(wǎng)中級(jí)備考STM32:HAL庫(kù)之GPIO函數(shù)功能介紹
1.函數(shù)存放路徑 HAL庫(kù)的GPIO函數(shù),存放路徑如圖1所示:路徑Driver/STM32F1xx_HAL_Driver/stm32f1xx_hal_gpio.c,其中一級(jí)文件夾STM32F1xx_HAL_Driver存放的是ST公司提供的HAL庫(kù)頭文件和源文件,也就是所有底層硬件抽象層API接口函數(shù)的聲明和定義;之前大家學(xué)習(xí)51單片機(jī)都是直接對(duì)寄存器進(jìn)行配置,而對(duì)于STM32數(shù)百個(gè)寄存器直接配置將非常繁瑣;HAL庫(kù)提供的這一整套API方便開(kāi)發(fā)者直接調(diào)用函數(shù),不需要去知道操作的哪個(gè)寄存器; 但這不是說(shuō)寄存器相關(guān)原理就完全不用學(xué)習(xí)了,相反,在STM32的學(xué)習(xí)過(guò)程中,大家既要知道函數(shù)的功能,也要了解各個(gè)外設(shè)的硬件運(yùn)行機(jī)制;這樣HAL庫(kù)
[單片機(jī)]
STM32CUBEMX開(kāi)發(fā)GD32F303(4)----GPIO輸出模式,速率測(cè)試、開(kāi)漏和輸出說(shuō)明
概述 以STM32CUBEMX創(chuàng)建STM32F103工程,同時(shí)移植在GD32F303中,同時(shí)通過(guò)GD32303C_START開(kāi)發(fā)板內(nèi)進(jìn)行驗(yàn)證。 需要樣片的可以加Qun申請(qǐng):615061293。 硬件準(zhǔn)備 這里準(zhǔn)備了2塊開(kāi)發(fā)板進(jìn)行驗(yàn)證,分別是GD32303C_START開(kāi)發(fā)板。 開(kāi)發(fā)板管腳配置 在GD32303C_START中的LED管腳配置如下所示。 不同速率對(duì)應(yīng)的波形 以PC3為例,在推挽輸出無(wú)上下拉情況下,輸出速率主要有4種,一般的低端MCU只有3種,沒(méi)有Very High。 下面是ST的配置圖。 在固件庫(kù)中,定義如下所示。 LOW速率 Medium速率 High速率 Very High速率 可以
[單片機(jī)]
STM32CUBEMX開(kāi)發(fā)GD32F303(4)----<font color='red'>GPIO</font>輸出模式,速率測(cè)試、開(kāi)漏和輸出說(shuō)明
STM32G474 | 基于STM32Cubemx HAL 庫(kù)實(shí)現(xiàn) DMA 驅(qū)動(dòng) GPIO 高速翻轉(zhuǎn)
目前STM32家族中的很多系列,比如STM32G0/STM32G4/STM32L4+/STM32H7等都內(nèi)置了DMAMUX模塊。有了它一方面使得DMA請(qǐng)求與DMA控制器之間的映射關(guān)系更為靈活方便,另一方面也大大拓展了DMA請(qǐng)求事件,不再局限于外設(shè)事件,比方基于GPIO的外部中斷事件、或者DMA事件本身來(lái)觸發(fā)DMA傳輸。 關(guān)于DMAMUX的基本結(jié)構(gòu)及功能原理,這里就不說(shuō)了,這里重點(diǎn)介紹基于STM32G4芯片,使用GPIO的外部中斷事件觸發(fā)DMA傳輸,通過(guò)DMA將內(nèi)存數(shù)據(jù)傳輸?shù)紾PIO端口的實(shí)現(xiàn)過(guò)程,包括基于CubeMx的配置、關(guān)鍵代碼及注意點(diǎn)。 本演示例程基于STM32G4系列的Nucleo板進(jìn)行,按鍵【PC.13】用來(lái)觸發(fā)
[單片機(jī)]
STM32G474 | 基于STM32Cubemx HAL 庫(kù)實(shí)現(xiàn) DMA 驅(qū)動(dòng) <font color='red'>GPIO</font> 高速翻轉(zhuǎn)
STM32F072RB 實(shí)作筆記(四)- GPIO的基礎(chǔ)設(shè)定技法, 一個(gè)LED點(diǎn)亮程式
編寫第一個(gè)程式 修改1:20210531 第一個(gè)步驟一定是寫一個(gè)簡(jiǎn)單的程式 由 data BUS 輸出 Hi/Low 控制 LED 亮滅,來(lái)確定這個(gè)開(kāi)發(fā)板是可以用的,確認(rèn)是可以被控制的。不過(guò),ARM 的設(shè)定有一些復(fù)雜,需要一邊看參考手冊(cè),一邊做設(shè)定。下邊列了STM32 的網(wǎng)站,除了下載參考手冊(cè)以外,也建議注冊(cè)一下,然后,在上面找找有沒(méi)有其他好貨可以下載的!! STM32F072RB 規(guī)格資料 Mainstream ARM Cortex-M0 USB line MCU with 128 Kbytes Flash, 48 MHz CPU, USB, CAN and CEC functions. STM32F072RB Re
[單片機(jī)]
STM32F072RB 實(shí)作筆記(四)- <font color='red'>GPIO</font>的基礎(chǔ)設(shè)定技法, 一個(gè)LED點(diǎn)亮程式
MSP430F5529 DriverLib 庫(kù)函數(shù)學(xué)習(xí)筆記(二)GPIO
平臺(tái):Code Composer Studio 10.3.1 MSP430F5529 LaunchPad? Development Kit (MSP?EXP430F5529LP) 硬知識(shí) 一、MSP430單片機(jī)端口概述 通用I/O端口是MSP430單片機(jī)最重要也是最常用的外設(shè)模塊。通用I/O端口不僅可以直接用于輸入/輸出,而且可以為MSP430單片機(jī)應(yīng)用系統(tǒng)提供必要的邏輯控制信號(hào)。 MSP430F5xx/6xx系列單片機(jī)最多可以提供12個(gè)通用I/O端口(P1~P11和PJ),大部分端口有8個(gè)引腳,少數(shù)端口引腳數(shù)少于8個(gè)。每個(gè)I/O引腳都可以被獨(dú)立地設(shè)置為輸入或者輸出引腳,并且每個(gè)I/O引腳都可以被獨(dú)立地讀取或者
[單片機(jī)]
MSP430F5529 DriverLib 庫(kù)函數(shù)學(xué)習(xí)筆記(二)<font color='red'>GPIO</font>
STM32F4 GPIO八種模式及工作原理詳解
1 GPIO簡(jiǎn)介 GPIO,即通用I/O(輸入/輸出)端口,是STM32可控制的引腳。STM32芯片的GPIO引腳與外部設(shè)備連接起來(lái),可實(shí)現(xiàn)與外部通訊、控制外部硬件或者采集外部硬件數(shù)據(jù)的功能。 STM32F407有7組IO。分別為GPIOA~GPIOG,每組IO有16個(gè)IO口,共有112個(gè)IO口 通常稱為 PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x為0-15。 并且F4系列是基于Cortex-M4內(nèi)核 GPIO的復(fù)用: STM32F4 有很多的內(nèi)置外設(shè),這些外設(shè)的外部引腳都是與 GPIO 共用的。也就是說(shuō),一個(gè)引腳可以有很多作用,但是默認(rèn)為IO口,如果想使用一個(gè) GPIO內(nèi)置外設(shè)的功能引腳,就需要
[單片機(jī)]
STM32F4 <font color='red'>GPIO</font>八種模式及工作原理詳解
STM8S 固件庫(kù)GPIO設(shè)置問(wèn)題
ST對(duì)STM8S系列都有提供固件庫(kù),而不同的版本自然存在一些不同,版本也一直從V1.0.0升級(jí)到目前的V1.1.1。 環(huán)境: FWLIB V1.0.1版本,采用STM8SF103 在使用GPIO庫(kù)時(shí),一個(gè)偶然發(fā)現(xiàn)stm8s_gpio.h中的宏定義是存在問(wèn)題的。 代碼定義如下: ****************************************************************************** * @file stm8s_gpio.h * @brief This file contains all functions prototype and macros for the
[單片機(jī)]
STM8S 固件庫(kù)<font color='red'>GPIO</font>設(shè)置問(wèn)題
GPIO的操作
一、對(duì)IO的單個(gè)引腳操作,采用宏定義較為方便 (1)對(duì)單個(gè)IO的單個(gè)引腳基本操作,下面采用宏定義的例子 #define DS18B20_BIT GPIO_Pin_2 //宏定義GPIO_Pin_2引腳新名為DS18B20_BIT,也可以為其他名稱 #define DS18B20_PORT GPIOC ////宏定義GPIOC端口新名為DS18B20_PORT,也可以為其他名稱 #define READ_DS18B20() GPIO_ReadInputDataBit(DS18B20_PORT, DS18B20_BIT)//讀取端口DS18B20_PORT的DS18B20_BIT位狀態(tài) GPIO_ReadInput
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 丹东市| 朝阳县| 大兴区| 连江县| 呼图壁县| 林甸县| 富源县| 巴林右旗| 昌江| 博兴县| 和硕县| 河津市| 鹤庆县| 军事| 友谊县| 浙江省| 左权县| 吉林市| 太保市| 江达县| 西安市| 岐山县| 长泰县| 全南县| 青阳县| 瓦房店市| 桃园市| 留坝县| 梁河县| 九江县| 新乐市| 哈巴河县| 龙州县| 禹城市| 新昌县| 黎城县| 香港| 昌都县| 潮州市| 莱西市| 宁陕县|