32GPIO的八种工作模式_01

文章详细介绍了STM32的GPIO(通用输入输出)功能,包括基本结构如保护二级管和施密特触发器,以及GPIO的多种输入输出模式。此外,还阐述了GPIO的相关配置寄存器,如CRL、CRH、IDR、ODR等,并提到了STM32引脚的复用和重映射功能。
摘要由CSDN通过智能技术生成

目录

一、GPIO简介

二、GPIO基本结构

1.保护二级管

2.施密特触发器

三、GPIO功能描述

1.输入浮空

2.输入上拉

​3.下拉电阻

4.模拟输入

5.开漏输出

6.推挽输出

7.开漏复用输出

8.推挽复用输出​编辑

 四、GPIO相关配置寄存器

1.端口配置低寄存器(GPIOx_CRL)

2.端口配置高寄存器(GPIOx_CRH)

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

4.端口输出数据寄存器(GPIOx_ODR) 

5.端口位设置/清除寄存器(GPIOx_BSRR)

6.端口位清除寄存器(GPIOx_BRR)

 五、STM32的引脚说明

1. 端口复用功能

2.端口重映射功能


一、GPIO简介

GPIO是通用输入输出端口简称,即软件可控制的引脚,32芯片的GPIO引脚与外部设备连接起来,从而实现各种功能。 

以STM32F103ZET6为例

共有7组GPIO,每组16个引脚,16*7=112个GPIO引脚,GPIOA-GPIOG

二、GPIO基本结构

1.保护二级管

芯片的引脚电平0~3.3V,引脚描述带有FT的引脚可以接5V

(两个保护二级管可以防止外部电压过高或过低)

 引脚电压大于VDD时,上方二级管导通,防止过高电压进入芯片内部烧坏芯片。

引脚电压低于VSS时,下方二级管导通,防止过低电压从芯片内部汲取电流。

2.施密特触发器

具有滤波的作用,把连续的模拟信号转化为0,1的数字信号(高低电平)

三、GPIO功能描述

根据每个I/O端口的特定硬件特征,STM32 的 IO 口 可以由软件配置成如下 8 种模式(软件控制寄存器): 1、输入浮空 2、输入上拉 3、输入下拉 4、模拟输入 5、开漏输出 6、推挽输出 7、推挽式复用功能 8、开漏复用功能

输入配置:

● 输出缓冲器被禁止

● 施密特触发输入被激活

● 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接

● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器

● 对输入数据寄存器GPIOx_IDR读取I/O状态

1.输入浮空

如果引脚什么都不接,此时输入电平极易受外界的干扰导致输入电平不确定,完全由外部的输入决定。

2.输入上拉

上拉电阻接VDD,默认高电平,没有外部输入时I/O状态为高电平,电路为低电平有效(0有效)

 3.下拉电阻

 下拉电阻接VSS,默认低电平,没有外部输入时I/O状态为低电平,电路为高电平有效(1有效)

4.模拟输入

为片上ADC配置,从外部读取模拟信号

不经过施密特触发器

输出配置:

  ● 施密特触发开启

  ● 弱上拉和下拉电阻被禁止

  ● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器

  ● 在开漏模式下,对输入数据寄存器的读访问可得到I/O状态

  ● 在推挽模式下,对输出数据寄存器的读访问得到最后一次写的值

推挽输出和开漏输出

 5.开漏输出

只有N-MOS管工作,输出数据寄存器GPIOx_ODR可控制I/O输出高阻态或低电平

当输出寄存器输出高电平,引脚输出高阻态(相当与断路)

当输出寄存器输低电平,引脚输出低电平

6.推挽输出

双MOS管以轮流方式工作,输出数据寄存器GPIOx_ODR可控制I/O输出高低电平。

当输出寄存器为高电平,引脚也输出为高电平

当输出寄存器为低电平,引脚也输出为低电平

开漏复用输出和推挽复用输出

复用功能模式中,输出使能,输出速度可配置,可工作在开漏及推挽模式,但是输出信号源于其他外设。输出数据寄存器GPIOx_ODR无效,输入可用,通过输入数据寄存器可获取I/O口实际状态,但一般直接用外设的寄存器获取该数据信号。

7.开漏复用输出

8.推挽复用输出

 四、GPIO相关配置寄存器

每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存 器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。但我们常用的 IO 端口寄存器只有 4 个:CRL、CRH、IDR、ODR。具体可参考《STM32F103-中文参考手册》

1.端口配置低寄存器(GPIOx_CRL)

32位寄存器,4位控制一个引脚,CRL配置PX0~PX7

CNFy[1:0]和MODEy[1:0]共同控制有一个引脚

CNFy[1:0]是前两位,决定具体模式;MODEy[1:0]是后两位,决定是输入还是输出。

 2.端口配置高寄存器(GPIOx_CRH)

32位寄存器,4位控制一个引脚,CRH配置PX8~PX15

CNFy[1:0]和MODEy[1:0]共同控制有一个引脚

CNFy[1:0]是前两位,决定具体模式;MODEy[1:0]是后两位,决定是输入还是输出

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

4.端口输出数据寄存器(GPIOx_ODR) 

5.端口位设置/清除寄存器(GPIOx_BSRR)

设置和清除输出数据寄存器,都是写1有效

BRy位为1,ODRy被清除变为0

BSy位为1,ODRy被设置为1

 6.端口位清除寄存器(GPIOx_BRR)

功能与GPIOx_BSRR的高16位一样

 五、STM32的引脚说明

STM32的引脚可以分为6种,分别为电源引脚(3V3、5V、GND)、晶振引脚、复位引脚、BOOT引脚和GPIO引脚。晶振、复位和BOOT引脚对于不同的芯片来说所用引脚也不同,具体请参考技术手册,对于开发者来说,我们主要关注的是GPIO引脚的使用,GPIO有的引脚具有复用和重映射功能

1. 端口复用功能

STM32的大部分端口都具有复用功能

所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚(比如正点原子的开发板PA9,PA10除了作为普通GPIO,还可以作为串口1的发送引脚)

作用:最大限度的利用端口资源

2.端口重映射功能

就是可以通过设置重映射寄存器把某些功能引脚映射到其他引脚(比如串口1的TX,RX引脚是在PA9,PA10上,但是同时它有两个映射端口PB6,PB7,开启重映射,PB6,PB7同样可以使用串口1)

作用:方便布线

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值