
程序设计
大约 1 分钟STM32开发环境介绍
修改key.c
#include "key.h"
uint8_t key_scan(void)
{
static uint8_t key_up = 1;//按键状态变量
uint8_t keyval = 0;//按键值变量
if(key_up && (KEY0 == 0||KEY1 == 0||KEY2 == 0))
{
HAL_Delay(10);//去抖
key_up = 0;//按键被按下
if(KEY0 == 0)
keyval = KEY0_PRES;
if(KEY1 == 0)
keyval = KEY1_PRES;
if(KEY2 == 0)
keyval = KEY2_PRES;
}
if(KEY0 == 1&&KEY1 == 1&&KEY2 == 1)
{
key_up = 1;//按键抬起
}
return keyval;//返回键值
}
修改key.h
#include "main.h"
#define KEY0 HAL_GPIO_ReadPin(KEY0_GPIO_Port, KEY0_Pin)
#define KEY1 HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin)
#define KEY2 HAL_GPIO_ReadPin(KEY2_GPIO_Port, KEY2_Pin)
#define KEY0_PRES 1 /* KEY0 按下 */
#define KEY1_PRES 2 /* KEY1 按下 */
#define KEY2_PRES 3 /* KEY2 按下 */
uint8_t key_scan(void);
修改main.c
在main.c中添加头文件
#include "KEY/key.h"
在主函数中调用按键扫描函数
key = key_scan();
if(key == 1)
{
hint();
printf("1\r\n");
}
if(key == 2)
{
hint();
printf("2\r\n");
}
if(key == 3)
{
hint();
printf("3\r\n");
}