stm32入门-----GPIO口输出的学习与使用(上)

目录

前言

 一、GPIO简介

1.基本概念

2.基本结构图

3.I/O端口位位结构图

二、GPIO的工作方式

1.浮空输入

 2.上拉输入

3.下拉输入

4.模拟输入

5.开漏输出

6.开漏式复用输出

 7.推挽输出

8.推挽式复用输出


前言

        从本期开始,我们正式去开始学习stm32的使用方法了,首先是从外设开始去学习也就是GPIO口,在前面我们了解到stm32是有两个GPIO 口的,分别是GPIOA和GPIOVB,其中每一个GPIO口都有对应的16个引脚,也就是0~15号引脚。那么本期我们先去对GPIO口进行初步的学习,理解GPIO口的相关概念,下一期再来去对GPIO口进行实践操作。(视频:[3-1] GPIO输出_哔哩哔哩_bilibili

 一、GPIO简介

1.基本概念

GPIO General Purpose Input Output )通用输入输出口
可配置为 8 种输入输出模式
引脚电平: 0V~3.3V ,部分引脚可容忍 5V
输出模式下可控制端口输出高低电平,用以驱动 LED 、控制蜂鸣器、模拟通信协议输出时序等
输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、 ADC 电压采集、模拟通信协议接收数据等

主要作用包括:
1.输入(采集):
GPIO 可以配置为输入模式,用于采集外部器件的信息。例如,连接传感器、开关或按钮等外部设备,通过 GPIO 读取这些设备的状态。

2.输出(控制):
GPIO 也可以配置为输出模式,用于控制外部器件的工作。例如,连接LED、继电器、驱动器等外部设备,通过 GPIO 输出电平信号来控制这些设备的工作状态。

在嵌入式系统中,GPIO 的灵活性使得它成为连接和控制外部设备的重要工具。通过软件配置,可以根据具体应用要求将 GPIO 引脚用于输入或输出。GPIO 的状态(高电平或低电平)可以通过读写相应的寄存器来控制,从而实现对外部设备的控制和监测。

需要注意的是,虽然 GPIO 具有通用性,但在具体的嵌入式平台和微控制器上,不同的 GPIO 引脚可能会有不同的特性和限制。在使用 GPIO 时,需要查阅相应的芯片手册或技术文档,了解每个 GPIO 引脚的功能、电气特性以及可用性。

2.基本结构图

3.I/O端口位位结构图

部分I/O端口是可以接受5V电压的,可能有些I/O端口位位结构图上会有VDD_FT 这个符号,VDD_FT 5伏容忍I/O脚是特殊的,它与VDD不同 。具体参考如下,I/O口电平标有FT是表示允许支持5V电压的意思。

二、GPIO的工作方式

通过配置 GPIO 的端口配置寄存器,端口可以配置成以下 8 种模式

模式名称

性质

特征

浮空输入

数字输入

可读取引脚电平,若引脚悬空,则电平不确定

上拉输入

数字输入

可读取引脚电平,内部连接上拉电阻,悬空时默认高电平

下拉输入

数字输入

可读取引脚电平,内部连接下拉电阻,悬空时默认低电平

模拟输入

模拟输入

GPIO无效,引脚直接接入内部ADC

开漏输出

数字输出

可输出引脚电平,高电平为高阻态,低电平接VSS

推挽输出

数字输出

可输出引脚电平,高电平接VDD,低电平接VSS

复用开漏输出

数字输出

由片上外设控制,高电平为高阻态,低电平接VSS

复用推挽输出

数字输出

由片上外设控制,高电平接VDD,低电平接VSS

这8种工作方式熟悉即可,知道具体是怎么工作以及相关特性即可(以下相关内容来自此处:https://blog.csdn.net/wdxabc1/article/details/139192494) 

1.浮空输入

特点:
1.上拉电阻关闭:
在输入浮空模式下,通常关闭了内部的上拉电阻。

2.下拉电阻关闭:
内部的下拉电阻也通常处于关闭状态。

3.施密特触发器打开:
输入浮空模式本身并没有打开或关闭施密特触发器的选项。施密特触发器通常用于去除输入信号的抖动,但在浮空模式下,信号的状态不受到控制,因此施密特触发器的作用受限。

4.双MOS管不导通:
在输入浮空模式下,双MOS管(P-MOS和N-MOS)不导通,输入电路处于高阻态。

设置:
在STM32等微控制器中,通过相应的寄存器设置可以将GPIO配置为输入浮空模式。例如,在STM32CubeMX或HAL库中,可以通过以下步骤进行设置:
1.选择GPIO引脚。
2.将引脚配置为输入。
3.关闭内部上拉电阻。
4.关闭内部下拉电阻。

这样配置后,GPIO引脚将处于输入浮空模式,其状态由外部环境决定,可能受到环境中的噪声和干扰。适用于需要读取外部信号,但在空闲时信号状态不确定的场景。

 2.上拉输入

 特点:
1.上拉电阻打开:
在输入上拉模式下,内部的上拉电阻通常是打开状态。

2.下拉电阻关闭:
内部的下拉电阻通常处于关闭状态。

3.施密特触发器打开:
输入上拉模式并没有直接影响施密特触发器的打开或关闭。施密特触发器通常用于去除输入信号的抖动,但在上拉模式下,主要关注信号的稳定性。

4.双MOS管不导通:
在输入上拉模式下,双MOS管(P-MOS和N-MOS)不导通,输入电路处于高阻态。

设置:
在STM32等微控制器中,通过相应的寄存器设置可以将GPIO配置为输入上拉模式。例如,在STM32CubeMX或HAL库中,可以通过以下步骤进行设置:
1.选择GPIO引脚。
2.将引脚配置为输入。
3.打开内部上拉电阻。
4.关闭内部下拉电阻。

这样配置后,GPIO引脚在空闲时呈现高电平,适用于需要读取外部信号,且在空闲时信号默认为高电平的场景。在按钮等开关连接到引脚的情况下,按钮未按下时引脚保持高电平。

3.下拉输入

特点:
1.上拉电阻关闭:
在输入下拉模式下,通常关闭了内部的上拉电阻。

2.下拉电阻打开:
内部的下拉电阻通常是打开状态。

3.施密特触发器打开:
输入下拉模式并没有直接影响施密特触发器的打开或关闭。施密特触发器通常用于去除输入信号的抖动,但在下拉模式下,主要关注信号的稳定性。

4.双MOS管不导通:
在输入下拉模式下,双MOS管(P-MOS和N-MOS)不导通,输入电路处于高阻态。

设置:
在STM32等微控制器中,通过相应的寄存器设置可以将GPIO配置为输入下拉模式。例如,在STM32CubeMX或HAL库中,可以通过以下步骤进行设置:
1.选择GPIO引脚。
2.将引脚配置为输入。
3.关闭内部上拉电阻。
4.打开内部下拉电阻。

这样配置后,GPIO引脚在空闲时呈现低电平,适用于需要读取外部信号,且在空闲时信号默认为低电平的场景。在按钮等开关连接到引脚的情况下,按钮未按下时引脚保持低电平。

4.模拟输入

特点:
1.拉电阻关闭:
在模拟功能模式下,通常关闭了内部的上拉电阻。

2.下拉电阻关闭:
内部的下拉电阻通常是关闭状态。

3.施密特触发器关闭:
模拟功能模式并没有直接关联施密特触发器,因为这种模式通常用于模拟信号,而施密特触发器主要用于去抖动数字信号。

4.双MOS管不导通:
在模拟功能模式下,双MOS管(P-MOS和N-MOS)不导通,输入电路处于高阻态,以避免对模拟信号的干扰。

设置:
在STM32等微控制器中,通过相应的寄存器设置可以将GPIO配置为模拟功能模式。例如,在STM32CubeMX或HAL库中,可以通过以下步骤进行设置:
1.选择GPIO引脚。
2.将引脚配置为模拟模式(例如,选择模拟输入或模拟输出)。
3.关闭内部上拉电阻。
4.关闭内部下拉电阻。

这样配置后,GPIO引脚可以用于连接模拟数字转换器(ADC)以获取模拟输入信号,或连接数字模拟转换器(DAC)以输出模拟信号。这对于需要进行模拟信号处理的应用非常重要。

5.开漏输出

特点:
1.上拉电阻关闭:
在开漏输出模式下,通常关闭了内部的上拉电阻。

2.下拉电阻关闭:
内部的下拉电阻通常处于关闭状态。

3.施密特触发器打开:
开漏输出模式并没有直接影响施密特触发器的打开或关闭。

4.P-MOS管始终不导通:
在开漏输出模式下,P-MOS管通常不导通。

5.N-MOS管控制输出:
通过写入ODR寄存器的相应位,可以控制N-MOS管的导通状态。写0则N-MOS导通,写1则N-MOS不导通。

设置:
在STM32等微控制器中,通过相应的寄存器设置可以将GPIO配置为开漏输出模式。例如,在STM32CubeMX或HAL库中,可以通过以下步骤进行设置:
1.选择GPIO引脚。
2.将引脚配置为开漏输出模式。
3.关闭内部上拉电阻。
4.关闭内部下拉电阻。

在使用开漏输出模式时,通常需要外部上拉电阻来确保在输出高电平时引脚处于高电平状态。这种模式常用于构建总线,例如I2C总线中的SDA线。由于该模式无法输出高电平,所以需要外部上拉电阻来提供高电平状态。

6.开漏式复用输出

特点:
1.上拉电阻关闭:
在开漏式复用功能模式下,通常关闭了内部的上拉电阻。

2.下拉电阻关闭:
内部的下拉电阻通常处于关闭状态。

3.施密特触发器打开:
开漏式复用功能模式并没有直接影响施密特触发器的打开或关闭。

4.P-MOS管始终不导通:
在开漏式复用功能模式下,P-MOS管通常不导通。

设置:
在STM32等微控制器中,通过相应的寄存器设置可以将GPIO配置为开漏式复用功能模式。例如,在STM32CubeMX或HAL库中,可以通过以下步骤进行设置:
1.选择GPIO引脚。
2.将引脚配置为开漏输出模式,并选择相应的复用功能。
3.关闭内部上拉电阻。
4.关闭内部下拉电阻。

在开漏式复用功能模式下,由于不能直接输出高电平,通常需要外部上拉电阻来提供高电平状态。此模式常用于一些通信总线,例如I2C总线中的SCL线,其中总线上的主设备控制输出。由于外设负责控制输出,GPIO的高低电平状态由外设来决定。

7、推挽输出

 7.推挽输出

特点:
1.上拉电阻关闭:
在推挽输出模式下,通常关闭了内部的上拉电阻。

2.下拉电阻关闭:
内部的下拉电阻通常处于关闭状态。

3.施密特触发器打开:
推挽输出模式并没有直接影响施密特触发器的打开或关闭。

4.输出控制由ODR位决定:
通过向ODR寄存器的相应位写入0,可以使N-MOS管导通,从而将引脚拉低;写1则P-MOS管导通,从而将引脚拉高。

设置:
在STM32等微控制器中,通过相应的寄存器设置可以将GPIO配置为推挽输出模式。例如,在STM32CubeMX或HAL库中,可以通过以下步骤进行设置:
1.选择GPIO引脚。
2.将引脚配置为推挽输出模式。
3.关闭内部上拉电阻。
4.关闭内部下拉电阻。

推挽输出模式常用于需要输出高、低电平信号的场景,且具有较强的驱动能力,适用于驱动外部设备或其他数字电路。

8.推挽式复用输出

特点:
1.上拉电阻关闭:
在推挽式复用功能模式下,通常关闭了内部的上拉电阻。

2.下拉电阻关闭:
内部的下拉电阻通常处于关闭状态。

3.施密特触发器打开:
推挽式复用功能模式并没有直接影响施密特触发器的打开或关闭。

4.可输出高低电平:
由于是推挽输出模式,因此可以输出高电平和低电平。

5.驱动能力强:
推挽式输出模式通常具备较强的驱动能力,适合驱动外部负载或其他数字电路。

6.由其他外设控制输出:
输出的高低电平状态通常由其他外设来控制,例如外设产生的信号直接控制GPIO引脚的电平状态。

设置:
在STM32等微控制器中,通过相应的寄存器设置可以将GPIO配置为推挽式复用功能模式。例如,在STM32CubeMX或HAL库中,可以通过以下步骤进行设置:
1.选择GPIO引脚。
2.将引脚配置为推挽输出模式,并选择相应的复用功能。
3.关闭内部上拉电阻。
4.关闭内部下拉电阻。

推挽式复用功能模式常用于需要输出高低电平信号,并具备较强驱动能力的场景,适用于与其他外设协同工作的应用。

 以上就是本期的全部内容了,我们下次见!

每日壁纸:

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 00:28:01       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 00:28:01       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 00:28:01       57 阅读
  4. Python语言-面向对象

    2024-07-16 00:28:01       68 阅读

热门阅读

  1. 基于深度学习的语音识别

    2024-07-16 00:28:01       24 阅读
  2. Ubuntu20.04.6新系统没有wifi驱动(已解决)

    2024-07-16 00:28:01       23 阅读
  3. dagger2实现原理

    2024-07-16 00:28:01       22 阅读
  4. html视差滚动效果

    2024-07-16 00:28:01       17 阅读
  5. Mac 安装npm

    2024-07-16 00:28:01       17 阅读
  6. Hoppscotch: 强大的API请求工具

    2024-07-16 00:28:01       17 阅读
  7. C++命名规范

    2024-07-16 00:28:01       21 阅读
  8. C语言——数组、sizeof关键字

    2024-07-16 00:28:01       21 阅读
  9. 模板引擎是什么?

    2024-07-16 00:28:01       22 阅读
  10. vue3 学习笔记07 -- 定义响应式数据

    2024-07-16 00:28:01       22 阅读
  11. 第4章 引擎提供的着色器工具函数和数据结构

    2024-07-16 00:28:01       16 阅读