• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

stm32按键问题

56feb19841ad6883 2018-12-10 浏览量:643

stm32用按键控制led灯,如果k1按键产生高电平,让led1发光二极管亮,k2按键产生的是低电平,让led2发光二极管亮,理论是这样的,但是我的却是k1按下,led1不亮,k2按下,led2亮,k1,k2都按下,led1才会亮,这是为什么呢?


代码应该没问题

int main(void)
{
 LED_GPIO_Config();
 KEY_GPIO_Config();
 
 GPIO_SetBits(GPIOEGPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5);
 while(1)
 {
  if(KEY_Scan(KEY1_GPIO_PORTKEY1_GPIO_PIN) == KEY_ON)
  {
     GPIO_ResetBits(GPIOEGPIO_Pin_4);
  }  
  else if(KEY_Scan(KEY2_GPIO_PORTKEY2_GPIO_PIN) == KEY_OFF)
  {
    GPIO_ResetBits(GPIOEGPIO_Pin_2);

  } 
 }
}

/*****KEY_Scan()函数******/

uint8_t KEY_Scan(GPIO_TypeDef* GPIOxuint16_t GPIO_Pin)

{
 if( GPIO_ReadInputDataBit(GPIOxGPIO_Pin) == KEY_ON )
 {
  while(GPIO_ReadInputDataBit(GPIOxGPIO_Pin) == KEY_ON);
  return KEY_ON;
 }
 else
  return KEY_OFF;
}


换了一个GPIO检测低电平,出现的问题更多了,我都开始怀疑是板子的问题了


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 程序放出来看看 不然神仙也不知道问题答案
    • 发布于 2018-12-10
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:10

  • 看程序、看原理图

    无图无真相

    • 发布于2018-12-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 可能逻辑没梳理好吧,能控制,就是没有啥问题的,重新检查检查代码
    • 发布于2018-12-10
    • 举报
    • 评论 0
    • 0
    • 0

电子WWW 回复了 yhj416606438 :好像懂了 回复

  • 这肯定是你的程序中的配置不对的,逻辑不对的
    • 发布于2018-12-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 这就是代码逻辑问题,你先不要控制两个LED,单独控制一个LED先,能调通再把两个LED的代码结合在一起。
    • 发布于2018-12-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 将main函数后面的那个else if的else去掉就行
    • 发布于2019-01-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个一般都是跟你的代码逻辑问题,要仔细确认你的逻辑控制
    • 发布于2019-01-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 你的控制逻辑有问题的,在if语句那里
    • 发布于2019-01-19
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

stm32按键问题