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


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

配置初始化代码


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;
}











转载于:https://my.oschina.net/390871020/blog/659736

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值