gpio啥时候是数字寄存器,啥时候是外设寄存器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gpio啥时候是数字寄存器,啥时候是外设寄存器相关的知识,希望对你有一定的参考价值。

每个通用 I/O 端口包括 4 个 32 位配置寄存器(GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)、2 个 32 位数据寄存器(GPIOx_IDR 和GPIOx_ODR)、1 个 32 位置位/复位寄存器 (GPIOx_BSRR)、1 个 32 位锁定寄存器(GPIOx_LCKR) 和 2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。

二、GPIO主要特性

●受控 I/O 多达 16 个

● 输出状态:推挽或开漏 + 上拉/下拉

● 从输出数据寄存器 (GPIOx_ODR) 或外设(复用功能输出)输出数据

● 可为每个 I/O 选择不同的速度

● 输入状态:浮空、上拉/下拉、模拟

● 将数据输入到输入数据寄存器 (GPIOx_IDR) 或外设(复用功能输入)

● 置位和复位寄存器 (GPIOx_BSRR),对 GPIOx_ODR 具有按位写权限

● 锁定机制 (GPIOx_LCKR),可冻结 I/O 配置

● 模拟功能

● 复用功能输入/输出选择寄存器(一个 I/O 最多可具有 16 个复用功能)

● 快速翻转,每次翻转最快只需要两个时钟周期

● 引脚复用非常灵活,允许将 I/O 引脚用作 GPIO 或多种外设功能中的一种

三、GPIO 8种功能模式

● 输入浮空

● 输入上拉

● 输入下拉

● 模拟功能

● 具有上拉或下拉功能的开漏输出

● 具有上拉或下拉功能的推挽输出

● 具有上拉或下拉功能的复用功能推挽

● 具有上拉或下拉功能的复用功能开漏

四、GPIO寄存器

配置寄存器

GPIOx_MODER 寄存器用于选择 I/O 方向(输入、输出、AF、模拟)

GPIOx_OTYPER 选择输出类型(推挽或开漏)

GPIOx_OSPEEDR 选择速度 (无论采用哪种 I/O 方向,都会直接将 I/O 速度引 脚连接到相应的 GPIOx_OSPEEDR 寄存器位)

GPIOx_PUPDR 无论采用哪种 I/O 方向,GPIOx_PUPDR都用于选择上拉/下拉。

数据寄存器

GPIOx_ODR 用于存储待输出数据,可对其进行读/写访问。

GPIOx_IDR 通过 I/O 输入的数据存储到输入数据寄存器GPIOx_IDR中,它是一个只读寄存器。

数据位操作

GPIOx_BSRR 32 位寄存器,允许应用程序在输出数据寄存器(GPIOx_ODR) 中对各个单独的数据位执行置位和复位操作。

在 GPIOx_BSRR 中向任何位写入 0 都不会对 GPIOx_ODR 中的对应位产生任何影响。如果在 GPIOx_BSRR 中同时尝试对某个位执行置位和清零操作,则置位操作优先。

当对GPIOx_BSRR低16位置1时相应的ODR置1当对高16位置1时清零相应的ODR位

锁定寄存器

GPIOx_LCKR GPIOx_LCKR 寄存器,可以冻结 GPIO 控制寄存器。冻结的寄存器包括 GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR、GPIOx_PUPDR、GPIOx_AFRL 和 GPIOx_AFRH。

复用寄存器

GPIOx_AFRL 和 GPIOx_AFRH 复用功能寄存器在每个 GPIO 上复用多个可用的外设功能。这样一来,应用程序可为每个 I/O 选择任何一个可用功能。由于 AF 选择信号由复用功能输入和复用功能输出共用,所以只需为每个 I/O 的复用功能输入/输出选择一个通道即可。
参考技术A 1、GPIO的英文全称General-Purpose Input /Output Ports,中文意思是通用I/O端口。
2、GPIO就是芯片的引脚(芯片上的引脚有些不是GPIO,只有一部分是),作为GPIO的这类引脚,他的功能和特点是可以被编程控制它的工作模式,也可以编程控制他的电压高低等。
3、在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过CPU控制,有的需要CPU提供输入信号。并且,许多设备或电路只要求有开/关两种状体就够了,比如LED的亮与灭。对这些设备的控制,使用传统的串口或者并口就显得比较复杂,所以,在嵌入式微处理器上通常提供了一种“通用可编程I/O端口”,也就是GPIO。
4、一个GPIO端口至少需要两个寄存器,一个做控制用的“通用IO端口控制寄存器”,还有一个是存放数据的“通用I/O端口数据寄存器”。数据寄存器的每一位是和GPIO的硬件引脚对应的,而数据的传递方向是通过控制寄存器设置的,通过控制寄存器可以设置每一位引脚的数据流向。
5、既然一个引脚可以用于输入、输出或其他特殊功能,那么一定有寄存器用来选择这些功能。对于输入,一定可以通过读取某个寄存器来确定引脚电位的高低;对于输出,一定可以通过写入某个寄存器来让这个引脚输出高电位或者低电位;对于其他特殊功能,则有另外的寄存器来控制它们。
参考技术B Copyright © 1999-2020, CSDN.NET, All Rights Reserved



打开APP



摆渡沧桑
关注
数字电路基础知识—— IO外设之GPIO介绍 原创
2019-08-06 17:07:09
 5点赞

摆渡沧桑 

码龄5年

关注
数字电路基础知识—— IO外设之GPIO介绍

一、GPIO 原理
GPIO,英文全称为 General-Purpose IO ports,也就是 通用IO口。嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。对这些设备/电路的控制,使用传统的串行口或并行口都不合适。所以在微控制器芯片上一般都会提供一个“通用可编程IO接口”,即GPIO。

接口至少有两个寄存器,即 “通用IO控制寄存器” 与 “通用IO数据寄存器”。一个是做控制的通用IO端口控制寄存器,另外一个是存放数据的通用IO端口数据寄存器。

即数据寄存器的各位都直接引到芯片外部,与GPIO引脚一一对应,而对这种寄存器中每一位的作用,即每一位的信号传递方向,则可以通过控制寄存器中对应位独立的加以设置。这样,有无GPIO接口也就成为微控制器区别于微处理器的一个特征。

二、GPIO相关的寄存器
1)GPxCON寄存器

它用于配置引脚的功能,GPACON中每一位对应一根引脚

当某位为0时,对应引脚为输出,此时在GPADAT中相应位写入0或1,让此引脚输出低电平或高电平;当某位被设为1时,对应引脚为地址线或用于地址控制,此时GPADAT保留不用。

2)GPxDAT寄存器

GPxDAT用于存储引脚值(读和写)。当引脚被设为输入时,读此寄存器得到对应引脚的电平状态是高还是低;当引脚被设为输出时,写此寄存器相应位可令此引脚输出高低电平。
参考技术C gpio什么时候是数字寄存器什么时候是外设寄存器?
回答如下:在寄存器电路稳定的时候外设数字寄存器更加合理,解决问题的方案合理,问题的期望值高,网友的认可度高,感谢采纳!

STM32语句:GPIO->ODR^=0X02 是怎么执行的?实现啥功能?

是GPIO端口的数据存在ODR寄存器,该数据与0x02异或再存在ODR中吗?

ODR是stm32的IO端口输出数据寄存器,该寄存器31-16位始终读为0,15-0位输出数据。GPIO->ODR^=0X02 是输出数据与0x02异或,即输出数据的第二位如果与1相同,该位置0,反之出1,因此实现取反,输出数据保存在ODR,每执行一次输出数据的第二位取反一次。 参考技术A ODR中原有值的第二位与1异或,比如原来为0,异或后得1,这个1在存入ODR中,每执行一次,这个值改变一次 参考技术B 实现第2位IO的取反

以上是关于gpio啥时候是数字寄存器,啥时候是外设寄存器的主要内容,如果未能解决你的问题,请参考以下文章

stm32啥触发串口接收中断

汇编寄存器中 ax 和[ax] 啥区别?

学习Stm32使用固件库和写寄存器有啥区别

STM32语句:GPIO->ODR^=0X02 是怎么执行的?实现啥功能?

Stm32基础

stm32中GPIOB->BSRR这句话是啥意思?是否跟GPIOB.BSRR意思一样?一定采纳