单片机/MCUwilliam hill官网
直播中

zzxyyy

10年用户 17经验值
擅长:嵌入式技术 EDA/IC设计
私信 关注
[问答]

Keil莫名出现很多错误,求解!

之前在做mpu的dmp,用的是IAR编译器。由于换了单片机,所以转战了keil,于是准备把dmp相关的.c  .h加入到keil的工程,结果编译出了一堆问题,大部分都是left side of asn-op not an lvalue.以及各种syntax错误。相关的引脚定义什么的我都改过来了,结果依然有一堆这种错误。不知道为什么。
举个例子:
    gyro_bias_body[0] = (long)(((long long)gyro_bias_body[0] * GYRO_SF) >> 30);
    gyro_bias_body[1] = (long)(((long long)gyro_bias_body[1] * GYRO_SF) >> 30);
    gyro_bias_body[2] = (long)(((long long)gyro_bias_body[2] * GYRO_SF) >> 30);

每行都有错误,错误是:syntax error near 'L',  syntax error near ')'
    regs[0] = (unsigned char)((gyro_bias_body[0] >> 24) & 0xFF);
    regs[1] = (unsigned char)((gyro_bias_body[0] >> 16) & 0xFF);
    regs[2] = (unsigned char)((gyro_bias_body[0] >> 8) & 0xFF);

这个的错误是,'>>',bad operand type
    gyro_bias_body[0] = bias[dmp.orient & 3];
    if (dmp.orient & 4)
        gyro_bias_body[0] *= -1;
    gyro_bias_body[1] = bias[(dmp.orient >> 3) & 3];
    if (dmp.orient & 0x20)
        gyro_bias_body[1] *= -1;
    gyro_bias_body[2] = bias[(dmp.orient >> 6) & 3];
    if (dmp.orient & 0x100)
        gyro_bias_body[2] *= -1;

他们的错误就是left side of asn-op not an lvalue.
实在不解!向各位大神求解!感谢!

  • 屏幕快照 2015-05-18 下午8.20.37.png

回帖(5)

李鸿洋

2015-5-19 11:27:20
变量声明的位置问题吧?我之前也是这个问题,最后发现是由于变量的声明没有放到最开始导致。
举报

Aidaohuakai

2015-5-19 12:11:18
楼上正解!所以啊,最好按照ANSI C标准来写,移到哪个编译器都能编译通过!
举报

wono01

2015-5-19 20:14:48
keil支持long long吗?
举报

zzxyyy

2015-5-19 20:15:29
引用: 说的好像真的 发表于 2015-5-19 11:27
变量声明的位置问题吧?我之前也是这个问题,最后发现是由于变量的声明没有放到最开始导致。

放到最开始?你是说#include下面么?
举报

zzxyyy

2015-5-20 10:17:31
引用: wono01 发表于 2015-5-19 20:14
keil支持long long吗?

好像不,后来把longlong改成了long,问题依旧
举报

更多回帖

发帖
×
20
完善资料,
赚取积分