STM32F1 学习笔记之 GPIO输入

一、GPIO的四种输入模式

1、上拉输入(GPIO_Mode_IPU)CNF[1:0](10)  MODE[1:0](00)

上拉输入,就是信号进入芯片后被内部一个上拉电阻上拉,再经过施密特触发器转换为0、1信号,因此,复位后该引脚电平为高电平。(亦可理解为按下按键后输入高电平)

2、下拉输入(GPIO_Mode_IPD)CNF[1:0](10)  MODE[1:0](00)

下拉输入,就是信号进入芯片后被内部的一个下拉电阻下拉,再经过施密特触发器转化为0、1信号,因此,复位后该引脚电平为低电平。(亦可理解为按下按键后输入低电平)

3、模拟输入(GPIO_Mode_AIN)CNF[1:0](00)  MODE[1:0](00)

信号进入芯片后不经过上拉电阻或者下拉电阻,也不经过施密特触发器,经由另一线路把电压信号传到片上相对应的外设模块,例如,通常是ADC模块,然后由ADC采集电压信号。因此,可以将这种方式理解为模拟输入的信号是未经过处理的信号,是“原味”信号。

4、浮空输入(GPIO_Mode_IN_FLOAITING)CNF[1:0](01)  MODE[1:0](00)

信号进入芯片内部后,既不经过上拉电阻也不经过上拉电阻,只经过由施密特触发器输入。如果配置成该模式,用电压表测量其引脚电压为1V左右,是个不确定的值。由于其输入阻抗比较大,所以一般这种模式用于标准通信协议,如I2C、USART等。

二、应用

1、原理图:

声明:参考普中科技STM32F1开发板

在这里可以看到,KEY_UP按键是高电平有效的,即当按下该按键时,GPIO读到高电平。KEY1/2/3是低电平有效的,即当按下该按键时,GPIO读到低电平。而且外部电路都没有上下拉电阻。所以,需要在STM32内部配置上下拉。上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。下拉同理,也是将不确定的信号通过一个电阻钳位在低电平。

2、配置程序如下:


3、注意事项:

按键的应用还需要注意消抖。

经典消抖示意图:

按键消抖通常处理:当检测到按键有效电平后,延时5~10ms,再次判断电平是否有效。

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值