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

    文章

    5308

    浏览量

    119975
  • STM32
    +关注

    关注

    2265

    文章

    10870

    浏览量

    354691
  • GPIO
    +关注

    关注

    16

    文章

    1196

    浏览量

    51896
收藏 人收藏

    评论

    相关推荐

    STM32 GPIO的基本结构

    万物皆有源头,大家学习单片机的源头操作就是通过GPIO点灯,GPIO作为STM32最基础的外设,也是大家最先接触的外设。 当然,看似基础的GPIO
    发表于 04-14 10:38 1041次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的基本结构

    STM32 GPIO的工作模式

    在之前围绕STM32GPIO的基本结构进行了介绍,图1为STM32的5V容忍的GPIO口内部基本结构图,图2为
    发表于 04-14 10:40 1783次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的工作模式

    STM32 GPIO寄存器的相关知识

    在之前的STM32GPIO理论基础知识,分别对基本结构和工作模式进行了详细的介绍GPIO基本结构
    发表于 04-14 10:43 2708次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>寄存器的相关知识

    STM32 GPIO结构图讲解 STM32上拉电阻或下拉电阻的作用

    STM32GPIO为例,如上图是GPIO的结构图。另外关于GPIO工作原理,请移步此文:
    发表于 08-06 16:55 3182次阅读
    <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 4436次阅读

    STM32GPIO工作原理详解

    STM32GPIO介绍 STM32引脚说明 GPIO是通用输入/输出端口的简称,是STM32
    的头像 发表于 12-18 15:36 7760次阅读
    <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 1388次阅读