STM32笔记——GPIO

目录

GPIO简介

GPIO的基本结构

GPIO的工作模式

GPIO的输入

1、输入上拉

2、输入下拉

3、模拟输入

4、输入浮空

GPIO的输出

1、推挽输出

 2、开漏输出

3、推挽和开漏复用功能

 推挽输出和开漏输出的对比


GPIO简介

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

GPIO的基本结构

1、保护二极管与上下拉电阻

当外部输入电压高于VDD的电压时,上方的保护二极管导通,当外部输入电压底于Vss的电压时,上方的保护二极管导通,防止不正常电压引入芯片导致芯片烧毁。

2、P-MOS管和N-MOS管

在输出模式部分,线路经过一个由"P-MOS"和"N-MOS"组成的结构,这个结构使其拥有"推挽输出"和"开漏输出"的功能。

3、TTL肖特基触发器

4、IO耐压

STM32是一款3.3V电压的芯片,IO输出是3.3V,但IO大部分都是可以容忍5V电压输入。一般在芯片手册的“引脚定义”章节可以查看到有FT标识表示该IO可以容忍5V电压输入。

GPIO的工作模式

GPIO的输入

GPIO的输出可以细分为4种工作模式:上拉输入、下拉输入、模拟输入、浮空输入。

1、输入上拉(GPIO_Mode_IPU)

上拉电阻:将一个不确定的信号(高电平/低电平),通过一个电阻与电源VCC相连,固定在高电平。上拉电阻的目的是为了保证在无信号输入时输入端的电平为高电平。

上拉就是把点位拉高,比如拉到Vcc。上拉就是将不确定的信号通过一个电阻嵌位在高电平。电阻同时起到限流的作用。弱强只是上拉电阻的阻值不同,没有什么严格区分。

2、输入下拉(GPIO_Mode_IPD)

在这里插入图片描述

下拉电阻:将一个不确定的信号(高电平/低电平),通过一个电阻与地线GND相连,固定在低电平。下拉电阻是为了保证无信号输入时输入端的电平为低电平。

下拉就是把点位拉低,比如拉到GND。下拉就是将不确定的信号通过一个电阻嵌位在低电平。电阻同时起到限流的作用。弱强只是下拉电阻的阻值不同,没有什么严格区分。

3、模拟输入(GPIO_Mode_AIN)

 模拟输入用于ADC的采集。

4、输入浮空(GPIO_Mode_IN_FLOATING)

浮空就是逻辑器件与引脚即不接高电平,也不接低电平。由于逻辑器件的内部结构,当它输入引脚悬空时,相当于该引脚接了高电平。

  • 此时的GPIO引脚是处在高阻状态的,浮空输入的电平是不确定的,完全取决于外部的输入。
  • 浮空输入多用于外部按键输入、标准通信协议的I2C、USART的接收端;

GPIO的输出

GPIO的输出可以细分为4种工作模式:开漏输出、推挽输出、复用开漏输出、复用推挽输出。

1、推挽输出(GPIO_Mode_Out_PP)

推挽模式时双 MOS 管以轮流方式工作。当输入端口输入高电平,上部开关管导通,下部开关管关闭,VDD被推到OUT端口,相当于输出高电平;当输入端口输入低电平,上部开关管关闭,下部开关管导通,OUT端口接地,相当于输出低电平。

 2、开漏输出(GPIO_Mode_Out_OD)

只有 N-MOS 管工作。当输入端口输入低电平,开关管导通,OUT端接地,相当于输出低电平;当输入端口输入高电平,开关管关闭,相当于输出高电平。

注:正常使用时必须外部上拉电阻。

3、推挽和开漏复用功能

可以理解为GPIO口被用作第二功能时的配置情况。(并非作为通用IO口使用)

 推挽输出和开漏输出的对比

推挽输出模式一般应用在输出电平为0和3.3V而且需要高速切换开关的状态的场合。除了必须用开漏模式的场合,一般习惯使用推挽输出模式。

开漏输出模式一般应用在I2C、spi通信等需要“线与”功能的电路中。

就电流的大小而言,开漏输出是弱电流(基本算是没有电流)只是给外部一个电平信号,没有驱动能力,而推挽输出是强电流是具有推动(驱动)性的。

参考:《【野火】stm32HAL库实战开发指南---基于F103系列开发板》

           《STM32F10x——中文开发手册》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用内容,STM32C8T6是一款通用增强型的48脚单片机,具有64K闪存和LQFP封装。它适用于工业级温度范围-40~85度。下面是一些关于STM32C8T6学习的笔记: 1. 学习资料:可以从ST官方网站下载STM32C8T6的数据手册和参考手册,这些手册包含了该单片机的详细信息和使用方法。 2. 开发环境:为了开始学习STM32C8T6,你需要安装相应的开发环境。ST官方提供了一款免费的集成开发环境(IDE)——STM32CubeIDE,它可以帮助你进行代码编写、调试和下载。 3. 编程语言:STM32C8T6可以使用多种编程语言进行开发,包括C语言和汇编语言。C语言是最常用的编程语言,它可以通过STM32CubeIDE进行编写和调试。 4. 引脚配置:在使用STM32C8T6之前,你需要了解每个引脚的功能和配置。数据手册中有一张引脚功能表,可以帮助你了解每个引脚的用途和配置方法。 5. 时钟配置:STM32C8T6具有多个时钟源和时钟分频器,你需要根据自己的需求配置正确的时钟。时钟配置对于外设的正常工作非常重要。 6. 中断和定时器:STM32C8T6支持中断和定时器功能,这些功能可以帮助你实现各种任务和功能。你可以通过配置中断和定时器来实现外设的响应和定时操作。 7. 外设驱动:STM32C8T6具有丰富的外设,包括GPIO、UART、SPI、I2C等。你可以根据自己的需求选择合适的外设,并学习如何配置和驱动这些外设。 8. 调试和下载:在开发过程中,你可以使用STM32CubeIDE提供的调试功能来调试你的代码。一旦代码调试完成,你可以使用ST-Link或其他下载器将代码下载到STM32C8T6上运行。 希望以上笔记对你学习STM32C8T6有所帮助!如果你有任何进一步的问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值