ccs按键按下没反应


#include "Black_All.h"

void main(void)
{

    Init();
    P1REN|=BIT1;
    while(1){
       if( KEY0_STATE()==0)
       {
           LED0_STATE(1);
       }
       else
           LED0_STATE(0);
    }
    return 0;

}

int KEY0_STATE()
{
    int i;
    if(P1IN & BIT1)
    {
      for(i=0;i<12000;i++); // 延时消抖
      if(P1IN & BIT1)
      {
          return 0;
      }
    }
    return 1;
}

按键一直接受不到数据,不知道是什么原因

怎么判断没收到数据呢?

你多刷新几次

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7500983
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:关于CCS不能正确编译代码的问题
  • 除此之外, 这篇博客: CC与CC++中&的区别与使用中的 作用对象是不同的。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    如果它是地址,就在它后边用 ->,如果它不是地址,就在它后边就用 .

    /* 线性表初始化*/
    int InitList(SqList *L)
    {
      L->elem=(char*)malloc(LIST_INIT_SIZE*sizeof(char));
      if(!L->elem)
        exit(OVERFLOW);
      L->length=0;
      L->listsize=0;
      return 0;
    }
    
    

    例如:

    #include <stdio.h>
    #include <string.h>
    
    typedef struct Person
    {
      char name[20];
      int age;
    }Per;
    
    void test(Per* p)
    {
      char* p = "Tom";
      memcpy(p->name, p, strlen(p));  //P是一个结构体指针,因此使用“结构体指针名->成员变量名”来引用变量
      p->age = 20;
    }
    
    int main()
    {
      Per p;
      memset(p, 0, sizeof(Per));
      test(&tt);
      printf("Name:%s\n", p.name);    //p是个结构体变量,因此使用 “结构体名.成员变量” 来引用变量
      printf("Age:%d\n",p.age);
      return 0;
    }

     

  • 以下回答来自chatgpt:

    解决方案:

    1. 检查硬件连接: 确保按键正确连接到正确的引脚上,并且引脚与MCU之间没有松动或其他连接问题。

    2. 确认硬件配置: 确保你在CCS中正确配置了引脚和中断的设置。检查是否有其他的引脚配置冲突。

    3. 检查按键状态: 可以使用示波器或逻辑分析仪来确认按键是否正常工作,以及按键是否按下时引脚的状态有所改变。

    4. 检查中断设置: 如果你使用了中断来处理按键事件,检查中断设置是否正确。确保中断向量表是否正确、中断优先级是否正确设置以及中断处理函数是否正确实现。

    5. 检查软件代码: 检查你的软件代码,确认是否正确处理了按键事件。可以使用调试工具来单步调试代码,并检查按键事件处理的逻辑。

    6. 确认软硬件兼容性: 确保你使用的硬件和CCS版本是兼容的。有时候一些老版本的CCS可能不支持最新的硬件。

    如果以上步骤都没有解决问题,那么可能是硬件故障或CCS本身的问题。你可以尝试更新CCS版本,或者联系厂商的技术支持来获取更进一步的帮助。

    希望以上解决方案对您有所帮助,如有任何问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^