详细了解STM32----GPIO

提示:永远支持免费开源知识文档,喜欢的点个关注吧!谢谢!


一、什么是GPIO?

GPIO是单片机上的通用输入输出端口的简称,可以通过软件来控制其输入输出。STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。

关于芯片引脚的分类:电源管脚、晶振管脚、复位管脚、下载管脚、BOOT管脚、GPIO管脚。

如下图(STM32系统板原理图)中的带P什么的都是STM32的引脚,其中大部分引脚都是用作GPIO,不过也可以用作其它作用,比如说PA9既可以用作GPIO,也可以用作USART1_TX引脚,具体用作什么需要我们后期自己去配置。
在这里插入图片描述

二、GPIO基本结构

如下图是GPIO的内部电路构成:
在这里插入图片描述
没有学过硬件的同学看到这张图也不用担心,王老师带你们看,首先我们从右向左看,最右边是不是有两个二极管,这个是保护二极管,二极管的作用是不是单向导通,那它是怎么起保护作用的呢?我们先来看上面的二极管。

在这里插入图片描述

众所周知,STM32的运行电压一般是3.3V,有些引脚也能接受5V的电压,当然,除了某些AD引脚之外,AD是什么?AD就是我们单片机中的一个模数转换器。现在假设我们输入一个Vc电压,Vc是大于STM32的可接受的电压范围,此时,我们可以发现上面的那个二极管是接了一个VDD的,VDD是什么?VDD是一般外接了一个3.3V的电压,好,看到这里我们怎么去看了呢?别着急,我们可以用整体法,如下图:
在这里插入图片描述
我们可以把这个分为两个部分,第一个是内部的电路,第二个是那个保护二极管,我们可以发现,这两个部分是不是构成了一个并联电路呀?并联电路的特点是什么?电压相等吧,还有分流,此时,当我们输入一个VDD时,1部分的电压就会被2部分的电压拉低,从而起到了一个保护作用。下面的二极管亦是如此。

三、GPIO的输入输出模式

GPIO一共有八种输入输出模式,其中有四种输出模式:推挽输出、开漏输出、复用推挽以及复用开漏,四种输入模式:浮空输入上拉输入、下拉输入以及模拟输入。下面我们来一一介绍一下GPIO的各种模式。

1、推挽输出

在这里插入图片描述
如图黄色部分是推挽输出的电路,我们从左往右看。输出嘛,肯定能输出一个高低电平,但这个是如何在我们写1的时候输出高电平,写0的时候输出一个低电平的呢?
假设我们现在写了一个1,1被输入到输出数据寄存器,然后被输入到了输出控制电路,重点来了,输出控制电路中有一个反相器,什么是反相器?反相器就是当我们写1的时候经过反相器输出的是一个0,当我们写0的时候经过反相器输出的是一个1,好,知道这一点之后我们回到刚刚我们写1。此时经过反相器,两条支路都输出了一个0,好,此时我们又要了解P·MOS管和N·MOS管,其中P·MOS管是低电平导通,N·MOS管是高电平导通,P·MOS管接了一个VDD,上面我们说过,VDD是外接了一个3.3V的电压,此时IO端口连接到P·MOS管,而P·MOS管又连了一个VDD,故此时IO端口就会输出一个高电平,同理我们写0的时候N·MOS管导通,而N·MOS管连接了VSS,而VSS是接地的,所以此时我们IO端口输出一个低电平。

2、开漏输出

在这里插入图片描述
通过上图我们可以发现,开漏输出和推挽输出的电路有所区别,区别就是在开漏输出中,我们的P·MOS管是没有参与开漏输出这整个过程的。所以开漏输出有一个特点,就是不能输出一个高电平,当我们写1的时候开漏输出是没有任何输出的,此时的IO端口状态我们称之为高阻态。

3、复用推挽

在这里插入图片描述
从上图我们可以发现,推挽和复用推挽的区别就在于复用推挽没有经过输出数据寄存器,而是来自片上外设模块,什么是片上外设呢?就是GPIO啊,ADC啊,IIC等等一些ST公司拿到ARM公司给的内核之后往上面添加的一些外设设备。好,知道这些之后,其它的就跟推挽输出差不多了,也能输出一个高低电平。

4、复用开漏

在这里插入图片描述
复用开漏和复用推挽一样,都是来自片上外设模块,而且没有经过输出数据寄存器,其它的也和普通开漏输出模式一样,这里我们也不详细介绍了。

介绍完输出模式之后我们来介绍一下输入模式。

1、浮空输入

在这里插入图片描述
如图黄色部分就是浮空输入的电路了,我们可以从右往左看,输入嘛,也就是外接了一个什么设备,然后IO端口读取这个外设输入进来的高低电平,我们看浮空输入,顾名思义,当我们既没有输入高电平也没有输入低电平的时候,此时IO端口的状态是浮空的,在空闲状态IO端口的电平既不是高电平也不是低电平。
然后这个还经过了一个TTL施密特触发器,众所周知,STM32板子是识别TTL信号的,什么是TTL信号呢?就像是0101这种高低电平的信号,如下图
在这里插入图片描述
我们输入到IO端口的一般是模拟信号,而单片机只识别TTL信号,故我们需要经过一个TTL施密特触发器来将模拟信号转化为TTL信号,然后再输入到输入数据寄存器中

2、上拉输入

在这里插入图片描述
上拉输入和浮空输入的区别就是有一个接了VDD开关的上拉电阻,当我们IO端口没有输入任何高低电平的时候IO端口的默认状态是高电平。

3、下拉输入

在这里插入图片描述
我们可以看到,下拉输入有一个接了VSS开关的下拉电阻,当我们IO端口没有输入任何高低电平的时候IO端口的默认状态就是低电平。

3、模拟输入

在这里插入图片描述
如图,模拟输入和以上三种输入的最大区别就是没有经过TTL施密特触发器,然后直接输入到片上外设模块,这个模式我们一般在用到ADC数据采集的时候会把引脚配置成模拟输入。

总结

GPIO端口一共有八种输入输出模式:
其中输出模式有:
推挽输出,开漏输出,复用推挽,复用开漏
输入模式有:
浮空输入,上拉输入,下拉输入,模拟输入

  • 28
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: STM32-ISO是一种特殊的STM32微控制器系列,其设计用于在噪声环境下提供高级别的电气隔离。这种电气隔离机制可以防止电感耦合、电容耦合和共模干扰等问题,从而增强系统的稳定性和可靠性。 使用零角度玩STM32-ISO,首先需要了解STM32-ISO的特点和功能。这些特点包括:双核设计、电气隔离技术、安全表面和故障保护等。双核设计使得STM32-ISO同时具备应用处理器和实时核,可以分别处理不同种类的任务,提高系统性能。电气隔离技术则确保信号在不同部分之间传输时不会相互干扰。安全表面保护系统免受未经授权的访问和攻击。故障保护机制可以防止系统在电气隔离失效时毁坏。 零角度玩STM32-ISO可以通过以下步骤实现: 1. 学习STM32-ISO的技术文档和参考手册,了解其硬件结构、内部模块和功能特性。同时要熟悉相关的开发工具和软件。 2. 了解使用STM32-ISO的典型应用场景。根据自己的需求,选择适合的开发板和模块。 3. 使用STM32CubeMX等工具进行代码生成和项目配置。根据实际应用需求,选择合适的外设模块和接口,配置GPIO、串口、定时器等功能。 4. 编写应用程序代码。使用C语言或其他支持的编程语言,结合STM32的开发库和驱动程序,实现特定的功能和算法。 5. 调试和测试应用程序。使用调试器或仿真器连接开发板,逐步调试代码并验证功能的正确性和稳定性。 6. 进一步优化和完善应用程序。根据测试结果和实际应用反馈,修复bug、改进性能或增加新功能。 通过以上步骤,我们可以全面了解STM32-ISO的特性,并在零角度上进行开发。这样能够最大限度地发挥STM32-ISO的性能优势,且保证系统的稳定性和可靠性,为特定的应用问题提供解决方案。 ### 回答2: STM32-ISO是一种基于ST Microelectronics的STM32微控制器的开发板,它专门设计用于开发与隔离有关的应用。隔离是指在电气和功能上分离电气系统的一种技术,以提高系统的安全性和可靠性。 使用STM32-ISO,可以便捷地实现对外部设备的隔离,从而保护主控器和其他关键部件免受电气干扰、过电压和过电流等问题的影响。这可以在很多应用场景中派上用场,比如工业自动化、医疗仪器、电力系统等。 要零角度玩STM32-ISO开发板,首先需要了解其硬件和软件特性。硬件方面,STM32-ISO集成了隔离电源电路和可编程逻辑电源电路,以分离主控器和外部设备。它还提供了丰富的接口,包括GPIO、I2C、SPI、UART等,方便与其他设备进行通信。 在软件方面,可以使用STM32Cube软件开发套件来编写代码。STM32Cube提供了丰富的开发工具和例程,可以帮助开发者快速上手。此外,还可以使用Keil MDK或者IAR Embedded Workbench等集成开发环境来进行开发。 零角度玩STM32-ISO可以从简单的实验开始,比如点亮LED灯。可以配置GPIO口为输出模式,并将其连接到板上的LED灯。通过编写相应的代码,可以控制LED灯的亮灭。 对于更复杂的应用,可以结合不同的外设模块,如传感器和执行器,同时进行阻隔控制和数据通信。例如,可以使用I2C接口与温度传感器进行通信,并将读取到的温度数据显示在液晶显示屏上。 总结而言,要零角度玩STM32-ISO,首先需要熟悉开发板的硬件和软件特性,然后通过简单的实验来熟悉开发流程。逐渐加深对开发板的理解,探索更多的应用场景,并结合外设进行更复杂的控制和通信操作。请开发者尝试使用STM32-ISO来实现自己感兴趣的项目,并通过不断学习和实践,进一步提高技术水平。 ### 回答3: STMicroelectronics的STM32系列是一款广泛应用于嵌入式系统的32位微控制器,具有高性能、低功耗和强大的扩展能力。而STM32-ISO则是基于STM32系列的特殊版本,能够实现隔离和保护,提供高级别的抗干扰能力和可靠性。 首先,STM32-ISO采用了进一步优化的硬件设计,以实现电气隔离,即通过在电路中添加隔离层来避免信号干扰和电气噪声的影响。这样可以确保系统在电气噪声较大的环境中仍能正常工作。 其次,STM32-ISO还配备了特殊的接口电路和通信协议,以实现与外部设备之间的隔离和保护。这些接口包括CAN总线、UART、SPI等,能够使STM32-ISO与其他设备进行安全可靠的通信。 另外,STM32-ISO还具备高级别的抗干扰能力,能够有效地抵御来自外界的电磁干扰和电气噪声。这是通过在电路设计中采用抗干扰措施和高质量的隔离材料来实现的。 最后,STM32-ISO支持丰富的软件开发工具和资源。开发者可以使用ST提供的官方开发环境和软件库来进行开发,同时还可以借助ST社区和论坛获取更多的技术支持和资源。 综上所述,STM32-ISO是一款强劲的嵌入式微控制器,通过电气隔离、接口保护、抗干扰能力以及软件开发工具的支持,能够在想要保证系统稳定性和可靠性的应用中发挥重要作用。无论在工业自动化、通信设备还是其他领域,STM32-ISO都是一个值得选择和使用的芯片。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钜锋王老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值