单片机输入输出模式


STM32

输入模式

模拟输入、浮空输入、上拉输入、下拉输入

模拟输入:I/O端口的模拟信号(电压信号,并非电平信号)直接模拟输入到片上外设模块(比如ADC模块)。

浮空输入:I/O端口的电平信号直接输入数据寄存器。

上拉输入: I/O端口的电平信号直接进入输入数据寄存器,但是在I/O端口悬空(无信号输入)的情况下,输入端的电平保持在高电平。

下拉输入: I/O端口的电平信号直接进入输入数据寄存器,但是在I/O端口悬空(无信号输入)的情况下,输入端的电平保持在低电平。

例如STM32F103的固件库中的模式选择:

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;

讲解:

- GPIO_Mode_AIN:模拟输入模式,用于输入模拟信号。

- GPIO_Mode_IN_FLOATING: 浮空输入模式,用于输入数字信号,不进行上拉或下拉处理。 一般不使用(比较危险)。

- GPIO_Mode_IPD: 带下拉电阻的输入模式,用于输入数字信号,进行上拉电阻处理。 在IO口悬空时输入端保持低电平状态。

- GPIO_Mode_IPU: 带上拉电阻的输入模式,用于输入数字信号,进行下拉电阻处理。 在IO口悬空时输入端保持在高电平状态。

GPIO输出模式

推挽输出、开漏输出、复用推挽输出、复用开漏输出。

推挽输出(常用):使用P-MOS、N-MOS管,当输出高电平时P-MOS处于开启状态,N-MOS关闭(同一时刻只有一个MOS管导通);输出低电平时P-MOS关闭,N-MOS处于导通状态。注意:输出高电平为VDD值。

开漏输出:只使用N-MOS管,输出高电平时N-MOS关闭,此时输出电平为端口电压值(I/O端口的上拉或者下拉决定);输出低电平时N-MOS导通,输出低电平(接地)。

复用推挽输出:输出高低电平的值由片上外设决定。

复用开漏输出:输出高低电平的值由片上外设决定。
请添加图片描述
例如:


- GPIO_Mode_Out_OD: 开漏输出模式,用于输出数字信号,开漏输出相当于输出信号时接地,而非控制电压。 

- GPIO_Mode_Out_PP: 推挽输出模式,用于输出数字信号,输出信号电平由控制电压和接地电平共同决定。 该模式比较常用, 推挽输出模式下(P-MOS管+N-MOS管),通过设置位设置/清除寄存器或者输出数据寄存器的值,途经P-MOS管和N-MOS管,最终输出到I/O端口。同时,I/O端口的电平也可以通过输入电路进行读取;此时I/O端口的电平一定是输出的电平。

- GPIO_Mode_AF_OD: 开漏复用输出模式,用于复用GPIO,可以将GPIO和外设输出信号共享一个IO口,使CPU可以控制不同的引脚发出相同的信号。 

- GPIO_Mode_AF_PP: 推挽复用输出模式,也用于复用GPIO。和GPIO_Mode_AF_OD相比,不同的是输出信号通过推挽电路发送。常用于实现不同的外设共享一个IO口,并进行数字信号的输入输出。

上下拉电阻

上拉电阻

将一个不确定的电平(高或者低电平)通过一个电阻和电源VCC相连,固定在高电平。
推荐视频:【上拉电阻的通俗解释,你真正知道吗?】 https://www.bilibili.com/video/BV1W34y1579U/?share_source=copy_web&vd_source=2cb045100a1d2262e05f55bab3533d18

下拉电阻

将一个不确定的电平(高或者低电平)通过一个电阻和电源GND相连,固定在低电平。
推荐视频:【下拉电阻的通俗解释,你真正知道吗?】 https://www.bilibili.com/video/BV1ZU4y1Q7eo/?share_source=copy_web&vd_source=2cb045100a1d2262e05f55bab3533d18

参考文章:https://blog.csdn.net/zhuguanlin121/article/details/118489092?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167705219216800222884641%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=167705219216800222884641&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogsobaiduend~default-2-118489092-null-null.blog_rank_default&utm_term=gpio%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E5%9F%BA%E6%9C%AC%E5%8E%9F%E7%90%86&spm=1018.2226.3001.4450

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值