嵌入式软件开发学习二:GPIO

news2025/2/5 10:37:23

Tips:

        本文全部的TTL肖特基触发器应该均为施密特触发器,有些忘记改了。

        资料来源:[3-1] GPIO输出_哔哩哔哩_bilibili

一、GPIO简介:

        GPIO(General Purpose Input Output)是指通用输入输出接口,它允许微控制器或微处理器与外部设备进行数字通信。GPIO端口可以被配置成输入或输出,并且可以根据不同的应用场景进行多种配置。

        1、可配置为8种输入输出模式

        2、引脚电平:0V~3.3V(输出最高电压3.3V),不分引脚能容忍5V电压(输入电压)

        3、输出模式下可控制端口输出高低电平,用于驱动LED、控制蜂鸣器、模拟通信协议输出时序

        4、输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

二、I/O端口的基本结构

1、结构分区

2、功能讲解

2.1、保护二极管

        如果输入电压在0~3.3V之间,说明是正常电压,会正常进入驱动部分。

2.2、上拉电阻和下拉电阻

        上拉电阻和下拉电阻都可以通过程序进行配置,

        上面导通,下面断开:上拉输入模式

        下面导通,上面断开:下拉输入模式

         上面、下面都断开:浮空输入模式

        作用:给输入提供一个默认的输入电平,因为对于一个数字的端口,不是1就是0(即高电平和低电平)。如果啥都不接,输入处于浮空状态,引脚的输入极容易受外界信号的干扰而发生改变。

        2.3、施密特触发器(图中所说的肖特基触发器是翻译错误)

        当输入信号大于上压阈值时,施密特触发器会将输出状态反转并且保持稳定,直到下一次输入信号使得输出状态再次反转。这种特性使得施密特触发器能够有效地锁定数字信号,确保信号的稳定传输。

        2.4、模拟输入

        模拟输入连接到片上外设,比如说ADC模拟量,因为模拟量是波动的,所以要连接到施密特触发器之前。

        2.5、 复用功能输入

        复用功能输入连接的片上外设比如说是串口等,接收到的是数字信号,可以直接使用,连接到施密特触发器后面。

         2.6、输出数据寄存器

         关闭模式:即工作与输入模式下,N-MOS和P-MOS都关闭。(很好理解)

        2.7、推挽输出

         P-MOS和N-MOS均有效,该模式下 高低电平均有较强的驱动能力,故该模式又可叫强推输出模式。

        2.8、开漏输出

        P-MOS无效,只有N-MOS处于工作模式。

        输出寄存器为1时,P-MOS不工作,N-MOS断开,处于高阻态模式,该模式下,如果接入一个外部5V电压,高阻态下也能提供一个5V的输出。

        输出寄存器为0时,N-MOS导通,接VSS,I/O口输出低电平。

        一般作为通讯协议的驱动模式,如I2C。

三、GPIO工作模式

1、浮空/上拉/下拉输入配置

        浮空模式:上拉电阻和下拉电阻均断开,输入需要接入一个稳定的电平信号;

        上拉输入:上闭下断,输入高电平;

        下拉输入:上断下闭,输入低电平;

        进来的模拟信号都要经过施密特触发器,整形成为稳定的数字信号。

2、模拟输入(ADC模数转换器专属配置) 

 3、开漏输出、推挽输出

        区别:开漏输出没有驱动能力,而推挽输出有驱动能力

3.1、推挽输出

  • 内部结构:通常包含两个晶体管(如NPN和PNP),这两个晶体管处于互补的工作状态。当一个导通时,另一个截止。
  • 工作原理
    • 当输出逻辑高电平时,上拉晶体管(如PNP)导通,输出接近电源电压。
    • 当输出逻辑低电平时,下拉晶体管(如NPN)导通,输出接近地电平。
  • 特点
    • 可以直接输出高电平和低电平,无需外部上拉或下拉电阻。
    • 输出阻抗较低,能够提供较大的驱动电流。
    • 适用于需要快速切换且不需要额外外部组件的应用场景。

3.2、开漏输出

  • 内部结构:仅包含一个晶体管(通常是N沟道MOSFET或NPN晶体管),该晶体管的集电极或漏极未连接到任何电源。
  • 工作原理
    • 当晶体管导通时,输出为低电平。
    • 当晶体管截止时,输出呈高阻态,此时需要外部上拉电阻来将输出拉至高电平。
  • 特点
    • 输出不能直接提供高电平,必须通过外部上拉电阻实现。
    • 可以实现线与逻辑(即多个开漏输出可以直接并联在一起,用于实现逻辑与功能)。
    • 适合于需要电流源驱动或者与其他具有不同电源电压的设备接口的情况。
    • 通常用于需要较高灵活性的输出配置,例如I²C或SPI通信接口。

3.3、总结

  • 应用选择:如果你需要一个可以直接输出高电平和低电平的引脚,并且不需要与其他不同电源电压的设备相连,则推挽输出更合适。如果需要与其他设备进行灵活的接口连接,或者需要实现线与逻辑,则应选择开漏输出。
  • 电流驱动能力推挽输出通常能提供更大的驱动电流,而开漏输出则更适合于吸收电流的应用。
  • 功耗考虑:开漏输出在高阻态时几乎不消耗功率,这在某些低功耗应用中可能是一个优势。

4、复用开漏输出/复用推挽输出

4.1、复用推挽输出 (Alternate Function Push-Pull)

  • 内部结构:类似于普通的推挽输出,但输出信号被路由到一个特定的外设功能。
  • 工作原理
    • 当输出逻辑高电平时,上拉晶体管导通,输出接近电源电压。
    • 当输出逻辑低电平时,下拉晶体管导通,输出接近地电平。
  • 特点
    • 可以直接输出高电平和低电平。
    • 适用于需要快速切换且不需要额外外部组件的应用场景。
    • 通常用于需要驱动外设接口,如USART、SPI、I²C等。

4.2、复用开漏输出 (Alternate Function Open Drain)

  • 内部结构:类似于普通的开漏输出,只包含一个N沟道MOSFET或NPN晶体管,其输出端没有连接到电源。
  • 工作原理
    • 当晶体管导通时,输出为低电平。
    • 当晶体管截止时,输出呈高阻态,此时需要外部上拉电阻来将输出拉至高电平。
  • 特点
    • 输出不能直接提供高电平,必须通过外部上拉电阻实现。
    • 适合于需要与其他具有不同电源电压的设备接口的情况。
    • 通常用于需要较高灵活性的输出配置,例如I²C总线。

4.3、总结

  • 主要用途:这两种配置都是为了将GPIO端口用作特定的外设功能。
  • 输出特性:复用推挽输出可以直接输出高低电平,而复用开漏输出需要外部上拉电阻才能输出高电平。
  • 应用场景
    • 如果你需要直接驱动外设接口,且不需要额外的电压转换或电流限制,可以选择复用推挽输出。
    • 如果你需要与其他不同电源电压的设备接口,或者需要实现线与逻辑(多个开漏输出可以直接并联在一起),则应选择复用开漏输出。

四、项目实战

1、点亮LED灯

        方案一:低电平驱动方案(对应模式:推挽输出)

        例程:

#include "stm32f10x.h"
int main(void)
{
//    1、配置时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//    2、配置GPIO口
    GPIO_InitTypeDef GPIO_InitStruction;
    GPIO_InitStruction.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIO_InitStruction.GPIO_Pin=GPIO_Pin_0;
    GPIO_InitStruction.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStruction);
//    3、操作对应GPIO口
    GPIO_SetBits(GPIOA,GPIO_Pin_0);                           //对指定GPIO口置1操作
//    GPIO_ResetBits(GPIOA,GPIO_Pin_0);                         //对指定GPIO口置0操作
//    GPIO_WriteBit(GPIOA, uint16_t GPIO_Pin, Bit_SET);         //对指定GPIO口置BitVal操作,Bit_RESET=0,Bit_SET=1
//    GPIO_Write(GPIOA, uint16_t PortVal);
    while(1)
    {
    
    }
}

        方案二:

2、驱动蜂鸣器

方案一:

方案二

3、按键控制LED灯(传感器单元同理)

        传感器单元,如红外反射传感器、光敏传感器、热敏传感器等模块,接入3V3电源和接地后,输出口输出的数据都是1和0的数字信号,在输入模式中有上拉、下拉、浮空和模拟输入四种模式,在这里可以根据实际电路进行选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2056763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GitLab Merge Request流水线

GitLab Merge Request 流程文档 为了提升代码质量,让开发人员参与代码review,现在输出Merge Request的流程文档: 1.项目创建各自开发者的分支,命名规则是dev_名字首字母,比如我是dev_cwq.然后把本地分支推到远端orgin…

数据库管理-第232期 初探OpenTenBase(20240819)

数据库管理232期 2024-08-19 数据库管理-第232期 初探OpenTenBase(20240819)1 OpenTenBase简介2 架构介绍3 集群规划4 部署集群4.1 操作系统配置4.2 数据库软件下载与安装4.3 配置集群4.4 分发软件4.5 启动数据库4.6 查看集群状态 5 访问数据库总结 数据…

Java并发常见面试题总结

文章目录 1 多线程1.1 进程、线程和协程的区别?🔥1.2 Java 线程和操作系统的线程有啥区别?1.3 如何创建线程?🔥1.4 runnable 和 callable 两个接口创建线程有什么不同呢?🔥1.5 如何停止一个正在…

2024.8.20

思维导图 C语言中指针数组和数组指针的区别 数组指针本质上是一个指针变量,用于存储整个数组的起始地址,指针每偏移一个单位,内存就会偏移整个数组的容量的大小,一般用于二维数组,二维数组的数组名,本质上是…

【可视化】封装滚动菜单列表组件

源码及源码分析 <template><!-- 滚动菜单的主要容器 --><div class"scrolling-menu"><!-- 如果headers数组有内容&#xff0c;就渲染表头 --><divclass"table-header"v-if"headers.length":style"{ backgroundC…

LLM向量嵌入知多少

向量嵌入是机器学习领域中一项引人入胜且极具实用性的技术。它们构成了众多自然语言处理&#xff08;NLP&#xff09;、推荐系统和搜索算法的基础。如果您曾经使用过推荐引擎、语音助手或语言翻译工具&#xff0c;那么您已经体验过嵌入技术的强大功能。 机器学习算法&#xff0…

如何为您的专用IP地址选择正确的IP SSL证书

随着互联网的不断发展&#xff0c;网站安全变得越来越重要。SSL证书不仅为网站提供了加密通道&#xff0c;还增强了用户对网站的信任感。对于那些使用专用IP地址的网站来说&#xff0c;选择合适的IP SSL证书至关重要。本文将为您详细介绍如何挑选最适合您网站需求的IP SSL证书。…

Cocos Creator2D游戏开发(14)---CocosCreator常用组件详解

Canvas RenderRoot2D 组件所在的节点是 2D 渲染组件数据收集的入口,而 Canvas&#xff08;画布&#xff09; 组件继承自 RenderRoot2D 组件&#xff0c;所以 Canvas 组件也是数据收集入口。所有 2D 渲染元素都必须作为 RenderRoot2D 的子节点才能被渲染。 Canvas还作为屏幕适配…

Web基础、http协议、源码编译构建LAMP

目录 一、DNS与域名 1.1域名概述 1.2域名小结 1.3DNS域名解析 1.4域名 二、网页的概念 1.网页的基本概念 三、web 1.1web概述 1.2渲染过程 1.3web1.0和web2.0 1.4静态页面和动态页面 四、http协议 1.http协议简介 2.cookie和session 2.1cookie 2.2session 3.c…

React学习笔记(一)——react基础

1. React 介绍 1.1 React是什么 React由Meta公司研发&#xff0c;是一个用于 构建Web和原生交互界面的库 1.2 React的优势 相较于传统基于DOM开发的优势&#xff1a; 组件化的开发方式不错的性能 相较于其它前端框架的优势&#xff1a; 丰富的生态跨平台支持 1.3 React的市场…

国内知名电器集团售后服务系统被黑!损失1.2亿!

两款软件入侵 近期&#xff0c;一款名为“A助手”的软件和另一款“B配置工具”被揭露存在严重的非法活动。 这两款软件被不法分子利用&#xff0c;并成功侵入了某知名企业的电器售后服务系统。通过技术手段&#xff0c;伪造了电器安装服务的工单&#xff0c;并以此骗取了大量的…

24年银行从业资格考试报名照规格要求

24年银行从业资格考试报名照规格要求 #银行从业 #银行从业资格证 #银行从业考试 #银行从业资格考试 #银行从业资格证报名照片 #银从

Unity 波函数坍缩算法随机地图生成

Unity 波函数坍缩算法随机地图生成 波函数波函数基本概念位置空间波函数动量空间波函数两种波函数之间的关系波函数的本征值和本征态波函数坍缩 熵是什么熵作为状态函数时间之箭 实现原理举个例子&#xff1a;2D迷宫地图生成 Unity 如何实现前期准备单元格代码瓦片地图代码波函…

使用亮数据爬虫工具解锁复杂爬虫场景

在当今数据驱动型时代&#xff0c;数据采集和分析能力算是个人和企业的核心竞争力。然而&#xff0c;手动采集数据耗时费力且效率低下&#xff0c;而且容易被网站封禁。 我之前使用过一个爬虫工具&#xff0c;亮数据&#xff08;Bright Data&#xff09; &#xff0c;是一款低…

PCIe学习笔记(25)

数据完整性 PCI Express的基本数据可靠性机制包含在数据链路层(data Link Layer)中&#xff0c;它使用32位的LCRC (CRC)码逐链路检测TLP中的错误&#xff0c;并采用逐链路重传机制进行错误恢复。TLP是一个数据和事务控制单元&#xff0c;由位于PCI Express域“边缘”的数据源(…

重大发现!看Apache与nginx工作模型,享web服务幸福人生

文章目录 文章相关连接如下&#xff1a; Web 服务基础介绍ApacheApache prefork 模型 Apache worker 模型Apache event模型 Nginx-高性能的 Web 服务端nginx源码安装平滑升级和回滚平滑升级步骤&#xff1a;回滚步骤 nginx启动文件 文章相关连接如下&#xff1a; 如果想更多了…

【GH】【EXCEL】P4: Chart

文章目录 data and chartdonut chart (radial chart)Radial Chart bar chartBar Chart line chartLine Chart Scatter ChartScatter Chart Surface ChartSurface Chart Chart DecoratorsChart Decorators Chart GraphicsChart Graphics data and chart donut chart (radial cha…

《面板变系数模型及 Stata 具体操作步骤》

目录 一、文献综述 二、理论原理 三、实证模型 四、稳健性检验 五、程序代码及解释 六、代码运行结果 一、文献综述 在经济和社会科学研究领域&#xff0c;面板数据模型因其能够同时考虑个体和时间维度的信息而被广泛应用。传统的面板数据模型通常假设系数是固定的&#…

1.初识redis

文章目录 1.认识redis1.1 mysql和redis 对比1.2分布式系统1.2.1单机架构与分布式架构1.2.2数据库分离(应用服务器和存储服务器分离)与负载均衡1.2.3负载均衡器1.2.4 数据库读写分离1.2.5 数据库服务器引入缓存1.2.6数据库分库分表1.2.7 引入微服务 2.常见概念解释2.1 应用(Appl…

GoModule

GOPATH 最早的就是GOPATH构建模式&#xff0c; go get下载的包都在path中的src目录下 src目录是源代码存放目录。 package mainimport ("net/http""github.com/gorilla/mux" )func main() {r : mux.NewRouter()r.HandleFunc("/hello", func(w h…