赞
踩
前面我们配置了LED模块,本节我们学习配置按键模块。
分析:
由PB0-PB2,PA0分别检测B1-B4按键的状态
注:RCC的配置是不可少的哦,不记得的可以参看上一节
此处也初始化了LED作为测试显示。
IO配置如下:
PB0-PB3、PA0为输入模式,无需设置其他参数
工程生成方法上节以及说明了┗|`O′|┛ 嗷~~
本例程,我们仍将代码放在function文件中
1、按键检测函数(在此我要声明一下,本人测试了很多次。即使不使用消抖,按键也没有出现问题,但保险起见可以使用消抖哈)
uint8_t KEY_Scan(uint8_t mode)
{
static uint8_t flag=1;
if(mode) flag = 1;
if(flag &&(KEY_B1 == 0 || KEY_B2 == 0 || KEY_B3 == 0 || KEY_B4== 0 ))
{
HAL_Delay(10);
flag = 0;
if (KEY_B1 == 0) return B1_Press;
else if (KEY_B2 == 0) return B2_Press;
else if (KEY_B3 == 0) return B3_Press;
else if (KEY_B4 == 0) return B4_Press;
}else if(KEY_B1 == KEY_B2 == KEY_B3 == KEY_B4 == 1) flag = 1;
return 0;
}
此函数借鉴于正点原子的按键处理函数,参数为1是支持连按,参数为0是不支持连按
#define KEY_B1 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)
#define KEY_B2 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)
#define KEY_B3 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)
#define KEY_B4 HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)
#define B1_Press 1
#define B2_Press 2
#define B3_Press 3
#define B4_Press 4
2、验证代码
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_8
|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_RESET);
KEY = KEY_Scan(0); if(KEY) { if(KEY == B1_Press) { HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8|GPIO_PIN_9); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_RESET); } else if(KEY == B2_Press) { HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_10|GPIO_PIN_11); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_RESET); } else if(KEY == B3_Press) { HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_12|GPIO_PIN_13); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_RESET); } else if(KEY == B4_Press) { HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_14|GPIO_PIN_15); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_RESET); } }
以上就是按键的配置以及测试代码。
骚年、点个赞再走吧!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。