KEY_Scan() 函数求助

2019-07-20 04:08发布

本人菜鸟一名,看GPIO按键程序里的Key_Scan() 时有不懂的地方:

在这一行:         if (KEY0 == 0)       return KEY0_PRES;
KEY0的定义为     HAL_GPIO_ReadPin(GPIOH,GPIO_PIN_3)

当我查看这个函数的时候,这段有个疑问:

[mw_shl_code=c,true]if((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET)       
  {
    bitstatus = GPIO_PIN_SET;
  }
  else
  {
    bitstatus = GPIO_PIN_RESET;
  }
  return bitstatus;[/mw_shl_code]

当按键按下时,GPIOx->IDR 不为零,GPIO_Pin的值是0x0008,所以它俩AND的话结果不为零。看GPIO_PinState这个enum可以看出GPIO_PIN_RESET的值是0,GPIO_PIN_SET的值是1。
所以当按键按下时,这个函数返回的值应该是1吧?然而在Key_Scan() 里KEY0等于0的时候才会返回KEY0_PRES,不知我是哪里理解错了?

谢谢各位  
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。