打印

keil5 编译错误

[复制链接]
1003|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Peter3th|  楼主 | 2017-7-24 22:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include"stm32f10x.h"
#define GPIOA_ODR_A (GPIOA_BASE+0X0C)
#define GPIOA_IDR_A (GPIOA_BASE+0X08)
#define BitBand(Addr,BitNum)  *((volatile unsigned long*)((Addr&0xF000 0000)+0x2000000 + (Addr&0xfffff)*32+BitNum*4))
#define PAO(N) BitBand(GPIOA_ODR_A,N)
int main ()
{
  GPIOA->CRL=0X33333333;
  GPIOA->CRH=0X44444444;
while(1)
{
      PAO(3);  //expected a ')'
}
}

编译的时候在上面对应行出现错误:expected a ‘)’。已尝试却无效的解决办法:1)把宏定义中后的分号;去掉     2)删除options for target中 c/c++中define框内的 STM32F10X_HD
请大家帮忙指点一下该怎么解决?谢谢!

相关帖子

沙发
xyz549040622| | 2017-7-25 09:00 | 只看该作者
本帖最后由 xyz549040622 于 2017-7-25 09:02 编辑

本质上是
*((volatile unsigned long*)((Addr&0xF000 0000)+0x2000000 + (Addr&0xfffff)*32+BitNum*4))
这句出了问题,应该是哪里多了一个括号,你仔细查查。

使用特权

评论回复
板凳
活雷锋yh| | 2017-7-25 09:44 | 只看该作者
前后大括号或者小括号多了或者少了一个

使用特权

评论回复
地板
Peter3th|  楼主 | 2017-7-25 14:42 | 只看该作者
问题已经解决了
是#define BitBand(Addr,BitNum)  *((volatile unsigned long*)((Addr&0xF000 0000)+0x2000000 + (Addr&0xfffff)*32+BitNum*4))
0xF000 0000中间多了一个空格。
谢谢大家!

使用特权

评论回复
5
dirtwillfly| | 2017-7-25 16:25 | 只看该作者
Peter3th 发表于 2017-7-25 14:42
问题已经解决了
是#define BitBand(Addr,BitNum)  *((volatile unsigned long*)((Addr&0xF000 0000)+0x2 ...

使用特权

评论回复
6
junpeng324| | 2017-7-28 20:54 | 只看该作者
一个空格的问题,要仔细点,这种问题多写就会有感觉,一看错误就知道哪错了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝