jml/ 发表于 2014-3-13 20:26:12

关于STM8按键问题

在下刚刚入门STM8,用的是STM8S105C6,写按键程序的时候出现问题,想请各路大侠帮帮忙,看看该怎样解决
按键的初始化程序如下 
GPIO_Init(GPIOC, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7, GPIO_MODE_IN_FL_NO_IT);
  GPIO_Init(GPIOG, GPIO_PIN_0|GPIO_PIN_1, GPIO_MODE_IN_PU_NO_IT);
  GPIO_Init(GPIOE, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);
 
主程序部分
while(1)
  {
   // LED1(H);
    //LED2(H);
    //GPIO_WriteHigh(GPIOA, GPIO_PIN_3|GPIO_PIN_4);
   //GPIO_WriteLow(GPIOA, GPIO_PIN_3|GPIO_PIN_4); 
    
    BitStatus up;
    BitStatus down;
    BitStatus center;
    BitStatus back;
    BitStatus int_1;
 
    
    up = GPIO_ReadInputPin(GPIOG, GPIO_PIN_0);
    down=GPIO_ReadInputPin(GPIOC, GPIO_PIN_7);
    center=GPIO_ReadInputPin(GPIOC, GPIO_PIN_6);
    back=GPIO_ReadInputPin(GPIOC, GPIO_PIN_5);
    
    int_1 = GPIO_ReadInputPin(GPIOG, GPIO_PIN_1); 
 
     if (up == RESET)  //SET or RESET
      {
        LED1(H);
        LED2(L);
        LED3(L);
        LED4(L);
      }
      if (int_1 == RESET)  //SET or RESET
      {
        LED1(L);
        LED2(H);
        LED3(L);
        LED4(L);
      } 
      if(down==RESET)
      {
        LED1(L);
        LED2(L);
        LED3(H);
        LED4(L);
      }
      if(back==RESET)
      {
        LED1(L);
        LED2(L);
        LED3(L);
        LED4(H);
      }
}
 
问题:
         如果注释掉后面两个if语句,只用PG0,PG1,发现程序正常,可实现LED1和LED2之间的切换。可是加上后面两个if之后,就有问题了,LED3常亮LED4,按键失去功能,该怎样解决。附上原理图

jml/ 发表于 2014-3-13 23:49:19

RE:关于STM8按键问题

终于找到原因了,由于是先用转接板转接再焊在洞洞板上,加上按键的焊接处弄了比较多的飞线,导致按键按下时产生干扰。在程序中加入消抖,就解决了。坑爹,还以为是程序问题,搞了一个下午和晚上。

Darren_52 发表于 2014-4-21 21:54:24

RE:关于STM8按键问题

谢谢,分享OK!

robter 发表于 2018-2-20 09:49:02

最近也在搞按键,学习了
页: [1]
查看完整版本: 关于STM8按键问题