stm32 CubeMX配置按键开关灯
  micz61TEX78l 2023年11月02日 79 0

(文章目录)

前言

本篇文章主要带大家学习如何使用按键进行开关灯的操作。

一、CubeMX配置

cubeMX配置大家可以参考下面文章,这里我只讲需要添加的地方。

传送门 在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 按键GPIO口设置为输入模式,由上面原理图可以知道按键在没有按下的时候电平状态不确定,所以我们应该给按键加一个上拉电阻,在按键没有按下时GPIO电平状态就为高电平,按键按下时GPIO电平状态就为低电平。

二、代码解析

这里我们需要对按键进行消抖,因为当按键按下时会发生抖动,当按键发生抖动的时候去读取按键值这个时候读出的按键值是不准确的。 在这里我们可以延时10ms等按键电平稳定的时候再去读取按键的值,这样就可以得到比较稳定的按键值了。 在这里插入图片描述

void KEY_Scan(void)
{
  if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_3))//读取按键电平状态
  {
    HAL_Delay(10);//延时消抖
    if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_3))
    {
      HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);//按下一次电平反转一次
    }
  }
}

while(1)
{
	KEY_Scan();
}

这里还有一点可以进行优化的地方就是使用到了延时函数,当延时函数在程序中大量使用的时候将会造成程序的卡顿,影响程序的运行效率,这里我们可以使用定时器进行消抖处理,或者将按键的引脚配置为外部中断引脚。

总结

大家觉得按键是不是很简单,看完后可以自己练习一下。按键的操作其实和LED灯的操作都是比较简单的,只不过一个需要设置为输出一个设置为输入。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  micz61TEX78l   2023年11月19日   31   0   0 3c插入图片寄存器
micz61TEX78l