你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM8按键问题

[复制链接]
jml/ 提问时间:2014-3-13 20:26 /
在下刚刚入门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,按键失去功能,该怎样解决。附上原理图
QQ截图20140313202358.png
收藏 评论3 发布时间:2014-3-13 20:26

举报

3个回答
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
最近也在搞按键,学习了
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版