草庐IT

(三)STM32基础——GPIO介绍

花园宝宝小点点 2023-08-26 原文

目录

GPIO简介

GPIO基本结构

GPIO位结构

输入部分 

输出部分

推挽输出模式

开漏输出​编辑

开漏复用输出​编辑

八种输入输出模式 

浮空、上拉、下拉输入​编辑

模拟输入

开漏、推挽输出

复用开漏、复用推挽输出

GPIO寄存器


GPIO简介

        GPIO(General Purpose Input Output)叫做通用输入输出口,可配置为8种输入输出模式。

引脚电平:0V~3.3V,部分引脚可容忍5V。

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

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

GPIO基本结构

        STM32F407ZG一共有7组IO口,每组IO口有16个IO,一共112个IO。命名为GPIOA,GPIOB,GPIOC......,GPIOG,然后每组IO口的命名是由0~15,一个16个,如GPIOA1等等。寄存器的每一位都对应一个引脚,其中输出寄存器写1,对应的引脚输出高电平,写0,就输出低电平,输入寄存器读取1,对应的端口目前是高电平,读取0,就是低电平。只有寄存器低16位对应有端口,高16位没有用到,而驱动器是用来增加驱动能力的。

GPIO位结构

输入部分 

        保护二极管的作用就是防止电流过高或者过低,当电流过高时,接VDD的保护二极管接通,高电流就不会通过电路了,当电流为负时,接VSS的二极管导通, 负压也不会通过电路析取电流,很好的起到了保护电路的效果。

        上面那两个开关就是上拉电阻和下拉电阻了,这两个电阻,通俗一点来讲的话,就是赋初值,当这两个开关都断开时,电路输入会处于一种浮空的状态,引脚的输入电平极易受到外界干扰而改变。而当选择上拉输入时,就是给电路默认赋一个高电平,相反,选择下拉输出时,就是给电路默认赋一个低电平。

        再过去就是一个施密特触发器(应该是翻译错误) ,作用就是对输入电压进行整形,主要原理就是,当电压高于某个值,输出才变为高电平,而当电压低于某个值之后,电压立马变为低电平,这样可以有效的修整电压,防止数据抖动。

 模拟输入就是直接连接到ADC上的

另一个是复用功能输入 ,需要连接到其他需要读取端口的外设上

输出部分

首先来看一下位设置/清除寄存器,主要功能就是单独控制输出寄存器的某一位数据

        之后是这两个MOS管,就是一种电子开关 ,通过控制MOS管,可以将IO口接到VDD或者VSS。

接下来介绍一下三种输出模式 

推挽输出模式

         在推挽输出模式下,PMOS和NMOS均有效,数据寄存器为1时,上管导通,下管断开,输出直接接到VDD,就是输出高电平,数据寄存器为0时,上管断开,下管导通,输出直接接到VSS,就是输出低电平。

开漏输出

         在开漏输出模式下,PMOS是无效的,只有NMOS在工作,数据为1时,下管断开,也就是输出断开;数据为0时,下管导通,输出直接接到VSS,就是输出低电平。想输出高电平,就只能外界电源。

开漏复用输出

 就是直接接在复用功能输出这,与复用输出类似

八种输入输出模式 

模式名称

性质

特征

浮空输入

数字输入

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

上拉输入

数字输入

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

下拉输入

数字输入

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

模拟输入

模拟输入

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

开漏输出

数字输出

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

推挽输出

数字输出

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

复用开漏输出

数字输出

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

复用推挽输出

数字输出

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

浮空、上拉、下拉输入

模拟输入

开漏、推挽输出

复用开漏、复用推挽输出

要注意的是,输出的时候,输入端也是开启的,而输入的时候,输出端是关闭的。

GPIO寄存器

接下来,我们来介绍一下GPIO的寄存器

 配置IO方向

端口输出类型寄存器(GPIOx_OTYPER)

每一位控制一个IO,当数值为1时,是输出开漏,数值为0时,是输出推挽。 

 

 每两位控制一个IO口,用来控制端口输出速度。

端口上拉/下拉寄存器(GPIOx_PUPDR)

每两位控制一个IO口,每两位设置不同的值,就对应不同的模式,具体如上图所示。

 

记录输入输出端的数据 

        注意,写0时不对其执行任何操作,而不是把其置为0。主要就是修改某几位而不改变其他的,BSy 置1,相应端口为1,BRy 置1,相应端口为0,也就是置位和复位。

        好的,到此处,GPIO的硬件原理部分我们已经全部介绍完毕,之后,我们下篇笔记来介绍一下如何编写程序来控制GPIO。


有关(三)STM32基础——GPIO介绍的更多相关文章

  1. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  2. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  3. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  4. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  5. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  6. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  7. STM32的HAL和LL库区别和性能对比 - 2

    LL库和HAL库简介LL:Low-Layer,底层库HAL:HardwareAbstractionLayer,硬件抽象层库LL库和hal库对比,很精简,这实际上是一个精简的库。LL库的配置选择如下:在STM32CUBEMX中,点击菜单的“ProjectManager”–>“AdvancedSettings”,在下面的界面中选择“AdvancedSettings”,然后在每个模块后面选择使用的库总结:1、如果使用的MCU是小容量的,那么STM32CubeLL将是最佳选择;2、如果结合可移植性和优化,使用STM32CubeHAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和L

  8. H2数据库配置及相关使用方式一站式介绍(极为详细并整理官方文档) - 2

    目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式

  9. 【Elasticsearch基础】Elasticsearch索引、文档以及映射操作详解 - 2

    文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就

  10. ESP32学习入门:WiFi连接网络 - 2

    目录一、ESP32简单介绍二、ESP32Wi-Fi模块介绍三、ESP32Wi-Fi编程模型四、ESP32Wi-Fi事件处理流程 五、ESP32Wi-Fi开发环境六、ESP32Wi-Fi具体代码七、ESP32Wi-Fi代码解读6.1主程序app_main7.2自定义代码wifi_init_sta()八、ESP32Wi-Fi连接验证8.1测试方法8.2服务器模拟工具sscom58.3测试代码8.4测试结果前言为了开发一款亚马逊物联网产品,开始入手ESP32模块。为了能够记录自己的学习过程,特记录如下操作过程。一、ESP32简单介绍ESP32是一套Wi-Fi(2.4GHz)和蓝牙(4.2)双模解决方

随机推荐