ARM开发初级-STM32的GPIO操作-学习笔记05

本文详细介绍了STM32的GPIO基本概念、功能复用和寄存器配置,包括端口模式、输出类型、速度、上下拉等。通过实例讲解如何利用寄存器实现点灯操作,并探讨了库函数的使用。
摘要由CSDN通过智能技术生成

1. GPIO的基本概念及寄存器介绍

1.1 GPIO接口介绍

在这里插入图片描述

通用输入输出接口GPIO是嵌入式系统、单片机开发过程中最常用的接口,用户可以通过编程灵活的对接口进行控制,实现对电路板上LED、数码管、按键等常用设备控制驱动,也可以作为串口的数据收发管脚,或AD的接口等复用功能使用。因此其作用和功能是非常重要的。
上图(STM32F4x7-Datasheet的41页)片的 GPIO 被分成很多组,每组最多有 16个引脚,如型号为 STM32F407IGT6 型号的芯片有 GPIOA、GPIOB、GPIOC 至 GPIOI共 9组 GPIO,芯片一共 176 个引脚,其中 GPIO就占了一大部分,所有的 GPIO引脚都有基本的输入输出功能。

1.2 GPIO功能复用

GPIO除了输入和输出这两个功能还以后可能有很多其他功能,具体每个引脚有什么功能可以查看STM32F4x7-Datasheet的3.6节
在这里插入图片描述

以GA0为例,可以作为定时器的通道,也可以做串口的连接数据的管脚,一共有六种复用功能。那我们一个引脚可以最多有多少个功能呢?我们看到上图最上面从AF0到AF15一共最多有16个功能

1.3 GPIO寄存器介绍

我们要控制GPIO的本质就是控制GPIO里的寄存器。每一组GPIO端口都有一套寄存器去配置它自己的功能,首先介绍下GPIO常用寄存器

  • 4个32位配置寄存器
    GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR GPIOx_PUPDR
  • 2个32位数据寄存器
    GPIOx_IDR 、GPIOx_ODR
  • 1 个32 位置位 / 复位寄存器
    GPIOx_BSRR
  • 2 个 32 位复用功能配置寄存器
    GPIOx_AFRH 、GPIOx_AFRL

1.3.1 GPIO 端口模式寄存器 (GPIOx_MODER) (x = A…I)

在这里插入图片描述
一共有32位,这个寄存器把32位分成16个组,每一个组控制一个引脚MODER0控制PA0,…,MODER15配置PA15
每一组有四种状态00、01、10、11,具体作用如上图所示

1.3.2 GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x = A…I)

在这里插入图片描述
在这里插入图片描述
0-15位有效,16-31位是保留,没用的。0-15位一位控制一个引脚。当GPIOx_MODER的某个引脚为01也就是输出模式的时候,这个寄存器控制那个引脚的输出模式

  • 0:输出推挽
  • 1:输出开漏
    要了解这两种输出模式的区别,需要看GPIO工作原理图,这篇文章也很好的解释了两者的区别

在这里插入图片描述
简单说两者的比较

推挽输出 开漏输出
高电平驱动能力 由外部上拉电阻提供
低电平驱动能力
电平跳变速度 由外部上拉电阻决定,电阻越小,反应越快,功耗越大
线与功能 不支持 支持
电平转换 不支持 支持

1.3.3 GPIO 端口输出速度寄存器 (GPIOx_OSPEEDR) (x = A…I)

在这里插入图片描述
当我们选择输出模式的时候,可以输出高低电平,高低电平的速度是可以选择的。低速节能高速能传输宽容度更高。要保证选择的速度要大于实际的最高速度,以免信号失真

1.3.4 GPIO 端口上拉/下拉寄存器 (GPIOx_PUPDR) (x = A…I/)

在这里插入图片描述
在这里插入图片描述
可以设置上拉和下拉电阻。上拉电阻和下拉电阻可以拿到一个稳定的电平状态。上拉电阻的话默认高电平,下拉电阻的话默认低电平

1.3.5 GPIO 端口输入数据寄存器 (GPIOx_IDR) (x = A…I)

在这里插入图片描述
在输入模式下,感知外部的高低电平,0-15分别控制16个引脚

1.3.6 GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A…I)

在这里插入图片描述
控制输出,默认是0x00000000,全都是低电平

1.3.7 GPIO 端口置位/复位寄存器 (GPIOx_BSRR) (x = A…I)

在这里插入图片描述
BSRR是用来辅助 GPIO 端口输出数据寄存器 (GPIOx_ODR)的。如果我们要对ODR的第15位进行置位我们可以通过ODR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值