This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR2033:错误消息:错误#19:预计数字结束后出现额外文本

Guru**** 2346530 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1214057/msp430fr2033-error-message-error-19-extra-text-after-expected-end-of-number

器件型号:MSP430FR2033

您好!

我正在努力理解并解决我所面临的问题。 我使用传感器测量压力。 有2个公式计算该数据、以便获取该数据。 一个方程是一个传递函数、它获取原始传感器数据并将其转换为煮熟的传感器数据、另一个方程使用另一个方程的输出来计算压力数据。 这些是我的公式:

OUTPUT_P0 =((OUTPUT_MAX - OUTPUT_MIN)/(HUMIDITY_MAX_001BA - HUMIDITY_MIN_001BA))*(P0 - HUMIDITY_MIN_001BA)+ OUTPUT_MIN;
Press0 = 1.0 *(((output_p0 - output_min)*(pression_MAX_001BA - pression_min_001BA))/(output_max - output_min)+ pression_min_001BA;

我收到此消息: 错误#19:预期结束编号后附加文本。 公式编写正确。 定义变量。 是否有人能帮助我了解出了什么问题以及如何解决?

谢谢大家

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    缺少是定义所有这些符号的位置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这些变量是全局变量。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您能否也分享有关如何定义这些全局变量的代码?

    此致、

    现金 Hao

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    全局变量位于顶部(在循环之外)、它们由"#define"定义。 如下所示:


    #define OUTPUT_MIN (666)
    #define OUTPUT_MAX (399A)
    #define PRESSURE_MIN_001BA (0)
    #define PRESSURE_MAX_001BA (14.5038)
    #define PRESSURE_MIN_400MD (-5.80151)
    #define PRESSURE_MAX_400MD (5.80151)
    
    
    P0 = i2cReadPressureHW001BA();
    
    output_P0 = ((OUTPUT_MAX - OUTPUT_MIN)/(PRESSURE_MAX_001BA - PRESSURE_MIN_001BA))*(P0 - PRESSURE_MIN_001BA)+OUTPUT_MIN;
    Press0 = 1.0 * (((P0 - OUTPUT_MIN)*(PRESSURE_MAX_001BA - PRESSURE_MIN_001BA))/(OUTPUT_MAX - OUTPUT_MIN)) + PRESSURE_MIN_001BA;
           

    这是我的代码的编写方式  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    OUTPUT_MAX 为(399A)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它是十六进制的。 OUTPUT_MIN 和 OUTPUT_MAX 为十六进制。 因此、十进制的399A 为14、746、666为1638。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您需要告诉编译器:

    0x399A

    否则、它怎么会知道?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不敢相信这是问题所在。 我更改了最小值/最大值、问题得到了解决。 非常感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    真正的微妙的数字是"666"数字,因为编译器会安静地接受它作为一个 Base10数字。

    来自 Harbison 和 Steele:

    以下是用于确定整数常量的基数的规则:

    1.如果整数常量以字母0x 或0x 开头,则表示为十六进制符号。

    2.否则,如果它以数字0开始,那么它是八进制表示法*。

    3.否则为十进制表示法。

    *[如果您出于格式原因将0放在数字前面,这确实会使您感到困惑]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我会记住这一点、但这些规则是合理的。