四种输入模式:
上拉输入模式(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 栈的大小问题
下一篇:STM32中对GPIO的配置与使用
推荐阅读
史海拾趣
在电子行业的初期,Chyao Shiunn Electronic Industrial Ltd还是一家名不见经传的小公司。然而,凭借着对技术创新的执着追求,公司成功研发出一款高效能的芯片,这款芯片不仅性能卓越,而且成本相对较低。这一技术突破迅速吸引了市场的关注,公司借此机会积极拓展市场,逐渐在电子行业中崭露头角。
2017年,随着区块链技术的兴起,Helium团队看到了新的机遇。他们意识到区块链的透明性和自确认性可以为物联网网络的建设带来革命性变化。于是,Helium决定将网络建设“去中心化”,并借助区块链技术重新定义激励机制。这一决策标志着Helium从单纯的物联网项目转变为融合区块链技术的创新企业。通过去中心化的方式,Helium降低了网络建设和维护的成本,加速了网络覆盖的速度,为物联网设备提供了更加便捷和经济的连接方案。
随着产品质量的提升和市场认可度的提高,Autonics开始积极拓展国内外市场。公司在韩国国内设立了多个办事处和代理公司,覆盖了主要城市和工业区。同时,Autonics还积极开拓海外市场,先后在多个国家和地区设立了销售网点和生产基地。通过国际化战略的实施,Autonics的产品逐渐走向世界,成为国际知名的传感器和控制器品牌。
随着LED照明市场的不断扩大,Heatron LED Integration凭借敏锐的市场洞察力,迅速调整市场战略。公司不仅巩固了在国内市场的领先地位,还积极开拓国际市场,与多家国际知名企业建立了长期合作关系。通过参加国际展会、设立海外分支机构等方式,公司成功将产品推向全球多个国家和地区,实现了品牌的国际化。
作为一家有社会责任感的企业,Blue Creation公司始终关注环保和可持续发展。公司积极采用环保材料和节能技术,努力降低生产过程中的环境影响。同时,公司还积极参与公益事业,捐资助学、扶贫济困,回馈社会。这些举措不仅提升了Blue Creation的企业形象,也为其赢得了社会各界的广泛赞誉。
以上五个故事分别从不同角度展现了Blue Creation公司在电子行业发展的历程和成就。虽然这些故事是虚构的,但它们所蕴含的企业发展理念和经验对于现实中的企业来说仍具有一定的借鉴意义。
进入21世纪,随着数据存储需求的爆炸式增长,CMD公司敏锐地捕捉到了这一市场机遇。公司开始重点研发光纤通道和SCSI RAID控制器方案,并在这一领域取得了显著的突破。CMD的产品被广泛应用于PC和嵌入设备中,其IDE/UltraATA及通用串行总线的半导体器件在市场上占据了重要地位。
为了让读者对嵌入式 Linux 当中能够使用的图形及图形用户界面有个较为全面的认识,本文将为读者介绍一些嵌入式 Linux 系统中常见的图形及图形用户界面系统,并作为\"基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南\"系列的最后一篇文章。本文首先 ...… 查看全部问答∨ |
|
两对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)可以 ...… 查看全部问答∨ |
第一种:我用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 ...… 查看全部问答∨ |