历史上的今天
返回首页

历史上的今天

今天是:2025年08月15日(星期五)

正在发生

2018年08月15日 | STM32 IO口的八种模式使用小结

2018-08-15 来源:eefocus

/** 

  * @brief  Configuration Mode enumeration  

  */


typedef enum

{ GPIO_Mode_AIN = 0x0,   //模拟输入

  GPIO_Mode_IN_FLOATING = 0x04,    //浮空输入

  GPIO_Mode_IPD = 0x28,    //下拉输入

  GPIO_Mode_IPU = 0x48,   //上拉输入

  GPIO_Mode_Out_OD = 0x14,    //开漏输出

  GPIO_Mode_Out_PP = 0x10,   //推挽输出

  GPIO_Mode_AF_OD = 0x1C,    //复用开漏输出

  GPIO_Mode_AF_PP = 0x18   //复用推挽输出

}GPIOMode_TypeDef;


推挽输出

:可以输出高电平,也可以输出低电平,结构是两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止,高电平由IC电源确定; 

推挽电路是两个参数相同的三极管或MOSFET,以推挽的方式存在于电路中,各负责正负半周的波形放大任务,电路工作时两只对称的功率开关管每次只有一个导通,所以损耗小效率高,输出既可以向负载灌电流也可以向负载抽取电流;


开漏输出 

输出端相当于三极管的集电极,要得到高电平状态需要使用上拉电阻才行,适用于做电流型的驱动,其吸收能力相对较强(一般20ma以内) 

开漏的特点: 

利用外部电流的驱动能力,减少IC内部的驱动,当IC内部的MOSFET导通的时候,驱动电流是从外部的VCC流经 R pull-up,MOSFET到GND。IC内部仅需要很小的栅极驱动电流。 

一般来说 开漏是用来连接不同电平的元器件,匹配电平使用的。因为开漏输出的引脚在不连接外部的上拉电阻的时候,只能输出低电平,如果需要同时具备输出高电平的功能需要加上上拉电阻,很好的一个有点就是可以通过改变上拉电源的电压,便可以改变输出电平,比如加上上拉电阻就可以提供TTL/CMOS电平的输出等,(上拉电阻的组织决定了逻辑电平转换速度,阻值越大,速度越低功耗越小,所以负载电阻的阻值要结合实际情况选优); 

OPEN-DRAIN 提供了灵活的输出方式,但是也有弱点,就是在上升沿的时候会有延时,因为上升沿是通过外接无源上拉电阻对负载进行充电实现的,所以当电阻选择小的时候延时就小,但是功耗大,反之延时大功耗小,如果对延时有要求,则建议使用下降沿输出。 

可以将多个开漏输出的Pin,连接到一条线上,通过一个上拉电阻,在不增加任何器件的情况下,形成”与逻辑”关系。这也是I2C,SMBus等总线判断总线占用的原理;


浮空输入 

由于浮空输入一般多用于外部按键输入,在浮空输入的状态下,IO口的电平状态是不确定的,如果在该引脚悬空的,读取端口的电平状态是不确定的


复用开漏输出、复用推挽输出:可以理解为GPIO被作为第二功能使用的时候的配置情况;


总结:

浮空输如:可以做Key识别 ,RX

上拉输入 内部有上电阻

下拉输入 内部有下拉电阻

模拟输入 应用ADC模拟输入,或者低电平状态下有电

开漏输出 IO口输出0接地 IO口输出1 悬空 需要上拉电阻才能实现输出高电平,可以读取IO输入电平的变化实现C51的IO的双向功能;

推挽输出 IO输出0接地 IO输出1接VCC 读输入值是未知的

复用功能推挽输出 片内外设功能 (I2C的SCL,SDA USART TX)

复用开漏输出 片内外设功能 (TX1,MOSI,MISO,SCK,SS)

使用的实例: 

模拟I2C使用开漏输出的时候,接上拉电阻,能够实现0和1的输出,读值的时候先GPIO_SetBits(GPIOB,GPIO_Pin_0); 拉高,然后在读取IO口的值,GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);


如果无上拉电阻,IO口默认是高电平;需要读取IO口的值,可以使用带上拉电阻的IPU和浮空输入和开漏输出


通常的五种方法使能一个引脚的IO口,作为普通GPIO输入输出:根据需要配置引脚,同时不要使能该引脚的多有的复用功能模块 

作为普通模拟输入:配置该IO口为模拟输入模式,同时不要使能该引脚对应的所有的复用功能模块 

作为内置外设的输入的设置:根据需要配置该引脚为 浮空输入 带弱上拉输入或者带弱下拉输入,同时使能该引脚对应的某个复用功能模块; 

作为内置外设输出:根据需要配置该引脚为复用推挽输出或则复用开漏输出,同时使能该引脚对用德尔复用功能模块


推荐阅读

史海拾趣

高通(GENITOP)公司的发展小趣事

进入21世纪,超霸电池继续加大技术研发力度,推出了Recyko绿再系列高端绿色充电套装。这一系列产品不仅外观时尚、性能卓越,还实现了快速充电、低自放电等先进技术。其中,“十分充”产品更是将充电速度提升到了前所未有的高度,仅需10分钟即可将电池电量从0充至90%以上。Recyko绿再系列的成功推出,不仅为超霸电池赢得了更多用户的青睐,也推动了整个电池行业的技术进步。

DUCATI公司的发展小趣事

70年代,全球电子产品热潮兴起,金山工业决定进军这一领域。公司推出了碱性和氧化的银钮型电池,这些产品广泛应用于电子手表、计算机等小型电子设备中。这一战略转型不仅丰富了超霸电池的产品线,也进一步提升了其在电子行业的知名度。随着技术的不断积累,超霸电池逐渐在市场中占据了一席之地。

DESIGNERSYSTEMS公司的发展小趣事

随着科技的快速发展,电子设备的设计要求越来越高。DESIGNERSYSTEMS公司投入大量研发资源,不断推动技术突破。他们成功开发出一套高效、智能的设计软件,能够大大提高设计效率和精度。这一技术突破使得DESIGNERSYSTEMS在电子设备设计领域具备了更强的竞争力,吸引了更多客户的合作。

地博电子(DIBO)公司的发展小趣事

为了进一步拓展市场,地博电子在2016年成立了湖南地博光学材料有限公司,并建立了覆盖全国的营销网络。这一举措使得地博电子的产品能够更快速地触达目标客户,提高了市场占有率和品牌影响力。同时,全国营销网络的建立也为地博电子的未来发展提供了更广阔的空间。

Crystal Clear Technology公司的发展小趣事

面对全球电子市场的竞争压力,Crystal Clear Technology决定加快国际化步伐。公司先后在多个国家设立研发中心和生产基地,利用当地的资源和优势,提升产品的竞争力和生产效率。同时,公司还积极参与国际展览和交流活动,与国际同行建立广泛的合作关系,为公司的发展注入了新的活力。

Gilway Technical Lamp公司的发展小趣事
制冷剂是制冷系统中的重要介质,如果制冷剂泄漏,制冷效果将大打折扣甚至完全失效。

问答坊 | AI 解惑

小弟冒死将老师的课件分给大家,课件分章节,大家按需下载.

小弟冒死将老师的课件分给大家,课件分章节,大家按需下载.…

查看全部问答>

项目团队中个别人员工作积极性不高,怎样解决?

项目成员工作不主动,处于混日子的状态。怎样解决员工工作积极性?…

查看全部问答>

EVC4 网络通信问题--操作超时

我在同时开多线程模拟多用户访问HTTP客户端下载上传数据时,CATCH到很多“操作超时”,但是使用单线程时没有这种错误,请问下这个是什么原因?如何解决。 我测试使用的是同步方式。 全部分数奉上,希望有个解决的办法,急~~~;…

查看全部问答>

为什么build不出sys文件?

有现成的例子,在Windows DDK 2600.1106的Build Environment下用build指令编译,只出来.res, .obj, .sbr文件,没看到.sys文件。 而Build并没有提示错误,最后一行信息是BUILD:Done 这是为什么啊? …

查看全部问答>

想用ST的PWM做DA,滤波怎么选参数好

我对DA的速度要求不高,10Hz以内就够了,但是纹波比较担心现在是PWM后运放怎么做滤波,高手给支个招,参数怎么选。…

查看全部问答>

意法半导体(ST)宣布2011年中国iNEMO™校园创意大赛获胜名单

    中国北京,2011年12月1日 —— 横跨多重电子应用领域、全球领先的半导体供应商及全球最大的消费电子和便携设备MEMS(微机电系统)供应商意法半导体[1](STMicroelectronics,简称ST;纽约证券交易所代码:STM)今天宣布清华大学的天 ...…

查看全部问答>

新手求助

我是新手,各位仁兄可有FPGA的程序编译器?…

查看全部问答>

给力

楼主好样的 加油  祝你顺利…

查看全部问答>

新手来报到。。求解惑,汇编的。。不知道断点是在哪里

ORG                 0000H                        LJMP        MAIN             ...…

查看全部问答>

identifier “ ” is undefined

以下是我整理的程序,想实现的功能是三个按键,一个是按一下增加10,一个是按一下减少10,最后个是复位到0。但是错误报告identifier “ key” is undefined,dentifier “ keys” is undefined. #include #include\"NOKIA_LCD_BSP.H\" #define&nb ...…

查看全部问答>