STM32--GPIO(8种工作模式)

news2024/11/22 23:36:53

目录

一、GPIO基本介绍

二、GPIO基本结构分析

1、保护二极管

2、上拉、下拉电阻

3、施密特触发器        

4、P-MOS管和N-MOS管

 三、GPIO的8种工作方式

 1、浮空输入

2、上拉输入 

 3、下拉输入

4、模拟输入

5、开漏输出

6、推挽输出

7、复用开漏输出

8、复用推挽输出


一、GPIO基本介绍

什么是GPIO?

General Purpose Input Output:通用输入输出端口;

作用:控制或者采集外部器件的信息的外设;

STM32 GPIO简介

GPIO特点:1、不同型号的芯片,IO数量可能不同;2、IO口每次翻转需要2个时钟周期;3、每个IO口都可以作为中断;4、支持8中工作模式;

电气特性:

工作电压范围:2V-3.6V;不接5V;

输出电流:单个IO口,最大电流为25mA;

GPIO识别电压范围:-0.3V---1.164V(低电平)  1.833V---3.6V(高电平);

二、GPIO基本结构分析

在上图中,有端的I/O引脚,即为开发板上实实在在的引脚;此外,还有一些元器件需要提前进行介绍:

1、保护二极管

        保护二极管共有两个,分别接VDD与VSS;其作用为保护引脚外部过高或过低的电压输入。

        当引脚输入电压高于 VDD 时,上面的二极管导通,当引脚输入电压低于 VSS 时,下面的二极管导通,从而使输入芯片内部的电压处于比较稳定的值。

        虽然有二极管的保护,但这样的保护却很有限,大电压大 电流的接入很容易烧坏芯片;

2、上拉、下拉电阻

        上下拉电阻的作用是,当对应的IO口没有输入时,即没有外部的上、下拉电压,该引脚的电 平由上拉、下拉电阻决定;

         电阻阻值大概在 30~50K 欧之间,可以通过上、下两个对应的开关控制,这两个开关由寄存器控制。开启内部上拉电阻工作,引脚电平为高,开启内部下拉电阻工作, 则引脚电平为低。如果都不开启,引脚处于浮空状态,即电平不确定;

3、施密特触发器        

        施密特触发器就是一种整形电路,可以将非标准方波,整形成方波;

   特点:当输入电压高于正向阈值电压,输出为高;

             当输入电压低于负向阈值电压,输出为低;

             当输入在正负阈值电压之间,输出不改变;

4、P-MOS管和N-MOS管

            这两个元器件主要控制的是GPIO的开漏输出与推挽输出模式;

            开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行;

            推挽输出:这两个MOS管每次只有一只导通,所以导通的损耗小、效率高,输出既可以向负载灌电流,也可以从负载拉电流。

 三、GPIO的8种工作方式

模式名称特点
浮空输入可读取引脚电平,若引脚悬空,则输入电平不确定
上拉输入可读取引脚电平,若引脚悬空,则输入高电平
下拉输入可读取引脚电平,若引脚悬空,则输入低电平
模拟输入专门用于模拟信号的输入
开漏输出输出引脚电平,高电平为高阻态(电平不确定),低电平为VSS
推挽输出输出引脚电平,高电平为VDD,低电平为VSS
复用开漏输出由片上外设控制,输出引脚电平,高电平为高阻态,低电平为VSS
复用推挽输出由片上外设控制,输出引脚电平,高电平为VDD,低电平为VSS

 1、浮空输入

1、上拉/下拉电阻为断开状态;

2、施密特触发器打开;

3、输出被禁止;

        输入浮空模式下,IO 口的电平完全是由外部引脚电路决定。如果 IO 引脚没有连接其他的设备,那么检测其输入电平是不确定的。 

2、上拉输入 

1、上拉电阻导通;

2、施密特触发器打开;

3、输出被禁止; 

        上拉输入模式下,外部引脚为高电平,输入为高电平;外部引脚为低电平,输入为的低电平。如果 IO 引脚没有连接其他的设备,那么其输入电平由上拉电阻拉至高电平。但是上拉电阻的阻值较大, 所以只是“弱上拉”,不适合做电流型驱动。

 3、下拉输入

1、下拉电阻导通;

2、施密特触发器打开;

3、输出被禁止; 

         下拉输入模式下,外部引脚为高电平,输入为高电平;外部引脚为低电平,输入为的低电平。如果 IO 引脚没有连接其他的设备,那么其输入电平由下拉电阻拉至低电平。但是下拉电阻的阻值较大, 所以只是“弱上拉”,不适合做电流型驱动。

4、模拟输入

1、上下拉电阻断开;

2、施密特触发器关闭;

3、双 MOS 管也关闭

        其他外设可以通过模拟通道输入输出。该模式下需要用到芯片内部的模拟电路单元单元,用于 ADC、DAC、MCO 这类操作模拟信号的外设。

5、开漏输出

1、上下拉电阻断开;

2、施密特触发器打开;

3、P- MOS 管关闭、N-MOS管打开;

        P-MOS 被“输出控制”控制在截止状态,因此 IO 的状态取决于 N-MOS 的导通状况, N-MOS 还受控制于输出寄存器;IO口的输出状态为低电平或高阻抗。

       此外。施密特触发器是工作的,即可以进行输入,且上下电阻都断开,可以看做为浮空输入;

         根据上图我们进行分析,开漏输出如何进行工作?首先,P-MOS管断开,则输出引脚IO的输出状态2与P-MOS管毫无关系;

        P-MOS管打开,且受1处输出数据寄存器进行控制,当输出寄存器输出0时,经过“输出控制”的去翻操作后,输出逻辑 1 到 N-MOS 管的栅极,这时 N-MOS 管就会导通, 使得 IO 引脚连接到 VSS,即输出低电平。如果输出数据寄存器的值为 1,经过“输出控制” 的取反操作后,输出逻辑 0 到 N-MOS 管的栅极,这时 N-MOS 管就会截止。又因为 P-MOS 管是一直截止的,使得 IO 引脚呈现高阻态,即不输出低电平,也不输出高电平。

        故开漏输出只能输出低电平与高阻抗状态,且可以以浮空输入的状态进行读访问状态;

6、推挽输出

1、上下拉电阻断开;

2、施密特触发器打开;

3、P- MOS 管打开、N-MOS管打开;

        P-MOS管与N-MOS都打开,故引脚可输出低电平 VSS 或者高电平 VDD。 

       此外。施密特触发器是工作的,即可以进行输入,且上下电阻都断开,可以看做为浮空输入;

        如果输出数据寄存器①的值为 0,经过“输出控制”取反操作后,输出逻辑 1 到 P-MOS 管的栅极,这时 P-MOS 管就会截止,同时也会输出逻辑 1 到 N-MOS 管的栅极,这时 N-MOS 管就会导通,使得 IO 引脚接到 VSS,即输出低电平。

        如果输出数据寄存器的值为 1 ,经过“输出控制”取反操作后,输出逻辑 0 到 N-MOS 管的栅极,这时 N-MOS 管就会截止,同时也会输出逻辑 0 到 P-MOS 管的栅极,这时 P-MOS 管就会导通,使得 IO 引脚接到 VDD,即输出高电平。

        另外在推挽输出模式下,施密特触发器也是打开的,我们可以读取 IO 口的电平状态(浮空输入)。 由于推挽输出模式下输出高电平时,是直接连接 VDD,所以驱动能力较强,可以做电流型驱动,驱动电流最大可达 25mA,但是芯片的总电流有限,所以并不建议这样用,最好还是使用芯片外部的电源。

7、复用开漏输出

1、上下拉电阻断开;

2、施密特触发器打开;

3、P- MOS 管关闭、N-MOS管打开

         一个 IO 口可以是通用的 IO 口功能,还可以是其他外设的特殊功能引脚, 这就是 IO 口的复用功能。

        在开漏输出的基础上,一个 IO 口可以是多个外设的功能引脚,我们需要选择作为其中一个外设的功能引脚。当选择复用功能时,引脚的状态是由对应的外设控制,而不是输出数据寄存器。

        在开漏式复用功能模式下,施密特触发器也是打开的,我们可以读取 IO 口的电平状态,同时外设可以读取 IO 口的信息 。

8、复用推挽输出

1、上下拉电阻断开;

2、施密特触发器打开;

3、P- MOS 管打开、N-MOS管打开;    

         一个 IO 口可以是通用的 IO 口功能,还可以是其他外设的特殊功能引脚, 这就是 IO 口的复用功能。

         在推挽输出的基础上,一个 IO 口可以是多个外设的功能引脚,我们需要选择作为其中一个外设的功能引脚。当选择复用功能时,引脚的状态是由对应的外设控制,而不是输出数据寄存器。

        在开漏式复用功能模式下,施密特触发器也是打开的,我们可以读取 IO 口的电平状态,同时外设可以读取 IO 口的信息 。

        总结:本节我们对于GPIO做了最基础的认识,主要包括基本结构的分析以及8种工作模式的讲解以及电路图的分析,这对于后面正式学习起到一个基础作用,在后面的学习中我们也会不断地用到这些知识。

创作不易,还请大家多多点赞支持!!!

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

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

相关文章

JSP forEach 标签遍历map集合

之前我们说了 普通list 单纯按数量循环 bean类型list的遍历方式 那么 我们forEach标签 也能循环map语法非常简单&#xff0c;和循环list基本是一样的 我们直接上jsp代码 <% page import"java.util.Map" %> <% page import"java.util.HashMap" %…

UDP实现群聊通信

服务器端 #include <myhead.h> #define UDPIP "192.168.115.92" #define UDPPORT 6666 //存储客户信息的链表结构体 typedef struct Node {char name[20];struct sockaddr_in cin;struct Node *next; }*linklist; //数据结构体 struct data_cli {char type;ch…

Hive安装与配置

你需要掌握&#xff1a; 1.Hive的基本安装&#xff1b; 2.Mysql的安装与设置&#xff1b; 3.Hive 的配置。 注意&#xff1a;Hive的安装与配置建立在Hadoop已安装配置好的情况下。 hadopp安装与配置 Hive 的基本安装 从 官网 下载Hive二进制包&#xff0c;下载好放在/op…

游戏录屏怎么录?学会这几招,轻松搞定!

电子游戏已成为人们日常生活中重要的娱乐方式之一&#xff0c;许多玩家希望在游戏的过程中录制一些精彩的瞬间&#xff0c;或与他人分享自己的游戏体验&#xff0c;因此游戏录屏成为了一种普遍的需求。可是游戏录屏怎么录呢&#xff1f;在本文中&#xff0c;我们将为大家介绍两…

Linux的Sysfs 接口

一、sysfs接口 在linux系统中&#xff0c;用户空间访问驱动程序一般是以“设备文件”的方式通过“read/write/ioctl”访问&#xff0c;还有一种方式&#xff0c;可以通过echo的方式来直接控制硬件或者修改驱动&#xff0c;也能为底层驱动提供一个接口便于应用层调用&#xff0c…

文生图领域经典-ControlNet介绍

引言 2023年的计算机视觉领域顶级学术会议ICCV上&#xff0c;一篇颠覆文生图AI领域的论文《Adding Conditional Control to Text-to-Image Diffusion Models》——ControlNet 荣膺最佳论文奖(Marr奖)。 自开源以来&#xff0c;ControlNet已经在GitHub上揽获25k星。无论是对扩…

物理层之码分复用(内含相关例题)

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

yml转properties工具

目前搜索到的大部分代码都存在以下问题&#xff1a; 复杂结构解析丢失解析后顺序错乱 所以自己写了一个&#xff0c;经过不充分测试&#xff0c;基本满足使用。可以直接在线使用 在线地址 除了yml和properties互转之外&#xff0c;还可以生成代码、sql转json等&#xff0c;可…

数据库系统概述之国产数据库

当今世界&#xff0c;数据已成为重要的生产要素&#xff0c;数据库管理系统更是广泛应用于信息化行业各领域&#xff0c;国内数据库产业能否健康可持续的发展&#xff0c;在很大程度上影响着国民经济发展和网络空间安全。 当前&#xff0c;国产数据库行业竞争非常激烈&#xf…

亚马逊云科技Aurora MySQL在复制性能提升上的不断优化和尝试

前言 Amazon Aurora是亚马逊云科技自研的云原生关系数据库&#xff0c;它在提供和开源数据库MySQL、PostgreSQL的完好兼容性同时&#xff0c;也能够提供和商业数据库媲美的性能和可用性。 Aurora的性能提升不仅包含应用读写吞吐量的提升&#xff0c;也包含复制延迟的降低。一个…

数据结构 / day02作业

1. 有若干个学校人员的信息,包括学生和教师。 其中学生的数据包括&#xff1a;姓名、性别、职业s/S、分数。 教师的数据包括:姓名、性别、职业t/T、职务。 1&#xff0c;定义指针指向堆区内存 2.循环输入 3.计算老师的个数 4.计算学生的平均值 5.循环输出 6释放堆区空间 #inc…

41.0/查询/sql注入安全问题以及解决方式。

41.1. 回顾 1. jdbc&#xff1a;[java database connection] java连接数据库 2. 完成了增删改操作。 [1]加载驱动。Class.forName("com.mysql.cj.jdbc.Driver"); [2]获取连接对象: Connection connDriverManager.getConnection(url,user,pass); url: jdb…

【Cisco Packet Tracer】DHCP/FTP/WEB/DNS实验

本文使用CiscoPacketTracer仿真软件实现了DHCP/FTP/WEB/DNS实验&#xff0c;拓扑中包含2个客户机和3个服务器&#xff08;DHCP服务器、DNS服务器、FTP/WEB公用一个服务器&#xff09;&#xff0c;客户机的IP地址由DHCP服务器动态分配。 DHCP服务器IP地址&#xff1a;192.168.0…

制作电脑微信双开快捷方式

一、介绍 电脑下载的微信正常只能打开一个&#xff0c;那有时候需要双开甚至多开微信我们需要怎么操作呢&#xff1f; 我这里就讲一个制作微信双开快捷键方式的办法&#xff0c;争对其他应用也是一样的原理。 二、制作过程 1、右击微信快捷方式 2、点击属性 3、复制目标 …

nodejs+vue+elementui图书馆教室自习室座位预约管理系统93c8r

本系统利用nodejsVue技术进行开发自习室预约管理系统是未来的趋势。该系统使用的编程语言是nodejs&#xff0c;数据库采用的是MySQL数据库&#xff0c;基本完成了系统设定的目标&#xff0c;建立起了一个较为完整的系统。建立的自习室预约管理系统用户使用浏览器就可以对其进行…

AI旅游:旅游行业的人工智能成熟艺术适应从实践到表现报告

今天分享的是AI系列深度研究报告&#xff1a;《AI旅游&#xff1a;旅游行业的人工智能成熟艺术适应从实践到表现报告》。 &#xff08;报告出品方&#xff1a;accenture&#xff09; 报告共计&#xff1a;25页 旅行还没有充分利用AI所能做的一 而旅游业比两年前强多了。公司…

电脑格式化了怎么恢复原来的数据?您可以这样做

电脑是我们日常生活和工作中不可或缺的工具&#xff0c;然而&#xff0c;在一些情况下我们可能需要进行电脑格式化&#xff0c;比如为了清理系统垃圾、解决系统故障等。然而&#xff0c;格式化会导致所有数据被删除&#xff0c;给用户带来不便和困扰。本文将介绍电脑格式化了怎…

一文搞定XMLHttpRequest,AJAX,Promise,Axios及操作实战

XMLHttpRequest,AJAX,Promise,Axios都是发送异步请求的工具&#xff0c;只是使用的场合和方式有所不同。都是一种用于创建快速动态网页的技术 1、认识同步请求和异步请求&#xff1f; 1.1、认识同步请求&#xff1f; 1、我们点击淘宝首页的男装&#xff0c;进入男装页面的这…

vue3+vite+ts项目打包时出错

项目中引入了element-plus国家化的配置&#xff0c;然后进行项目打包&#xff0c;报下面的错误 解决方法&#xff1a; 在main.ts中添加 // ts-ignore

Ubuntu 22.04安装Go 1.21.4编译器

lsb_release -r看到操作系统版本是22.04,uname -r看到内核版本是uname -r。 sudo wget https://studygolang.com/dl/golang/go1.21.4.linux-amd64.tar.gz下载编译器。 sudo tar -zxf go1.21.4.linux-amd64.tar.gz -C /goroot将文件解压到/goroot目录下&#xff0c;这个命令…