历史上的今天

今天是:2024年09月06日(星期五)

正在发生

2018年09月06日 | STM32(二)之GPIO操作(1)——之输入输出操作

发布者:闪耀的星空 来源: eefocus关键字:STM32  GPIO操作  输入输出 手机看文章 扫描二维码
随时随地手机看文章

      GPIO是通用输入输出的简称,换句话说,其为MCU可控制的引脚,MCU通过GPIO引脚来与外部设备连接,从而实现与外部通讯、控制以及数据采集的功能。本文以STM32的GPIO为例子来介绍GPIO。


      上图所示,

       第一部分保护二极管及上下拉电阻

       如图所示为保护二极管,用于防止引脚过高或过低的外部电压输入,当引脚的外部电压高于VDD时,上方的二极管导通,当引脚电压低于Vss时,下方的二极管导通,从而便可防止不正常的电压输入GPIO而烧毁内部芯片。但是STM32的引脚不应外接大功率的驱动器件。而第一部分和第七部分之间为上拉电阻和下拉电阻,用于GPIO设置时用于设置上下拉电阻。

      第二部分:推挽输出和开漏输出(P-MOS管和N-MOS管)

      P-MOS管和N-MOS管使得GPIO具有推挽输出和开漏输出两种模式:

      (1)推挽输出

      在推挽输出模式下,P-MOS管和N-MOS管都处于工作,其等效电路如下所示:


      当INT往1处输入高电平时,经过反向后,上方的P-MOS导通,下方的N-MOS关闭,OUT对外输出高电平;而当INT往1处输入低电平时,经过反向后,上方的P-MOS关闭,下方的N-MOS打开,OUT对外输出低电平。当引脚高低电平切换时,两个管轮流导通,P管负责灌电流,N管负责拉电流,使其负载能力和开关速度均比普通的方式有较大的提高。推挽输出的低电平为0V,高电平为3.3V。

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

      (2)开漏输出

       在开漏输出模式下,上方的P-MOS管完全不工作。其等效电路如下:


      当我们通过INT往1输出0(低电平)时,P-MOS关闭,N-MOS管导通,使得输出接地;当我们通过INT往1输出1时,P-MOS管和N-MOS管均关闭,则引脚既不输出高电平,也不输出低电平,为高阻态。因此其需要在正常使用时在外部接上拉电阻。其具有“线与”特性,故当多个开漏模式引脚连接在一起时,只有当所有引脚都输出高阻态。才可由外部的上拉电阻提供高电平。若其中一个引脚为低电平,那么线路便相当于短路接地,使得整个线路为低电平,即0V。

      开漏输出一般应用于IIC、SMBUS通讯等需要“线与”功能的总线电路中。此外,其还适用于在电平不匹配的场合,如要输出5V的高电平,则上图的VDD可设为5V,如此在OUT为高阻态时,其对外部会输出5V的电平。

      第三部分:复用功能输出与输入

      “复用功能输出”中的“复用”指的是STM32的其它片上会对GPIO引脚进行控制,此时GPIO引脚作为该外设的一部分。也就是说,GPIO自身的寄存器只管理GPIO管脚的设置,而数据的传输由其它外设控制,比如说使用USART串口通讯时,作为通讯发送引脚的GPIO管脚便被设为USART串口复用功能,由串口外设控制其数据的输出。因此,GPIO的复用功能可分为复用开漏输出和复用推挽输出。

    与模拟输出类似的,复用功能输入便是将GPIO引脚

    第四部分:输入模式(模拟/浮空/上拉/下拉)

   使用 ”模拟输入“功能时,信号不经过施密特触发器,因为经过施密特触发器后信号只有0、1两种状态,所以如果ADC外设要采集原始的模拟信号,信号源必须在施密特触发器之前输入。此时,将GPIO设为模拟输入模式便可实现对原始的模拟信号的采集。

   与之类似的,DAC的模拟信号的输出也可不经过双MOS管结构,直接输出到对应的引脚。

   上拉/下拉输入:GPIO口使用内置的上下拉电阻。

GPIO输入输出小结:


关键字:STM32  GPIO操作  输入输出 引用地址:STM32(二)之GPIO操作(1)——之输入输出操作

上一篇:STM32—HAL库中GPIO相关函数解析
下一篇:STM32学习之:GPIO最简单操作步骤

推荐阅读

// stm32学习笔记对于stm32f10x系列芯片的库函数,GPIO的操作函数在stm32f10x_gpio.h中声明,在stm32f10x_gpio.c 中完成定义。基于库函数的stm32的IO口操作步骤:1.使能IO口时钟,函数接口:void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);参数列表:RCC_APB2Periph:连接在APB2总线上的外设名称,如下图所示,GP...
近日,由百度和一汽联手打造的中国首批量产L4级自动驾驶乘用车——红旗EV,获得5张北京市自动驾驶道路测试牌照。据了解,此前,红旗EV已经在湖南长沙的135公里的城市开放测试道路上开展测试。资料显示,相比历代Apollo无人驾驶汽车,红旗EV实现了包括安全、量产能力,以及外观内饰、驾乘体验等维度的优化升级。值得一提的是,红旗EV在操作交互方面迎来重大...
对于各大机器人企业来说,以“地狱模式”开局的2020年也许并不是一个友好的年份。面临疫情的剧烈冲击,各行各业都受到了巨大影响,机器人行业也不例外,各个企业也都经历了一段时间“冷冻期”。而在严峻的市场环境下,如何生存发展也成为众多机器人企业上半年共同面对的难题。 不过,危局之中也孕育着新的机遇。疫情之下,生产制造行业“无人化”、“省...
9月2日至9月7日,2021年中国国际服务贸易交易会在北京举办,本届服贸会以“数字开启未来,服务促进发展”为主题,数字服务成为重点内容之一,展示出大批5G、AI、云计算等方面的创新成果。在9月3日举行的“第四次工业革命技术赋能产业数字化与零碳化论坛”上,高通公司全球副总裁侯明娟分享了5G、AI、物联网的结合在众多行业的应用情况。侯明娟表示,5G加上...

史海拾趣

问答坊 | AI 解惑

用ARM LPC2138能做F题吗?

本帖最后由 paulhyde 于 2014-9-15 08:59 编辑 请问用lpc2138能做F题吗?数字滤波时间加上AD/DA的转化传输时间,能保证采样速度为超过40kHz吗?  …

查看全部问答∨

求助:Pt100温度传感器与圆盘指针式不相符?

Pt100温度传感器,现场使用时,发现其与现场安装在同一位置的圆盘指针式的简易温度表在200℃-300℃段不相附,差值在25℃左右,在100℃以下相差很小,2℃左右。现场有人说Pt100准,有人说老表准,双方争论不休,请问:究竟是谁不准?如何解决呢?请 ...…

查看全部问答∨

新建一嵌入式系统开发QQ群,欢迎加入

群号:68604395 本人以前主要研究linux,现在要做vxWorks的东西,对其也不是太懂,欢迎加入,共同探讨. 目的:主要研究linux和vxworks这两大操作系统的嵌入式应用问题,wince的爱好者也可加入,触类旁通嘛,呵呵。…

查看全部问答∨

如何去掉EVC属性表单的OK按钮?

请教一下,我在EVC下做了个属性表单,创建过程如下 CPropSheet propSheet(_T("属性表单"));         CWABOODlg dlg;                 int nResponse = dlg.DoModal();&nbs ...…

查看全部问答∨

兄弟们,帮个忙,辛苦你们了。用VERILOG模拟一下三层电梯。

兄弟们 我们学校留的作业 马上就要交了 实在不会 辛苦你们了 只要 实现一些基本的功能就好…

查看全部问答∨

evc下出现这个错误,咋不能用AfxMessageBox?

void CHello2Dlg::OnButton1() {         // TODO: Add Ayour control notification handler code here         AfxMessageBox("Simple message box."); } Compiling... hello2Dlg.cpp D:\\ ...…

查看全部问答∨

Symbian正式进军中国市场,联手其正式合作伙伴Symbio中国研发中心招聘开发测试工程师!

Symbian正式进军中国市场啦!!! Symbian中国研发中心硬件设施已经建成,由于负责人均为英国总公司人员,现委托其正式合作伙伴Symbio中国研发中心协助招募开发测试工程师。 工作地点:北京中关村 Junior& Senior Tester 主要职责是编写code ...…

查看全部问答∨

TI_ARM图形库的控件层有人在研究吗?一起来讨论哦!!!

 TI_ARM图形库的控件层有人在研究吗?一起来讨论哦!!!                  我现在用的是TI的9B92开发板,不知道有没有高手玩过他的图形驱动库!与小弟分 ...…

查看全部问答∨

STM8指令对对齐方式?

STM8 FLASH采用 32BIT 总线,指令又有长有短,是采用什么对齐方式呢?是字节?如果是的话,那个下个指令地址预取不是跟之前的指令想关联? 比方: nop         1byte  < PC nop    ...…

查看全部问答∨

三合一的板子上的ST-LINK不能正确显示内存的数据

                                 我写了个程序,就是对内存的数组写操作,用软件仿真看是全部数据都被改写了,但上仿真器后就发现只有一部分被改写 ...…

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

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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