随想杂谈--一个GPIO控制两个按键的方法

随想杂谈--一个GPIO控制两个按键

最近在一个工程中,受限于单片机管脚不够的原因,不得不使用一个GPIO口控制两个按键,
在这里顺便记录下使用的过程。

说起用一个GPIO口控制两个按键的方法,一般来说有三种:

第一种方法是使用GPIO对应的AD通道,通过电阻分压的方式采集每个按键按下的电平,
理论上只要AD够精准,可以控制无限个按键,使用这种方法的前提是对应的GPIO口需要ADC;
第二种方法是在管脚上加入一个电容,通过检测电容充放电来判断对应的是哪个按键被按下;
第三种方法是通过分时使能GPIO口上下拉电阻,判断对应的是哪个按键被按下,这种方法也是最简单的一种;

本次杂谈中我使用的是第三种方法,对应的电路图如下:

在这里插入图片描述

图中串在两个按键上下的电阻作用为防止两个按键同时按下时电源正负极短路,轻则单片机复位,重则烧坏芯片。

对于上下拉电阻的选择需要注意的是,单片机必须内部带有一路上拉或者下拉,不能两者都没有。如果单片机内
部带有上拉或者下拉的话,则对应部分的上下拉电阻可以取消,上拉电阻的取值必须比下拉电阻的取值小,确保
上下拉电阻同时使能时上拉电阻能正常拉高GPIO电平。

下面为代码思路,以我使用的一款应广PMS150C为例(GPIO带内部上拉):
#define PULL_UP_RESISTOIR		PAPH.4			/*< PA4口上拉使能位    */
#define key_pre					PA.4			</
  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值