改变gpio引脚输出状态有几种方式?各有什么不同
答案:2 悬赏:0 手机版
解决时间 2021-01-31 05:06
- 提问者网友:棒棒糖
- 2021-01-31 00:39
改变gpio引脚输出状态有几种方式?各有什么不同
最佳答案
- 五星知识达人网友:荒野風
- 2021-01-31 01:07
输出模式只有4种哦,另外4种是输入模式,这个问题很常见:
下面是引用文字:
(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)
通俗的说,输出模式就2种,开漏和推挽,我通俗的说下这两种方式
推挽:当IO口输出高电平时,相当于供电电源上(一般为3.3V)通过三极管或MOS管接到了IO口上;同理,当IO口输出低电平时,相当于IO口通过三极管或MOS管接到了GND上面。
开漏,就是当IO口输出低电平时,相当于IO口通过三极管或MOS管接到了GND上面;当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)
通俗的说,输出模式就2种,开漏和推挽,我通俗的说下这两种方式
推挽:当IO口输出高电平时,相当于供电电源上(一般为3.3V)通过三极管或MOS管接到了IO口上;同理,当IO口输出低电平时,相当于IO口通过三极管或MOS管接到了GND上面。
开漏,就是当IO口输出低电平时,相当于IO口通过三极管或MOS管接到了GND上面;当IO口输出高电平时,此引脚内部悬空。
全部回答
- 1楼网友:我住北渡口
- 2021-01-31 02:23
类似的问题我也遇到过,我觉得是无法通过改变gpxdat的值来解决这个问题。
gpxdat寄存器是内部上拉的,复位后i/o是默认输入,需要设置相应的i/o为输出,在此之前又无法对gpxdat进行写操作,所以设置i/o为输出后一定是先输出高电平,然后才能设置为低电平。
我是在后面的电路中加入延时上电功能来解决的,对你这个问题,是否可以修改电路,使继电器在i/o输出低电平时动作?这样就避免了这个现象。
//////////////////////////////////////////////////////
不好意思,我又想了一下,上面注释掉的这一段是错的。我没有正确理解你的意思。如果拉低,在i/o刚上电处于输入状态时,自动配置为输入,则gpxdat寄存器中的相应位变为0,然后配置为输出后,输出低电平,这样做应该是可以的。
但是拉低的强度要大于内部上拉的强度,我估算了一下,内部上拉电阻约24k,那么加一个2k下拉应该就可以了。 不过这样用的i/o路数少还可以,多了恐怕
带不动。
最好还是给i/o接个反向器,让继电器在i/o输出低电平时动作。
另外我也请教一个问题:你是如何用i/o驱动继电器的?是中间经过一个三极管吗?
手册中相关内容:
on reset, the default value for all gpxmux and gpxdir register bits is 0. that
is, at reset all i/o ports are configured as input pins. before changing the
direction of the port from input to output using the gpxdir register bit, the
current level of the pin is reflected in the gpxdat register. the gpxdat
register is described later in this section. when the direction of the port is
changed from input to output, the value already in the gpxdat register is used
to determine the state of the pin.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯