STM32 按键模块化

简介: STM32 按键模块化

前言

本篇文章将继续带大家学习模块化编程,今天主要给大家讲解按键的模块化。

一、按键的原理图

我们可以看到按键分别接到了板子的PE3和PE4引脚。

按键的具体原理这里我就不多讲了,大家可以看我之前的文章。

按键原理

image.png

image.png

二、按键的GPIO配置

driver_key.c文件

#include "driver_key.h"
#include "main.h"
void key_init(void)
{
    // 定义GPIO的结构体变量
    GPIO_InitTypeDef GPIO_InitStruct = {0};
  // 使能按键的GPIO对应的时钟
  KEY1_GPIO_CLK_EN();
  KEY2_GPIO_CLK_EN();
  GPIO_InitStruct.Pin = KEY0_UP_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;       // 设置为输入模式
    GPIO_InitStruct.Pull = GPIO_PULLUP;                 // 默认上拉
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;       // 引脚反转速度设置为快
  // 初始化引脚配置
  HAL_GPIO_Init(Key1_GPIO_Port, &GPIO_InitStruct);
  GPIO_InitStruct.Pin = KEY1_UP_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;       // 设置为输入模式
    GPIO_InitStruct.Pull = GPIO_PULLUP;                 // 默认上拉
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;       // 引脚反转速度设置为快
  // 初始化引脚配置
  HAL_GPIO_Init(Key2_GPIO_Port, &GPIO_InitStruct);
}
uint8_t Key1_Value(void)
{
    if(Key1 == 0)
    {
        HAL_Delay(10);
        if(Key1 == 0)
        {
            return 0;
        }
        else
        {
            return 1;
        }
    }
    return 1;
}
uint8_t Key2_Value(void)
{
    if(Key2 == 0)
    {
        HAL_Delay(10);
        if(Key2 == 0)
        {
            return 0;
        }
        else
        {
            return 1;
        }
    }
    return 1;
}

driver_key.h文件

#ifndef __DRIVER_KEY_H
#define __DRIVER_KEY_H
#include "stm32f1xx_hal.h"
#define Key1_Pin GPIO_PIN_4
#define Key1_GPIO_Port GPIOE
#define Key2_Pin GPIO_PIN_3
#define K2_GPIO_Port GPIOE
#define KEY1_GPIO_CLK_EN()          __HAL_RCC_GPIOE_CLK_ENABLE()
#define KEY2_GPIO_CLK_EN()          __HAL_RCC_GPIOE_CLK_ENABLE()
#define Key1      HAL_GPIO_ReadPin(Key1_GPIO_Port, Key1_Pin)
#define Key2      HAL_GPIO_ReadPin(Key2_GPIO_Port, Key2_Pin)
uint8_t Key1_Value(void);
uint8_t Key2_Value(void);
void key_init(void);
#endif

总结

按键的模块化其实和LED的模块化区别不大主要就是需要主要设置GPIO的模式为输入,然后将引脚设置为上拉。

相关文章
|
9月前
|
芯片
最详细STM32,cubeMX 按键点亮 led
最详细STM32,cubeMX 按键点亮 led
132 0
|
9月前
STM32速成笔记(三)—按键检测
本文介绍了如何利用STM32进行按键检测,先介绍了原理,后面给出了配置步骤和应用例程。此外,本文还叙述了如何利用一个按键单独控制一个LED亮灭,以及如何检测按键长短按。
306 0
STM32速成笔记(三)—按键检测
|
2月前
|
数据安全/隐私保护 芯片
【STM32基础 CubeMX】按键的检测
【STM32基础 CubeMX】按键的检测
No.6 STM32F429IGT6 LED按键检测 按键点灯 (STM32F429/F767/H743)
No.6 STM32F429IGT6 LED按键检测 按键点灯 (STM32F429/F767/H743)
使用STM32CubeMX实现按下按键,电平反转
使用STM32CubeMX实现按下按键,电平反转
112 0
使用STM32CubeMX实现按下按键,电平反转
野火F1开发板STM32案例-外部中断(按键)使用
野火F1开发板STM32案例-外部中断(按键)使用
84 0
|
C语言
STM32矩阵按键
STM32矩阵按键
|
芯片
STM32CubeMX按键模块化 点灯
我们继续讲解 stm32 f103,这篇文章将详细 为大家讲解 如何 使用 按键点亮 RGB 灯。
133 0
蓝桥杯 stm32 按键点灯 CubeMX
从图中我们可以看到有 4个按键,B1 , B2 , B3 , B4。 对应的 GPIO 端口是 PB0 , PB1, PB2 ,PA0。 当按键按下,IO 口读到低电平;按键弹起,IO 口读到高电平。 LED 的原理图,CubeMX 配置,以及代码讲解都在我的上篇文章 里详细讲解了,这 篇文章主要为大家讲解 按键 的使用。 蓝桥杯嵌入式之 LED 闪烁
115 0