一、添加key按键模块的文件
新建一个文件先保存为key.c
新建一个文件保存为key.h
将key.c文件加载到工程中去
二、添加代码
在key.c文件里输入#include “key.h”,保存后编译,实现.h文件与环境的关联
在key.h中添加要用到的函数的头文件
读取按键要用到的函数
要添加的头文件
将此头文件添加到key.h文件中去,保存并编译
按键要用到的引脚的定义写到key.h文件中去,并添加按键函数声明
#define KB1 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)
#define KB2 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)
#define KB3 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)
#define KB4 HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)
在key.c中添加两个按键函数的代码,保存并编译
char Key_Scan(void)
{
static int kb1_count = 0, kb2_count = 0, kb3_count = 0, kb4_count = 0;
char key_value = 0;
//key1
if(KB1 == 0)
{
HAL_Delay(10); //去抖
if(KB1 == 0)
{
kb1_count++;
if(kb1_count == 1)
{
key_value = 1;
while(KB1 == GPIO_PIN_RESET); //按键松开效果
}
}
}
else
{
kb1_count = 0;
}
//key2
if(KB2 == 0)
{
HAL_Delay(10); //去抖
if(KB2 == 0)
{
kb2_count++;
if(kb2_count == 1)
{
key_value = 2;
while(KB2 == GPIO_PIN_RESET);
}
}
}
else
{
kb2_count = 0;
}
//key3
if(KB3 == 0)
{
HAL_Delay(10); //È¥¶¶
if(KB3 == 0)
{
kb3_count++;
if(kb3_count == 1)
{
key_value = 3;
while(KB3 == GPIO_PIN_RESET);
}
}
}
else
{
kb3_count = 0;
}
//key4
if(KB4 == 0)
{
HAL_Delay(10); //去抖
if(KB4 == 0)
{
kb4_count++;
if(kb4_count == 1)
{
key_value = 4;
while(KB4 == GPIO_PIN_RESET);
}
}
}
else
{
kb4_count = 0;
}
return key_value;
}
//³¤°´¶Ì°´
char Key_Scan_CD(void)
{
static int kb1_count = 0, kb2_count = 0, kb3_count = 0, kb4_count = 0;
char key_value = 0;
//key1
if(KB1 == 0)
{
HAL_Delay(10); //去抖
if(KB1 == 0)
{
kb1_count++;
if(kb1_count > 70)
{
key_value = 11;
}
}
}
else
{
if(kb1_count >= 1 && kb1_count <=50)
key_value = 1;
kb1_count = 0;
}
//key2
if(KB2 == 0)
{
HAL_Delay(6); //去抖
if(KB2 == 0)
{
kb2_count++;
if(kb2_count == 1)
{
key_value = 2;
while(KB2 == GPIO_PIN_RESET);
}
}
}
else
{
kb2_count = 0;
}
//key3
if(KB3 == 0)
{
HAL_Delay(6); //去抖
if(KB3 == 0)
{
kb3_count++;
if(kb3_count == 1)
{
key_value = 3;
while(KB3 == GPIO_PIN_RESET);
}
}
}
else
{
kb3_count = 0;
}
//key4
if(KB4 == 0)
{
HAL_Delay(6); //去抖
if(KB4 == 0)
{
kb4_count++;
if(kb4_count == 1)
{
key_value = 4;
while(KB4 == GPIO_PIN_RESET);
}
}
}
else
{
kb4_count = 0;
}
return key_value;
}