两个程序
1初始化GPIO
1.1 打开时钟
__HAL_RCC_G{IOA_CLK_ENABLE();
1.2调用GPIO初始化函数
当GPIO采用浮空输入模式
时,STM32的引脚状态是不确定的,此时STM32得到的电平状态完全取决于GPIO外部的电平状态,所以说在GPIO外部的引脚悬空
时,读取该端口的电平状态是个不确定的值。多用于外部按键输入,
由原理图可知默认高电平,按下就是低电平
void key_init(void)
{
GPIO_InitTypeDef gpio_initstruct;
__HAL_RCC_GPIOA_CLK_ENABLE();
gpio_initstruct.Pin = GPIO_Pin_0;//由原理图可知,key1在PA0口
gpio_initstruct.Mode = GPIO_Mode_INPUT;
gpio_initstruct.Pull = GPIO_PULLUP;//由原理图可知默认高电平,按下就是低电平
gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_init(GPIOA,&gpio_initstruct);
}
2按键扫描函数
检测案件是否按下HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)
消抖
再将判断按键是否按下 GPIO_PIN_RESET
如果确定按键按下,等待松开
return 1和0 是为了形成状态位方便主函数执行程序
uint8_t key_scan(void)
{
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET)
{
delay_ms(20);
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET){
return 1;//形成状态位
}
}
return 0;
}