历史上的今天

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

正在发生

2018年09月06日 | stm32-GPIO-8种IO模式

发布者:EnchantedHeart 来源: eefocus关键字:stm32  GPIO  IO模式 手机看文章 扫描二维码
随时随地手机看文章

四种输入模式:

  • 上拉输入模式(GPIO_Mode_IPU):默认模式下(GPIO没有输入)读取的GPIO引脚数据为1,高电平。

  • 下拉输入模式(GPIO_Mode_IPD):默认模式下(GPIO没有输入)读取的GPIO引脚数据为0,低电平。

  • 浮空输入模式(GPIO_Mode_IN_FLOATING):既没有上拉也没有下拉,引脚电压为不确定值。(主要用于来做 I2C,USART的接收端)

  • 模拟输入模式(GPIO_Mode_AIN):关闭了斯密特触发器,不接上拉下拉电阻,经由另一个线路把电压信号传送到片上外设模块。(主要用于ADC外设的时候)

四种输出模式:

  • 推挽输出模式(GPIO_Mode_Out_PP):输出 0 时,N-MOS 导通,P-MOS 不被激活,输出0。输出 1 时,N-MOS 高阻, P-MOS 不被激活,输出1(需要外部上拉电路);此模式可以把端口作为双向IO使用。适用于输出电平为0或3.3V的场合。(可以输出高,低电平,连接数字器件)

  • 开漏输出模式(GPIO_Mode_Out_OD):输出 0 时,N-MOS 导通,P-MOS 高阻 ,输出0。输出 1 时,N-MOS 高阻,P-MOS 导通,输出1(不需要外部上拉电路)。适用于电平不匹配的场合,输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)。(具有线与功能)

  • 复用推挽输出模式(GPIO_Mode_AF_PP):复用模式,

  • 复用开漏输出模式(GPIO_Mode_AF_OD):复用模式,

GPIO口时钟:

GPIO_Speed_10MHz 最高输出速率10MHz 
GPIO_Speed_2MHz 最高输出速率2MHz 
GPIO_Speed_50MHz 最高输出速率50MHz

注释:

       I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口 的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声 控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。

关键是GPIO的引脚速度跟应用匹配(推荐10倍以上?)。比如:
1. 对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。
2. 对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。
3. 对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。
4.GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。
1.3

注释:

1. 在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。
2. 所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。
3. GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。


总结:在STM32中选用IO模式
(1) 浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1
(2)带上拉输入_IPU——IO内部上拉电阻输入
(3)带下拉输入_IPD—— IO内部下拉电阻输入 
(4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电
(5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变 。可以读IO输入电平变化,实现C51的IO双向功能
(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)
(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

实例总结:

(1)模拟I2C使用开漏输出_OUT_OD,接上拉电阻,能够正确输出0和1;读值时先
GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然后可以读IO的值;使用
GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);

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

4、IO低功耗:

关于模拟输入&低功耗,根据STM32的低功耗AN(AN2629)及其源文件,在STOP模式下,为了得到尽量低的功耗,确实把所有的IO(包括非A/D输入的GPIO)都设置为模拟输入

5、程序

(1)时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC, ENABLE);

(2)IO配置:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; // IR 输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_15; 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);

(3)输出输入:

输出0:GPIO_ResetBits(GPIOB, GPIO_Pin_0)
输出1:GPIO_SetBits(GPIOB, GPIO_Pin_0)
输入: GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)


关键字:stm32  GPIO  IO模式 引用地址:stm32-GPIO-8种IO模式

上一篇:stm32 栈的大小问题
下一篇:STM32中对GPIO的配置与使用

推荐阅读

概念简述除颤器表明了医疗保健未来的发展方向。这种设备已成为挽救生命的重要技术,但就在几年前,只有医院和救护车才会配备,而且也只有经过专门培训的专业医护人员才会使用。有些人对除颤器的作用还持怀疑态度。想象一下,如果一名同事突然捂住自己的胸口,然后倒在地上,旁边未受过专门培训的员工会怎么做呢?肯定是赶紧跑到柜子边,砸碎玻璃,取出除颤...
——作者:Allegro MicroSystems公司Bryan Cadugan 摘要 Allegro MicroSystems 是开发、制造和销售集成有高性能传感器的世界领先IC厂商,本文首先介绍了巨磁阻 (GMR)技术的最新进展,并阐述了Allegro 如何在市场领先的 IC 中使用此技术来满足当今的应用需求。 巨磁阻技术 1988年,Albert Fert和Peter Grünberg共同发现了巨磁阻效应,两人凭借此发现...
配图来自Canva近日,小米生态链企业之一,石头科技发布了2020年上半年财报。财报数据显示,2020 年上半年,石头科技公司实现营业收入 177,629.70 万元,同比减少 16.42%;实现利润总额 54,294.04万元,同比增长 18.94%;实现归属于母公司所有者的净利润 46,037.49 万元,同比增长 19.42%。其中,2020 年二季度,石头科技整体销售收...
来自中国科大的消息显示,中国科大郭光灿院士团队近日在机器学习提高超导量子比特读取效率上取得重要进展。该团队郭国平教授研究组与本源量子计算公司合作,在本源“夸父”6比特超导量子芯片上研究了串扰对量子比特状态读取的影响,并创新性地提出使用浅层神经网络来识别和读取量子比特的状态信息,从而大幅度抑制了串扰的影响,进一步提高了多比特读取保...

史海拾趣

问答坊 | AI 解惑

嵌入式Linux图形系统

为了让读者对嵌入式 Linux 当中能够使用的图形及图形用户界面有个较为全面的认识,本文将为读者介绍一些嵌入式 Linux 系统中常见的图形及图形用户界面系统,并作为\"基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南\"系列的最后一篇文章。本文首先 ...…

查看全部问答∨

24V5A开关电源电器原理图

谁帮忙设计一个输入220V输出24V5A的开关电源电路图.谢谢!!!…

查看全部问答∨

两个5.8G中继站的现场照片

两对5.8G桥接,一对30公里,一对8公里 上面的是30公里的,采用600mw的TT58-600,配置29dBi的碟状天线 圆锥状的就是600mw的TT58-600,看到下面的一排5个红灯了吧,那是信号强弱的标志,对信号的时候使用很方便,我们对的是5个灯都亮,信号最强 ...…

查看全部问答∨

硬件设计的几个基本问题

1、电阻电容的封装形式如何选择,有没有什么原则?比如,同样是 104 的电容有 0603、0805 的封装,同样是 10uF 电容有 3216、0805、3528 等封装形式,选择哪种封装形式比较合适呢? 2、有时候两个芯片的引脚(如芯片A 的引脚 1,芯片B 的引脚 2)可以 ...…

查看全部问答∨

再上个点单片机的资料!!!——单片机编程技巧100例

昨天上了本C的资料!! 今天来上本单片机关于C的资料! 不过今天的是100例哦!!…

查看全部问答∨

我的pc无法连接上wince。帮我看看

第一种:我用com端口相连,用activesync4.5连接,连不上。提示找不到设备。 工板下的那3个文件都有。 第二种:我用网线连接pc和公共办,然后配置,tcp/ip,mannual server,连接还是连接不上。 各位帮我看看,那里出了问题,我是新手。所以。。 ...…

查看全部问答∨

烙铁头很多种大家都是怎么选的啊?

烙铁头很多种大家都是怎么选的啊?…

查看全部问答∨

自动灭火装置、电水壶自动断电控制器电路原理

本帖最后由 jameswangsynnex 于 2015-3-3 19:59 编辑 该装置的电路工作原理见下图。JS是一根很细的金属丝,它在被保护物上缠绕几个圈后再串接于LSE的①、②脚间。当JS完好时,LSE的①、②脚间串通,此时LSE的④脚输出高电平,三极管VT截止,继电器 ...…

查看全部问答∨

Maxim's MAX8895 Battery Charger

Maxim\'s MAX8895 Battery Charger Integrates Automatic Adapter Detection & USB Enumeration Maxim Integrated Products introduced the MAX8895, a linear battery charger for Bluetooth(R) headsets and portable devices ...…

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

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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