Chinaunix首页 | 论坛 | 博客
  • 博客访问: 588407
  • 博文数量: 165
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1554
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-23 22:57
个人简介

我本仁慈,奈何苍天不许

文章分类

全部博文(165)

文章存档

2018年(1)

2016年(33)

2015年(5)

2014年(34)

2013年(92)

分类: 嵌入式

2014-08-05 17:11:50

用Keil4编译STM32时提示:

..\HANDWARE\KEY\key.c(33): error:  #18: expected a ")"
        if(key_up && (KEY0==0||KEY1==0||WKUP==1))
..\HANDWARE\KEY\key.c(37): error:  #18: expected a ")"
                if(KEY0 == 0)
..\HANDWARE\KEY\key.c(41): error:  #18: expected a ")"
                else if(KEY1 == 0)
..\HANDWARE\KEY\key.c(45): error:  #18: expected a ")"
                else if(WKUP == 1)
..\HANDWARE\KEY\key.c(50): error:  #18: expected a ")"
        else if(KEY0==1&&KEY1==1&&WKUP==0)

但是程序源码:
 if(key_up && (KEY0==0||KEY1==0||WKUP==1))
{
delay_ms(10);
key_up = 0;
if(KEY0 == 0)
{
    return KEY0_PRESS;
}
else if(KEY1 == 0)
{
    return KEY1_PRESS;
}
else if(WKUP == 1)
{
    return WKUP_PRESS;
}
}
检查程序源码,完全没有问题,这就让人很疑惑了,其实仔细检查就能发现程序中调用了几个宏定义,这就去看看宏定义是否正确,检查发现宏定义是这样定义的:
    #define KEY0 GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5);
    #define KEY1 GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_15);
    #define WKUP GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0);
这时因为define这个关键词只是在预处理阶段进行了一个简单的宏替换,而不进行语法检查,所以才会导致上面的问题。只要把宏定义后面的分号去掉就行了。

阅读(5467) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~