stm32 CubeMX配置按键开关灯

举报
yd_274589494 发表于 2023/07/22 09:47:20 2023/07/22
【摘要】 @TOC 前言本篇文章主要带大家学习如何使用按键进行开关灯的操作。 一、CubeMX配置cubeMX配置大家可以参考下面文章,这里我只讲需要添加的地方。传送门按键GPIO口设置为输入模式,由上面原理图可以知道按键在没有按下的时候电平状态不确定,所以我们应该给按键加一个上拉电阻,在按键没有按下时GPIO电平状态就为高电平,按键按下时GPIO电平状态就为低电平。 二、代码解析这里我们需要对按键进...

@TOC

前言

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

一、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@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。