我是靠谱客的博主 踏实苗条,最近开发中收集的这篇文章主要介绍STM32GPIO输入输出的八种工作模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言:

每个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)GPIO_Mode_AIN 模拟输入

(2)GPIO_Mode_IN_FLOATING 浮空输入

(3)GPIO_Mode_IPD 下拉输入

(4)GPIO_Mode_IPU 上拉输入

GPIO的四种输出

(1)GPIO_Mode_Out_OD 开漏输出

(2)GPIO_Mode_Out_PP 推挽输出

(3)GPIO_Mode_AF_OD 复用开漏输出

(4)GPIO_Mode_AF_PP 复用推挽输出

一、浮空输入模式

浮空,顾名思义就是浮在空中,上面用绳子一拉就上去了,下面用绳子一拉就沉下去了。

在这里插入图片描述

在浮空输入状态下, IO 的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定。CPU通过输入数据寄存器读取IO口状态。

二、上拉下拉输入模式

将状态不确定的信号线通过一个电阻将其至高电平(上拉)或低电平(下拉),以防止输入信号线因悬空而出现不确定的状态,继而导致系统出现不期望的状态。

在这里插入图片描述

在不同应用场合中会对电阻的阻值要求有所不同。根据STM32数据手册,上拉电阻大小一般为30–50K。CPU通过输入数据寄存器读取IO口状态为高电平或者是低电平。

三、模拟输入模式

输入的是一个模拟量,即具体的电压值,在ADC数模转换中会用到,将模拟量转化为数字量。

在这里插入图片描述

四、推挽输出模式

可以输出强高低电平,输出高电平时,电流输出到负载,叫灌电流,可以理解成推,输出低电平时,负载电流流向芯片,叫拉电流,即挽。

当INT输入为1时,经过反向器后变为0;此时Us=Ug三极管截止,上拉电阻通过外部VDD输出高电平1

在这里插入图片描述

当INT输入为0时,经过反向器后为0,此时Ug>Us,三极管导通,OUT输出0

在这里插入图片描述

推挽输出总结:

1、可以输出高低电平,用于连接数字器件,高电平由VDD决定,低电平由VSS决定

2.推挽结构指两个三极管受两路互补的信号控制,总是在一个导通的时候另外一个截止,优点开关效率效率高,电流大,驱动能力强。

五、开漏输出模式

只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)

在这里插入图片描述

开漏输出总结:

1. 只能输出低电平,不能输出高电平。

2、如果要输出高电平,则需要外接上拉。

3、开漏输出具有“线与”功能,一个为低,全部为低,多用于I2C和SMBUS总线。

六、复用推挽输出模式

复用开漏输出、复用推挽输出:可以理解为 GPIO 口被用作第二功能时的配置情况(即并非作为通用 IO口使用)复用功能的推挽输出_AF_PP ——片内外设功能(I2C SCL,SDA)

在这里插入图片描述

七、复用开漏输出模式

复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)STM32 设置实例:

(1)模拟 I2C 使用开漏输出_OUT_OD,接上拉电阻,能够正确输出 0 和 1;读值时先GPIO_SetBits();拉高,然后可以读 IO 的值。

(2)如果是无上拉电阻, IO 默认是高电平;需要读取 IO 的值,可以使用带上拉输入_IPU 和浮空输入_IN_FLOATING 和开漏输出_OUT_OD;

在这里插入图片描述

总结:

  1. 作为普通 GPIO 输入:根据需要配置该引脚为浮空输入、 带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块
  2. 作为普通 GPIO 输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。
  3. 作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。
  4. 作为内置外设的输入:根据需要配置该引脚为浮空输入、 带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。

注意:

  1. 注意如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。
  2. STM32 复位后,IO 端口处于输入浮空状态.JTAG 引脚复位以后,处于上拉或者下拉状态。
    所有 IO 端口都具有外部中断能力,端口必须配置成输入模式,才能使用外部中断功能.

最后

以上就是踏实苗条为你收集整理的STM32GPIO输入输出的八种工作模式的全部内容,希望文章能够帮你解决STM32GPIO输入输出的八种工作模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部