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

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

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

什么是GPIO? STM32中關(guān)于GPIO口的介紹

454398 ? 來源:博客園 ? 作者:只為一眼紅顏 ? 2020-09-25 13:48 ? 次閱讀

一、什么是GPIO?

GPIO的英文全稱是General-Purpose IO ports,也就是通用輸入輸出口。

嵌入式系統(tǒng)中,經(jīng)常需要控制許多結(jié)構(gòu)簡單的外部設(shè)備或者電路,這些設(shè)備有的需要通過CPU控制,有的需要CPU提供輸入信號。并且,許多設(shè)備或電路只要求有開/關(guān)兩種狀體就夠了,比如LED的亮與滅。對這些設(shè)備的控制,使用傳統(tǒng)的串口或者并口就顯得比較復(fù)雜,所以,在嵌入式微處理器上通常提供了一種“通用可編程I/O端口”,也就是GPIO。

一個GPIO端口至少需要兩個寄存器,一個做控制用的“通用IO端口控制寄存器”,還有一個是存放數(shù)據(jù)的“通用I/O端口數(shù)據(jù)寄存器”。數(shù)據(jù)寄存器的每一位是和GPIO的硬件引腳對應(yīng)的,而數(shù)據(jù)的傳遞方向是通過控制寄存器設(shè)置的,通過控制寄存器可以設(shè)置每一位引腳的數(shù)據(jù)流向。

二、STM32中關(guān)于GPIO口的介紹

在STM32中每個GPI/O端口有兩個32位配置寄存器(GPIOx_CRL,GPIOx_CRH),兩個32位數(shù)據(jù)寄存器(GPIOx_IDR和GPIOx_ODR),一個32位置位/復(fù)位寄存器(GPIOx_BSRR),一個16位復(fù)位寄存器(GPIOx_BRR)和一個32位鎖定寄存器(GPIOx_LCKR)。

根據(jù)數(shù)據(jù)手冊中列出的每個I/O端口的特定硬件特征, GPIO端口的每個位可以由軟件分別配置成多種模式。

─ 輸入浮空

─ 輸入上拉

─ 輸入下拉

模擬輸入

─ 開漏輸出

─ 推挽式輸出

─ 推挽式復(fù)用功能

─ 開漏復(fù)用功能

三、常用GPIO口寄存器描述

1、端口配置寄存器(GPIOx_CRL,GPIOx_CRH)

GPIOx_CRL和GPIOx_CRH分別對應(yīng)GPIO口的低8位和高8位輸入輸出口,每個寄存器的4位對應(yīng)GPIO口的一個端口的配置模式,其中4位中的低兩位代表配置為輸入還是輸出模式,記為MODEy[1:0],具體的模式配置情況如下:

00:輸入模式(復(fù)位后的狀態(tài))

01:輸出模式,最大速度10MHz

10:輸出模式,最大速度2MHz

11:輸出模式,最大速度50MHz

高兩位通常對應(yīng)于什么輸入輸出方式,記為CNFy[1:0],具體的模式配置情況如下:

在輸入模式(MODE[1:0]=00):

00:模擬輸入模式

01:浮空輸入模式(復(fù)位后的狀態(tài))

10:上拉/下拉輸入模式

11:保留

在輸出模式(MODE[1:0]>00):

00:通用推挽輸出模式

01:通用開漏輸出模式

10:復(fù)用功能推挽輸出模式

11:復(fù)用功能開漏輸出模式

2、端口輸入數(shù)據(jù)寄存器(GPIOx_IDR)

位31:16 保留,始終讀為0。

位15:0 端口輸入數(shù)據(jù),這些位為只讀并只能以字(16位)的形式讀出。讀出的值為對應(yīng)I/O口的狀態(tài)。

3、端口輸出數(shù)據(jù)寄存器(GPIOx_ODR)

位31:16 保留,始終讀為0。

位15:0 端口輸出數(shù)據(jù),這些位可讀可寫并只能以字(16位)的形式操作。

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

5、端口位清除寄存器(GPIOx_BRR)

四、一個簡單的關(guān)于寄存器的操作

MiniSTM32關(guān)于狀態(tài)指示燈的連接

由圖示可以看出DS0和DS1分別接在GPIOA8和GPIOD2上,由此可以對寄存器的操作來實現(xiàn)流水燈實驗

void LED_Init(void)
{
RCC->APB2ENR |= 1 << 2; //使能PORTA時鐘
RCC->APB2ENR |= 1 << 5; //使能PORTB時鐘
GPIOA->CRH &= 0xFFFFFFF0;//清空PA8
GPIOA->CRH |= 0x00000003;//將PA8設(shè)置成通用推挽輸出模式
GPIOA->ODR |= 1 << 8; ? ? ??
GPIOD->CRL &= 0xFFFFF0FF;//清空PD2
GPIOD->CRL |= 0x00000300;//將PD2設(shè)置成通用推挽輸出模式
GPIOD->CRL |= 1 << 2;
}

int main(void)
{
Stm32_Clock_Init(9); //初始化時鐘
delay_init(72); //延時初始化
LED_Init(); //配置相應(yīng)寄存器

while(1)
{
LED0 = 0; //點亮DS0
LED1 = 1;
delay_ms(500);
LED0 = 1; //點亮DS1
LED1 = 0;
delay_ms(500);
}

}

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

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119212
  • STM32
    +關(guān)注

    關(guān)注

    2258

    文章

    10828

    瀏覽量

    352505
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1175

    瀏覽量

    51515
收藏 人收藏

    評論

    相關(guān)推薦

    STM32 GPIO的基本結(jié)構(gòu)

    萬物皆有源頭,大家學(xué)習(xí)單片機的源頭操作就是通過GPIO點燈,GPIO作為STM32最基礎(chǔ)的外設(shè),也是大家最先接觸的外設(shè)。 當然,看似基礎(chǔ)的GPIO
    發(fā)表于 04-14 10:38 ?954次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的基本結(jié)構(gòu)

    STM32 GPIO的工作模式

    在之前圍繞STM32GPIO的基本結(jié)構(gòu)進行了介紹,圖1為STM32的5V容忍的GPIO口內(nèi)部基本結(jié)構(gòu)圖,圖2為
    發(fā)表于 04-14 10:40 ?1719次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的工作模式

    STM32 GPIO寄存器的相關(guān)知識

    在之前的STM32GPIO理論基礎(chǔ)知識,分別對基本結(jié)構(gòu)和工作模式進行了詳細的介紹。 GPIO基本結(jié)構(gòu)
    發(fā)表于 04-14 10:43 ?2548次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>寄存器的相關(guān)知識

    STM32 GPIO結(jié)構(gòu)圖講解 STM32上拉電阻或下拉電阻的作用

    STM32GPIO為例,如上圖是GPIO的結(jié)構(gòu)圖。另外關(guān)于GPIO工作原理,請移步此文:
    發(fā)表于 08-06 16:55 ?2898次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>結(jié)構(gòu)圖講解 <b class='flag-5'>STM32</b><b class='flag-5'>中</b>上拉電阻或下拉電阻的作用

    gpio_什么是gpio

    本內(nèi)容介紹gpio_什么是gpio,GPIO,英文全稱為General-Purpose IO ports,也就是通用IO
    發(fā)表于 12-19 16:31 ?2.5w次閱讀

    STM32單片機的GPIO8種模式的細致分析詳細說明

    關(guān)于STM32GPIO的8種工作模式,我們先引出一些問題?
    發(fā)表于 09-03 17:28 ?2次下載
    <b class='flag-5'>STM32</b>單片機的<b class='flag-5'>GPIO</b><b class='flag-5'>口</b>8種模式的細致分析詳細說明

    STM32GPIO使用

    分享本文,介紹STM32GPIO使用。
    的頭像 發(fā)表于 09-03 09:28 ?4319次閱讀

    STM32GPIO工作原理詳解

    STM32GPIO介紹 STM32引腳說明 GPIO是通用輸入/輸出端口的簡稱,是STM32
    的頭像 發(fā)表于 12-18 15:36 ?7685次閱讀
    <b class='flag-5'>STM32</b>的<b class='flag-5'>GPIO</b>工作原理詳解

    STM32GPIO工作原理詳解

    文章來源:微信公眾號:STM32嵌入式開發(fā)STM32GPIO介紹 GPIO是通用輸入/輸出端口的簡稱,是
    發(fā)表于 11-29 11:21 ?4次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>中</b><b class='flag-5'>GPIO</b>工作原理詳解

    6 . STM32 GPIO介紹

    GPIO是什么?GPIO (general purpose intput output) ,是通用輸入輸出端口的簡稱,可以通過軟件來控制其輸入和輸出。STM32 芯片的GPIO 引腳與
    發(fā)表于 12-24 19:08 ?2次下載
    6 . <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b><b class='flag-5'>介紹</b>

    STM32-GPIO詳解

    STM32-GPIO配置介紹typedef struct { uint32_t GPIO_Pin; GPIOMode_TypeDef GPIO
    發(fā)表于 12-24 19:12 ?15次下載
    <b class='flag-5'>STM32-GPIO</b>詳解

    STM32單片機GPIO簡介

    本篇主要介紹STM32單片機的GPIO基本概念和GPIO 寄存器的使用參考資料【51/STM32
    發(fā)表于 12-28 19:23 ?23次下載
    <b class='flag-5'>STM32</b>單片機<b class='flag-5'>GPIO</b><b class='flag-5'>口</b>簡介

    關(guān)于STM32 GPIO的配置等問題

    關(guān)于STM32 GPIO的配置等問題一、GPIO的基本結(jié)構(gòu)圖示二、模式直接上圖:圖表數(shù)據(jù)解析:三、配置等問題問題一、GPIO的基本結(jié)構(gòu)圖示提
    發(fā)表于 01-13 16:22 ?3次下載
    <b class='flag-5'>關(guān)于</b><b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的配置等問題

    STM32學(xué)習(xí)筆記---GPIO

    STM32的學(xué)習(xí)筆記—GPIO我使用的是STM32F401ZGT6,有7組IO,每組16個引腳,共112個引腳。因為太菜了,確實容易出錯,還請賜教參考官方文檔:八種IO
    發(fā)表于 01-13 16:31 ?6次下載
    <b class='flag-5'>STM32</b>學(xué)習(xí)筆記---<b class='flag-5'>GPIO</b>

    STM32使用GPIO配置的5種方式

    STM32使用GPIO配置的5種方式 STM32是常見的一種微控制器,其GPIO模塊可以實現(xiàn)對外部設(shè)備的控制和數(shù)據(jù)傳輸,包括數(shù)字I/O、模
    的頭像 發(fā)表于 10-26 17:42 ?1232次閱讀