1

我有一个为 PIC18 和 PIC24 编译的代码库。

在为 PIC24 上的新传感器编写驱动程序时,我为 PIC18 重新编译并且压力计算失败:

{
    // Normal operation, valid data
    uint32_t rawPressure = ((ssc_sr_1[0] & 0x3F) << 8) + ssc_sr_2[0];
    filter_pressure_left = (uint16_t)(MIN_PRESSURE_PA + (rawPressure - MIN_PRESSURE_RAW)*(MAX_PRESSURE_PA-MIN_PRESSURE_PA)/(MAX_PRESSURE_RAW-MIN_PRESSURE_RAW));
}

在编译时,会抛出错误i2c.c:546: error: (195) expression syntax(第 546 行是该filter_pressure_left =行)。

我看不出任何语法错误来抛出这个错误,这是由使用 xc16-gcc 编译时没有抛出的支持。

编译器版本:

  • XC16-GCC V1.23
  • XC8 V1.33

要求的附加信息周围使用的值:

DECLARE unsigned char ssc_sr_1[2];
DECLARE unsigned char ssc_sr_2[2];
#define MAX_PRESSURE_PA                 249
#define MIN_PRESSURE_PA                 -249
#define MAX_PRESSURE_RAW                14745   // 90% of 2^14
#define MIN_PRESSURE_RAW                1638    // 10% of 2^14
4

1 回答 1

2

空格空格空格!

将第二行更改为:

filter_pressure_left = (uint16_t)(MIN_PRESSURE_PA + (rawPressure - MIN_PRESSURE_RAW) * (MAX_PRESSURE_PA - MIN_PRESSURE_PA) / (MAX_PRESSURE_RAW - MIN_PRESSURE_RAW));

编译没有错误。

对于将来遇到此问题的人的参考-将您的方程式拆分为多行以准确确定哪个部分失败-在我的情况下(MAX_PRESSURE_PA-MIN_PRESSURE_PA)导致错误并且心不在焉地添加空格并重新编译将其治愈。

于 2016-06-29T09:30:35.650 回答