使用蓝桥杯CT117E板子
使用STM32标准库文件
从图中可以看出在按键未按下时,引脚为高电平。当按键按下时引脚为低电平。所以在GPIO初始化时使用上拉输入模式。
1.初始化相应引脚
GPIO_InitTypeDef GPIOA_Init_key;
GPIO_InitTypeDef GPIOB_Init_key;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);
GPIOA_Init_key.GPIO_Mode=GPIO_Mode_IPU;
GPIOA_Init_key.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_8;
GPIOA_Init_key.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIOA_Init_key);
GPIOB_Init_key.GPIO_Mode=GPIO_Mode_IPU;
GPIOB_Init_key.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2;
GPIOB_Init_key.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIOB_Init_key);
2.按键检测
所用库函数
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
通过检测引脚电平情况判断是否按下。
可以使用滴答定时器延时消抖。
可以使用滴答定时器延时实现检测长按短按。