stm32笔记:GPIO的的配置和操作(2)引脚输入之查询按键


(1)将PB9管脚配置成输入模式

stm32笔记:GPIO的的配置和操作(2)引脚输入之查询按键_第1张图片

配置初始化代码


void KEY_GPIO_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  //输入模式时是不需要对输出速率进行配置的,及时配置也会被编译器忽略
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
  GPIO_Init(GPIOB, &GPIO_InitStructure);
}
简单粗暴的使用方法



if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9) == 0)  //检测USR键是否按下
    {
       Delay_ms(10);//延时 
      if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==0)
       {
        while(GPIO_ReadInputBit(GPIOB,GPIO_Pin_9)==0);   GPIO_SetBits(GPIOC, GPIO_Pin_6);
       } }
else
    {
    
    }

温柔的做法


#define KEY_ON  0
#define KEY_OFF 1

u8 Key_Scan(GPIO_TypeDef* GPIOx,u16 GPIO_Pin)
{
  if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==KEY_ON)
  {
       Delay_ms(10);//延时 
      if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==KEY_ON)
       {
        while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==KEY_ON);//等待释放
        return KEY_ON;
       }
       else
       {
        return KEY_OFF;
       }
    }
   else return KEY_OFF;
}











你可能感兴趣的:(input,read,stm32,GPIO)