STM32 按键模块化

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

文章目录


前言

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

一、按键的原理图

我们可以看到按键分别接到了板子的PE3和PE4引脚。
按键的具体原理这里我就不多讲了大家可以看我之前的文章。
按键原理
在这里插入图片描述

在这里插入图片描述

二、按键的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的模式为输入然后将引脚设置为上拉。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6