09.GPIO工作原理:寄存器描述和配置方法

本文详细介绍了GPIO端口的寄存器工作原理,包括端口模式、输出类型、速度、上拉下拉、输入数据、输出数据、置位/复位、锁存和复用功能寄存器的配置方法。通过对每个寄存器的作用和配置方式的解析,帮助理解GPIO在微控制器中的应用。
摘要由CSDN通过智能技术生成

GPIO工作原理:寄存器描述和配置方法

笔记基于正点原子官方视频
视频连接https://www.bilibili.com/video/BV1Wx411d7wT?p=71&spm_id_from=333.1007.top_right_bar_window_history.content.click
如有侵权,联系删除

每组GPIO端口的寄存器包括:
  • 一个端口模式寄存器(GPIOx_MODER)
  • 一个端口输出类型寄存器(GPIOx_OTYPER)
  • 一个端口输出速度寄存器(GPIOx_OSPEEDR)
  • 一个端口上拉下拉寄存器(GPIOx_PUPDR)
  • 一个端口输入数据寄存器(GPIOx_IDR)
  • 一个端口输出数据寄存器(GPIOx_ODR)
  • 一个端口置位/复位寄存器(GPIOx_BSRR)
  • 一个端口配置锁存寄存器(GPIOx_LCKR)
  • 两个复用功能寄存器(低位GPIOx_AFRL & GPIOx_AFRH)

**注意:**前四个(GPIOx_MODER)(GPIOx_OTYPER)(GPIOx_OSPEEDR)(GPIOx_PUPDR)为32位配置寄存器,后面两个(GPIOx_IDR)(GPIOx_ODR)为32位数据寄存器,后面依次为(GPIOx_BSRR)32位置位/复位寄存器、(GPIOx_LCKR)32位锁存寄存器、(低位GPIOx_AFRL & GPIOx_AFRH)32位复用功能寄存器

说明:
① 每组IO口由10个寄存器组成,如果芯片有GPIOA~GPIOI 9个组,那么一共有对应9X10=90个寄存器。
② 如果配置一个IO口需要2个位,那么刚好32位寄存器配置一组IO口16个IO口
③ 如果配置一个IO口只需要1个位,一般高16位保留
④ BSRR寄存器32位分为低16位BSRRL和高16位BSRRH,BSRRL配置一组IO口的16个IO口的置位状态(1),BSRRH配置复位状态(0)。

下面对10个寄存器进行介绍:

1.端口模式寄存器(GPIOx_MODER)

在这里插入图片描述

  • 32位,分成了16组(MODER0-MODER15),每一组两位控制一个IO口
  • 其中每一个MODERx中两位填入数据:00表示输入模式(复位状态)、01表示通用输出模式、10表示复用功能模式、11表示模拟模式。
  • 其中GPIOx_MOER中“x“表示A~K,即PA口表示为GPIOA_MOER,即PB口表示为GPIOB_MOER,即PI口表示为GPIOI_MOER。
  • 如果要配置PA0(即配置GPIOA_MOER中的MODER0)为模拟模式,即GPIOA_MOER中的MODER0填入数据11;配置PA9(即配置GPIOA_MOER中的MODER9)为通用输出模式,即GPIOA_MOER中的MODER9填入数据01.
2.端口输出类型寄存器(GPIOx_OTYPER)

在这里插入图片描述

  • 只使用前16位寄存器,第16~第31位保留
  • 填入0为推挽输出(复位状态);1为开漏输出
  • 其编号配置同上一小节类似
3.端口输出速度寄存器(GPIOx_OSPEEDR)

在这里插入图片描述

  • 2MHZ 低速
  • 25MHz 中速
  • 50MHz 快速
  • 100MHz 高速
4.端口上拉下拉寄存器(GPIOx_PUPDR)

在这里插入图片描述

5.端口输入数据寄存器(GPIOx_IDR)

在这里插入图片描述

  • 做输入使用,比如用PA口(GPIOA_IDR)采得数据第0位(IDR0)为1就表示PA1口输出高电平;PB口(GPIOB_IDR)采得数据第8位(IDR0)为1就表示PB8口输出高电平。
6.端口输出数据寄存器(GPIOx_ODR)

在这里插入图片描述

  • 做输出使用,比如让PA1口输出高电平就是用PA口(GPIOA_ODR)的第0位(ODR0)为1
    ;让PB8口输出低电平就是用PB口(GPIOB_ODR)的第8位(ODR8)为0。
7.端口置位/复位寄存器(GPIOx_BSRR)

在这里插入图片描述

  • 端口低16位(0~15)为置位位,即端口的某一位(例如BS2)写1,则该一小位(BS2)输出高电平;若该一小位(例如BS2)写0,则该一小位(BS2)输出状态仍为原状态(并不是输出低电平)。
  • 端口高16位(16~31)为复位位(与低16位置位位状态相反),即端口的某一位(例如BR2)写1,则该一小位(BR2)输出状态仍为原状态(并不是输出高电平);若该一小位(BR2)写0,则该一小位(BS2)输出低电平。
8.端口配置锁存寄存器(GPIOx_LCKR)

在这里插入图片描述

  • 第16位为激活锁存器位。
  • 低16位(0~15)位锁存器,可以锁存数据,锁住以后,便不能对该端口数据进行操作
9.复用功能寄存器(低位GPIOx_AFRL & GPIOx_AFRH)
  • 分高位AFRH和低位AFRL,分别控制8个IO口
    在这里插入图片描述
  • 4个位控制一个IO口,其中AFRL控制AF0到AF7,AFRH控制AF8到AF15。
  • AF0到AF15分别对应IO口不同的复用功能(前文提到的串口复用)。
  • 即某一个IO口填入数据0011(AF3),则该IO口执行AF3对应的功能,进行不同数据(AF0到AF15)的切换则实现了IO口功能的切换。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值