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.

[参考译文] TM4C123GE6PM:通过 UART 发送浮动传感器读数

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/743882/tm4c123ge6pm-sending-float-sensor-readings-via-uart

器件型号:TM4C123GE6PM

您好!

我有一个 IMU 传感器通过 I2C 向我的 TM4C Launchpad 发送数据。

这些值以浮点格式存储。

TM4C 是否具有可接受浮点参数并通过 UART 发送的本机函数?  

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

    我们在 TivaWare 中没有完全完成的函数、但您可以查看我在这篇文章中建议的函数、了解如何执行此操作: e2e.ti.com/.../2438264
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它没有进入 TivaWare 的原因是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Shai、

    我只是说 TivaWare 中没有'printFloat'函数。 我发布的代码直接位于 TivaWare 中的 SensorLib 示例中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尝试使用以下代码:

    int32_t i32IntegerPart = 0;
    int32_t i32FractionPart = 0;

    //获取新的加速计和陀螺仪读数。
    MPU6050DataAccelGetFloat (&g_sMPU6050Inst、&fAccel[0]、&fAccel[1]、&fAccel[2]);
    MPU6050DataGyroGetFloat (&G) sMPU6050Inst、&fGyro[0]、&fGyro[1]、&fGyro[2]);
    //
    //将浮点环境温度转换为整数部分
    //和分次器件,便于打印。
    //
    i32IntegerPart =(int32_t) fAccel;
    i32FractionPart =(int32_t)(fAccel * 1000.0f);//此行中的错误
    i32FractionPart = i32FractionPart -(i32IntegerPart * 1000);
    if (i32FractionPart < 0)
    {
    i32FractionPart *=-1;
    }
    UARTprintf ("环境%3d.%03d\t"、i32IntegerPart、i32FractionPart); 

    我收到一条错误消息、说:  

    #32表达式必须具有算术类型 main.c /PID 第189行 C/C++问题

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

    您好、Shai、

    确保包含 math.h:

    #include 
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    已添加-仍然是同一条消息...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的坏
    我忘记了"fAccel"是一个数组。
    我更改了:
    i32FractionPart =(int32_t)(fAccel * 1000.0f);
    至:
    i32FractionPart =(int32_t)(fAccel[0]* 1000.0f);

    现在进行编译。
    我将测试它是否起作用。