&引用;在当前PC 0x74e上未找到源代码行。”;在MPLAB X中使用双精度

&引用;在当前PC 0x74e上未找到源代码行。”;在MPLAB X中使用双精度,c,floating-point,C,Floating Point,需要在PIC24FJ128GB204上进行简单计算的帮助。 使用MPLAB X 5.2,XC16编译器,ICD4 我有一个传感器,它以6个字节返回数据:[temp MSB][temp LSB][CRC][humidityMSB][humidityLSB][CRC] 温度公式(RC=原始计数):T(摄氏度)=-45+175*(RC/(2^16-1)) 通常情况下,我让它正常工作,但不知怎的改变了一些东西,却找不到问题 我的职能: int8_t SHT31_ConvertData( uint8_t

需要在PIC24FJ128GB204上进行简单计算的帮助。 使用MPLAB X 5.2,XC16编译器,ICD4

我有一个传感器,它以6个字节返回数据:[temp MSB][temp LSB][CRC][humidityMSB][humidityLSB][CRC]

温度公式(RC=原始计数):T(摄氏度)=-45+175*(RC/(2^16-1)) 通常情况下,我让它正常工作,但不知怎的改变了一些东西,却找不到问题

我的职能:

int8_t SHT31_ConvertData(  uint8_t MeasurementData[],
                        int16_t * TempResult, 
                        uint8_t * RHResult){
    // converts data from raw counts to temp (deg C) and RH (%)

//    __attribute__((aligned(2))) double TempCelcius = 0;
    double TempCelcius = 0;
    uint16_t TempRaw,RHRaw = {0};
    double RH = 0;

    // combine both bytes to get raw temperature value
    TempRaw = (MeasurementData[0] << 8);
    TempRaw += MeasurementData[1];
    TempCelcius = TempRaw;
    TempCelcius /= 0xFFFF;
    TempCelcius *= 175;
    TempCelcius -= 45;
    TempCelcius *= 100;
    *TempResult = (int)TempCelcius;

    // combine both bytes to get raw relative humidity value
    RHRaw = (MeasurementData[3] << 8);
    RHRaw += MeasurementData[4];
    RH = RHRaw;
    RH /= 0xFFFF;
    RH *= 100;
    *RHResult = RH;

    return 1;
}
int8\u t SHT31\u转换器数据(uint8\u t测量数据[],
int16_t*TempResult,
uint8_t*RHResult){
//将数据从原始计数转换为温度(摄氏度)和相对湿度(%)
//_uuu属性_uuu((对齐(2)))双温度=0;
双温度=0;
uint16_t TempRaw,RHRaw={0};
双相对湿度=0;
//合并两个字节以获得原始温度值

TempRaw=(MeasurementData[0]如何使用此函数?您传递了哪些参数?它们的值是什么?您没有超出数组的界限,或者使用无效指针?请尝试创建一个来向我们展示。此函数是通过指向uint8[6]的指针调用的数组MeasurementData包含两个测量的MSB/LSB和CRC。典型值为:64、40、8a、64、1b、c5。TempResult和RHResult是指向数据应写入位置的指针。我认为我不会超出数组的范围,因为我不会更改它。指针无效:在使用指针之前会发生错误。我将在n一个简单的示例,并添加到问题中。谢谢!
(MeasurementData[0]虽然我不能肯定我所做的是根据最佳实践进行的,但恐怕这部分确实有效。组合MSB和LSB的效果与预期的一样。我认为因为MeasurementData[0]转换为uint16\u t,因为等式的左边部分是uint16\u t?@Mike-您能证实您关于
(MeasurementData[0]的断言吗如何使用此函数?传递哪些参数?它们的值是什么?您没有超出数组的界限,或使用无效指针?请尝试创建一个来向我们展示。此函数是使用指向uint8[6]的指针调用的数组MeasurementData包含两个测量的MSB/LSB和CRC。典型值为:64、40、8a、64、1b、c5。TempResult和RHResult是指向数据应写入位置的指针。我认为我不会超出数组的范围,因为我不会更改它。指针无效:在使用指针之前会发生错误。我将在n一个简单的示例,并添加到问题中。谢谢!
(MeasurementData[0]虽然我不能肯定我所做的是根据最佳实践进行的,但恐怕这部分确实有效。组合MSB和LSB的效果与预期的一样。我认为因为MeasurementData[0]转换为uint16\u t,因为等式的左边部分是uint16\u t?@Mike-您能证实您关于
(MeasurementData[0]的断言吗