找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3739|回复: 0
收起左侧

单片机简易按键处理程序

[复制链接]
ID:752974 发表于 2021-1-20 08:50 | 显示全部楼层 |阅读模式
在论坛里看到很多初学者对按键处理较模糊,这里给大家提供一个简单实用的按键处理函数,函数是在正点原子的例程中修改而来的,这个函数使用在STM32的单片机上,大家在使用时根据硬件电路修改端口即可。
//--------------- get key ---------------------------
//返回键值()
//入口参数:0,不支持连续读键盘;1,支持连续读键盘
//出口参数:0,无按键,其它:键值
//---------------------------------------------------

uint8_t get_key(uint8_t mode)
{
  static uint8_t key_up = 1;//读键条件,1连续读;0不连续读

        if(mode == 1)
                key_up = 1;
        if(key_up&&(((GPIOA->IDR>>3) & 0x0F) != 0x0F))//判断是否有键按下
          {
                 delay_nms(30);           //有键按下,延时去抖
                  key_up = 0;
                  return ((~(GPIOA->IDR>>3)) & 0x0F);  //返回键值
          }
      else if(((GPIOA->IDR>>3) & 0x0F) == 0x0F)   //按键已释放
                  key_up = 1;
      return 0;
}       

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表