那曲檬骨新材料有限公司

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次閱讀
    百家乐官网电器维修| 百家乐官网现金网排名| 赌博技术| 卢氏县| 诚信百家乐官网平台| 百家乐官网首页红利| 至尊百家乐官网| 赌场百家乐投注公式| 乐天堂百家乐赌场娱乐网规则| 百家乐娱乐官网网| 大发888全部的网站地址| 澳门金沙会| 清徐县| 百盛百家乐官网软件| 博必发百家乐官网的玩法技巧和规则 | 百家乐龙虎规则| 百家乐图淑何看| 大发888 客服| 万宁市| 广州百家乐官网扫描分析| 百家乐游戏排行榜| 威尼斯人娱乐网送38元彩金| 现金轮盘游戏| 真人百家乐官网网西陆| 金冠百家乐官网的玩法技巧和规则| 百家乐明灯| 莆田棋牌游戏| 尊龙娱乐开户| 澳门百家乐官网游戏| 百家乐视频中国象棋| 大发888游戏下载官方下载| 百家乐官网电子作弊器| 百家乐哪条路好| 大发888客户端软件| 百家乐官网现场新全讯网| 24山玄空飞星排盘图| 全讯网即时线路| 百家乐官网庄闲出现几率| 菲律宾百家乐的说法| 大嘴棋牌官方下载| 百家乐官网电子游戏试|