衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

什么是GPIO? STM32中關于GPIO口的介紹

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

一、什么是GPIO?

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

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

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

二、STM32中關于GPIO口的介紹

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

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

─ 輸入浮空

─ 輸入上拉

─ 輸入下拉

模擬輸入

─ 開漏輸出

─ 推挽式輸出

─ 推挽式復用功能

─ 開漏復用功能

三、常用GPIO口寄存器描述

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

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

00:輸入模式(復位后的狀態)

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

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

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

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

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

00:模擬輸入模式

01:浮空輸入模式(復位后的狀態)

10:上拉/下拉輸入模式

11:保留

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

00:通用推挽輸出模式

01:通用開漏輸出模式

10:復用功能推挽輸出模式

11:復用功能開漏輸出模式

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

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

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

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

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

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

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

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

四、一個簡單的關于寄存器的操作

MiniSTM32關于狀態指示燈的連接

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

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

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

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

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121178
  • STM32
    +關注

    關注

    2272

    文章

    10924

    瀏覽量

    357585
  • GPIO
    +關注

    關注

    16

    文章

    1216

    瀏覽量

    52382
收藏 人收藏

    評論

    相關推薦

    STM32 GPIO的基本結構

    萬物皆有源頭,大家學習單片機的源頭操作就是通過GPIO點燈,GPIO作為STM32最基礎的外設,也是大家最先接觸的外設。 當然,看似基礎的GPIO
    發表于 04-14 10:38 ?1117次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的基本結構

    STM32 GPIO的工作模式

    在之前圍繞STM32GPIO的基本結構進行了介紹,圖1為STM32的5V容忍的GPIO口內部基本結構圖,圖2為
    發表于 04-14 10:40 ?1885次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的工作模式

    STM32 GPIO寄存器的相關知識

    在之前的STM32GPIO理論基礎知識,分別對基本結構和工作模式進行了詳細的介紹GPIO基本結構
    發表于 04-14 10:43 ?2897次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>寄存器的相關知識

    STM32 GPIO結構圖講解 STM32上拉電阻或下拉電阻的作用

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

    gpio_什么是gpio

    本內容介紹gpio_什么是gpioGPIO,英文全稱為General-Purpose IO ports,也就是通用IO
    發表于 12-19 16:31 ?2.5w次閱讀

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

    關于STM32GPIO的8種工作模式,我們先引出一些問題?
    發表于 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使用。
    的頭像 發表于 09-03 09:28 ?4536次閱讀

    STM32GPIO工作原理詳解

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

    STM32GPIO工作原理詳解

    文章來源:微信公眾號:STM32嵌入式開發STM32GPIO介紹 GPIO是通用輸入/輸出端口的簡稱,是
    發表于 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 引腳與
    發表于 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
    發表于 12-24 19:12 ?15次下載
    <b class='flag-5'>STM32-GPIO</b>詳解

    STM32單片機GPIO簡介

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

    關于STM32 GPIO的配置等問題

    關于STM32 GPIO的配置等問題一、GPIO的基本結構圖示二、模式直接上圖:圖表數據解析:三、配置等問題問題一、GPIO的基本結構圖示提
    發表于 01-13 16:22 ?3次下載
    <b class='flag-5'>關于</b><b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的配置等問題

    STM32學習筆記---GPIO

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

    STM32使用GPIO配置的5種方式

    STM32使用GPIO配置的5種方式 STM32是常見的一種微控制器,其GPIO模塊可以實現對外部設備的控制和數據傳輸,包括數字I/O、模
    的頭像 發表于 10-26 17:42 ?1545次閱讀
    华侨人百家乐的玩法技巧和规则| 百家乐官网赌博筹码大不大| 百家乐出千赌具| 足球博彩通| 大亨百家乐娱乐城| 大发游戏| 百家乐视频官网| 磴口县| kk娱乐城送彩金| 百家乐赌假的工具| 棋牌百家乐官网赢钱经验技巧评测网| 百家乐招商用语| 百家乐官网游戏制作| 香港六合彩报码室| 百家乐历史路单| 百家乐官网赌法| 大发888亚洲城| 凯旋门百家乐游戏| 百家乐官网大西洋城| 游艇会娱乐城| 大发888官网| 百家乐长庄投注| 百家乐官网百胜注码法| 澳门网上| 大发888英皇国际| 百家乐波音平台导航网| 百人百家乐官网软件供应| 响水县| bet365怎么样| 德州扑克几副牌| 百家乐奥| 包赢百家乐官网的玩法技巧和规则| 东安县| 大发888娱乐场下载sampling id112| 打百家乐庄闲的技巧| 百家乐博之道娱乐城| 澳门百家乐官网路单| 申请百家乐官网会员送彩金| 星河百家乐官网现金网| bet365备用| 海王星开户|