1. 操作GPIO的意義
我們在學習單片機的時候,一般都是從操作GPIO開始的,很多單片機學習的教程第一課就是點亮發光二極管或者是流水燈。所以對于初學者而言,及時掌握單片機的GPIO口是一件具有里程碑意義的事情。今天以STM32單片機為例,簡單看一下GPIO口。
2. STM32單片機GPIO的配置模式
STM32單片機的GPIO最有8組,分別為A,B,C,D,E,每組有0-15共16個。可以配置為8中模式:

3. 相關寄存器
配置GPIO相關的寄存器有如下幾個:
1.端口配置低寄存器:(GPIOx_CRL) (x=A..E)
2.端口配置高寄存器:(GPIOx_CRH) (x=A..E)
3.端口輸入數據寄存器:(GPIOx_IDR) (x=A..E)
4.端口輸出數據寄存器:(GPIOx_ODR) (x=A..E)
其余未完全列出... ...

GPIOx_CRL用來配置0-7腳的輸入輸出模式,GPIOx_CRH用來配置8-15腳的輸入輸出模式。

GPIOx_IDR是GPIO的輸入寄存器,即用來檢測GPIO當前的狀態。其讀取方式如下(以PA1為例):
GPIOA->DIR&(1<<1)

GPIOx_ODR是GPIO的輸出寄存器,即用來置位或者清零GPIO。其操作方式如下(以PA1為例):
PA1 = 1:GPIOA->OIR |= (1<<1) ;
PA1 = 0:GPIOA->OIR &=~(1<<1) ;
4. GPIO口的操作步驟
任何事情都是有套路的,操作GPIO也是一樣:
打開GPIO時鐘;
設置為輸出或者輸入(即設置方向);
開出或者讀入;
關鍵字:STM32 單片機 GPIO 配置模式
引用地址:
STM32單片機GPIO的配置模式
推薦閱讀最新更新時間:2025-06-08 12:19
stm32-GPIO 模式配置如何?
作為嵌入式系統的一種重要硬件平臺,STM32 微控制器在許多應用場合都有廣泛的應用。GPIO(General Purpose Input Output)即通用輸入輸出口,是 STM32 微控制器中非常重要的一個外設模塊。在 STM32 的開發中,通過 GPIO 模式配置,可以實現多種不同外設的輸入輸出功能,如 LED 燈、按鍵、電機等。本文就來詳細介紹 STM32 的 GPIO 模式配置。 首先,STM32 的 GPIO 可以分為四個部分,即 A、B、C、D 四個端口,每個端口包括多個 GPIO 引腳。我們可以根據實際需要,選擇相應的 GPIO 引腳來實現輸入輸出的功能。 其次,在進行 GPIO 的模式配置之前,我們需要了
[單片機]
STM32學習筆記——GPIO工作原理(八種工作模式)
??STM32F103RCT6一共有4組IO口,一共有16*3+3=51個IO口 ?? GPIOA0~A15 ??GPIOB0~B15 ??GPIOC0~C15 ??GPIOD0~D2 一、GPIO 功能描述 ??每個GPI/O端口有兩個32位配置寄存器(GPIOx_CRL,GPIOx_CRH),兩個32位數據寄存器(GPIOx_IDR和GPIOx_ODR),一個32位置位/復位寄存器(GPIOx_BSRR),一個16位復位寄存器(GPIOx_BRR)和一個32位鎖定寄存器(GPIOx_LCKR)。 STM32 的 IO 口可以由軟件配置成如下 8 種模式: 1、輸入浮空 2、輸入上拉 3、輸入下拉 4、模擬輸入 5、開漏
[單片機]
STM32學習之GPIO與SYSTICK使用+軟件仿真
簡介:小弟也是剛剛學習STM32,有什么不懂的還望大師們指點。以下程序是利用SYSTICK作為延時程序使GPIOA_Pin0產生1S的電壓變化。初學,也就會這些了,拿出來與大家分享一下。 #include stm32f10x_conf.h void delay_ms(u32 ms); 聲明延時函數 void GPIO_Config(void); 聲明GPIO配置函數 int main(void) 主程序 { SystemInit(); 初始化系統時鐘默認72MHZ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); 使能GPIOA時鐘 GPIO_Config(); 調用GP
[單片機]
STM32 嵌入式學習入門(2)——STM32的GPIO介紹
GPIO:General Purpose Input Output ,即通用輸入/輸出,簡稱為GPIO。 GPIO應該是學習單片機、學習嵌入式、學習STM32的第一個知識點了。在介紹GPIO相關的內容前,這里先總得說一下自己對GPIO的理解。對于初學者,可以把GPIO的作用想象成C語言里面的做輸入輸出的函數(scanf(); printf(); gets(); puts();等等),在C語言里面scanf()和printf()這兩個函數是做輸入輸出的,對于幾乎所有的C語言程序,都可以看成是用輸入函數讀取了一些輸入,然后進行程序的邏輯處理,最后通過輸出函數把程序最后執行的結果顯示出來的過程。 同樣地,這可以類比到嵌入式系統上
[單片機]
STM32 GPIO應用筆記
1 STM32的輸入輸出管腳有下面8種可能的配置:(4輸入+2輸出+2復用輸出) ① 浮空輸入_IN_FLOATING ② 帶上拉輸入_IPU ③ 帶下拉輸入_IPD ④ 模擬輸入_AIN ⑤ 開漏輸出_OUT_OD ⑥ 推挽輸出_OUT_PP ⑦ 復用功能的推挽輸出_AF_PP ⑧ 復用功能的開漏輸出_AF_OD 1.1 I/O口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這個速度是指I/O口驅動電路的響應速度而不是輸出信號的速度,輸出信號的速度與程序有關(芯片內部在I/O口的輸出部分安排了多個響應速度不同的輸出驅動電
[單片機]
51單片機基礎之GPIO輸出
代碼: #include reg52.h //引用51單片機的頭文件,包含寄存器等操作 sbit LED=P2^0; //定義P2^0引腳,這屬于位操作,等下用于輸出高低電平,以便于點亮LED燈 void delay(unsigned int u16) //unsigned是無符號類型,也就是非負數,這個函數可以實現0.6秒內的延時,本質上就是讓CPU等待 { while(u16--); } void main(void) //主函數,程序都是從主函數開始執行的。 { while(1) //循環操作,一直執行程序 {
[單片機]
如何在PIC單片機的GPIO引腳上生成PWM信號
PWM信號生成是每個嵌入式工程師工具庫中的重要工具,它們非常適用于控制伺服電機位置,在轉換器/逆變器中切換少量電源電子集成電路等許多應用,甚至用于簡單的LED亮度控制。在pic 微控制器中, pwm 信號可以通過設置所需的寄存器使用比較、捕獲和 pwm (ccp) 模塊生成。 如果我們使用CCP模塊,PIC16F877A 只能在引腳RC1和RC2產生PWM信號,由此我們可能會遇到需要更多引腳來實現PWM功能的情況。例如,我想控制6個RC伺服電機,CCP模塊是不行的。于是在這種情況下,我們可以使用定時器模塊對GPIO引腳進行編程以產生PWM信號,這樣我們就可以產生盡可能多的PWM信號。還可以考慮其他硬件技術,比如使用多路復用器
[單片機]
在STM32單片機中使用SPI通信的方法
在本教程中,我們將使用 STM32F103C8 的 Blue Pill 板替換一個 Arduino 板,并將使用 SPI 總線與 Arduino 板進行通信。在這個STM32 SPI 示例中,我們將使用Arduino UNO作為 Slave,STM32F103C8 作為 Master,兩個16X2 LCD 顯示器分別連接在一起。兩個電位器還與STM32(PA0)和Arduino(A0)相連,通過改變電位器來確定主機到從機和從機到主機的發送值(0到255)。 STM32F103C8中的SPI 比較 Arduino 和 STM32F103C8 Blue Pill 板中的 SPI 總線,STM32 有2 條 SPI 總線
[單片機]