(1)什么是GPIO

GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。


(2)基本结构

在这里插入图片描述

1.保护二极管

IO引脚上下两边两个二极管用于防止引脚外部过高/过低的电压输入,当引脚电压高于VDD时,上方的二极管导通,当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。但是尽管如此,还是不能直接外接大功率器件,须加大功率及隔离电路驱动,防止烧坏芯片或者外接器件无法正常工作。


2.P-MOS管和N-MOS管

图中红色箭头2方向为输出模式的GPIO,由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。这两个MOS管接管电路的输入信号是由GPIO的输出数据寄存器GPIOx_ODR提供的,也就是我们可以通过编程修改GPIOx_ODR寄存器的值从而影响该单元电路的输出。


常用的还用置位/复位寄存器GPIOx_BSRR和复位寄存器GPIOx_BRR,设置这两个寄存器后也能影响GPIOx_ODR,进而影响单元电路输出。


除此,还有复用功能输出,意思是指STM32的其它片上外设对GPIO引脚进行控制,此时该引脚作为外设功能的一部分。片上外设数据信号作为双MOS管接管的输入,进而输出到GPIO引脚中。例如USART串口通讯,要用到某个GPIO引脚作为通讯发送引脚,就可以把该GPIO 引脚配置成USART 串口复用功能,由串口外设控制该引脚,发送数据。


3.TTL肖特基触发器

图中红色箭头1方向为输入模式的GPIO,GPIO引脚经过内部上/下拉电阻配置成上/下拉、或者浮空输入,然后连接到触发器。信号经过触发器后,模拟信号转化为0和1的数字信号,然后存储在输入寄存器GPIOx_IDR中,通过读取GPIOx_IDR寄存器就可以知道GPIO的电平状态。


同理,与复用功能输出类似,这里也有复用功能输入,GPIO引脚的输入信号会传输到STM32的其他片上外设,由外设去读取该引脚状态。例如使用USART串口通讯,用某个GPIO引脚作为通讯的接收引脚。


另外,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。ADC外设要采集到的原始的模拟信号。类似的,当GPIO引脚用于DAC模拟电压输出通道时,此时作为“模拟输出”功能,DAC信号输出不经过双MOS管。


(3)GPIO的8种工作模式

在这里插入图片描述

(4)输入模式(上拉/下拉/浮空/模拟)

GPIO在输入模式中,TLL肖特基触发器被打开,输出被禁止,通过GPIOx_IDR读取I/O状态。


上拉/下拉输入,其默认电平由上拉/下拉决定,浮空输入的电平则是不确定的,完全由外部决定,一般按键就是采用浮空输入;模拟输入用于ADC采样。


(5)输出模式(推挽/开漏)

GPIO在输出模式中,TLL肖特基触发器同样被打开着的,即输入可用,这样通过输入数据寄存器GPIOx_IDR可以读取到IO实际状态。


推挽模式时,双MOS以轮流方式工作,开漏模式下,只有N-MOS管工作。输出寄存器GPIOx_ODR可控制是输出高低电平;输出的速率可配,有2MHz/10MHz/50MHz。频率越高,功耗越大,效率也越高。


(6)复用功能

复用功能中,输出输入都使能,可工作与开漏或推挽模式,但是输出信号源于片上外设,输出数据寄存器GPIOx_ODR无效,输入寄存器GPIOx_IDR仍然有效,可通过它获取IO实际状态,片上外设相关寄存器也是通过GPIOx_IDR获取该数据信号。


(7)其他GPIO端口工作模式

控制GPIO端口工作模式寄存器是GPIOx_CRL和GPIOx_CRH,它们都是32位的寄存器,分别管控GPIO的低8位IO和高8位IO。另外涉及到的寄存器还有:

GPIOx_ODR: 设置输出数据 GPIOx_IDR:读取输入数据 GPIOx_BSRR:置1/清零GPIO的相应引脚GPIOx_BRR:清零GPIO的相应引脚


注意:使用之前必须使GPIO使能(打开时钟)


关键字:STM32  GPIO  功能和结构 引用地址:STM32——简述GPIO的功能和结构

上一篇:STM32——GPIO的CRL、CRH和CNF与MODE的关系
下一篇:STM32——ARM与STM32之间的联系

推荐阅读

最近写STM32程序,用到了共用体,由此,引发了疑问。 比如:将0x12345678存储到一个U32类型的变量里面。大端和小端分别是这样存储的。 大端存储: 低地址 …… 高地址 0x 12 34 56 78 小端存储: 低地址 …… 高地址 0x 78 56 34 121234567看代码 `#...
据外媒报道,奥迪正在与比亚迪进行谈判,将后者纳入其电池供应商之列。受此消息刺激,周五比亚迪港股一路上扬,收盘大涨逾6%,收报40.6元/股。据悉,比亚迪的电池将用于基于奥迪和保时捷共同开发的PPE(Premium Platform Electric)平台打造的高端车型,首批车型将于2021年左右进入市场。并且,二者还探讨了深化合作的可能性,奥迪可能将入股比亚迪电池...
据财联社8月31日晚报道,知情人士分析TikTok已经为其在美国、新西兰和澳大利亚的业务选择了一家竞购方,最早可能于周二宣布这笔交易。与沃尔玛合作的微软以及甲骨文是这笔交易的两大竞购方。目前各方都没有立即对此发表评论。据报道,目前微软公司收购TikTok多个国家业务的呼声最高,其中微软原定收购TikTok美国业务,后来发现很难把美国业务和其他国家业...
在深受疫情影响的2020年之前,为了更好地满足快速发展和业务扩展需求,企业软件领域出现了很多关于现代化、自动化和数字化转型的学术性讨论。但这些讨论之前大多停留在了理论探讨阶段,很可能是因为大多数(大约70%)数字化转型计划都失败或者没有达到预期。而这样的失败率足以把任何人吓跑。由于无法完成数字化转型,企业机构中的许多员工不得不创建自己...

史海拾趣

问答坊 | AI 解惑

初学PLC经验

初学PLC不知从何入手,经过一段时间的磨练终于发现原来PLC也不是很难学。最主要的还是要从电工基础学习。PLC只是把时间继电器,中间继电器,移位寄存器,数据寄存器等,组合在一起。在学习前要是传统的继电接触方式能力比较高的话,那学PLC 真 ...…

查看全部问答∨

几个DSP高手的经验介绍(转)

一. 我是已经从事DSP开发有几年了,看到许多朋友对DSP的开发非常感兴取,我结合这几年对DSP的开发写一写自己的感受,一家之言,欢迎指教。我上研究生的第一天起根据老板的安排就开始接触DSP,那时DSP开发在国内高校刚刚开始,一台DSP开发器接近一万 ...…

查看全部问答∨

碰到一怪现象

昨天调试FPGA程序时,程序下载到EP2C35时发现,程序部分不工作。请问大侠啥原因?…

查看全部问答∨

Altium(Protel) 公司出“年报预告”信息了

根据Altium(Protel) 公司在2010年7月12日向悉尼证交所提交的2010年年报预告信息,该公司2009年7月1日至2010年6月30日止,预计共完成销售额是4650万美元,同比下降9% 。 在大中国地区(包括台湾和香港),预计共完成销售额是440万美元,同比下降43% ...…

查看全部问答∨

求助:网卡全双工/半双工概念问题

请问各位,网卡的全双工/半双工是对MAC而言还是对PHY说的啊,我现在的项目是MAC+PHY结构,自己看资料,发现设置全双工半双工是在PHY芯片上,但是看MAC的工作原理是,全双工半双工控制着MAC的发送流程,看资料上说的是半双工的时候,MAC发送数据要检 ...…

查看全部问答∨

SD卡注册表存储

2440 WinCE5.0 目前已实现Flash注册表Hive存储,现在希望存储在SD卡中 存储在Flash中时的注册表是: [HKEY_LOCAL_MACHINE\\System\\StorageManager\\AutoLoad\\MSFlash]     "DriverPath"="Drivers\\\\BuiltIn\\\\MSFlash" ...…

查看全部问答∨

DIY FPGA学习板简介附原理图

我给这个板子取了个名字叫 EE_FPGA,感谢eeworld给我们一个这样好的学习平台。希望大家在这里能够真正的学到自己想要的东西。 适用对象: 1.       FPGA初学者:希望能够迈入FPGA开发大门的初学者和爱好者,让大家 ...…

查看全部问答∨

大家谈谈这两个GPIO函数的区别?

GPIOPinTypeGPIOInput () GPIODirModeSet() 这两个函数都是设置GPIO的,而且应该能实现同样的功能,但是我在使用时发现,用GPIOPinTypeGPIOInput ()设置按键输入时,并不能读取按键,读取的值总是0,但是如果用GPIODirModeSet()设置就能实现。这 ...…

查看全部问答∨

【TI建议】组织DIY学习板,更新参考原理图

组织DIY MSP430  Stellaris学习板     如果参与的人够多,可以把我的这2块PCB发出来做参考! [ 本帖最后由 蓝雨夜 于 2011-10-9 08:17 编辑 ]…

查看全部问答∨

8962板子还能申请吗?

8962板子还能申请吗?…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved