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.

[参考译文] CC1312R:CC1312R:如何启用浮点值打印?

Guru**** 2577385 points
Other Parts Discussed in Thread: CC1312R

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1573569/cc1312r-cc1312r-how-to-enable-floating-point-value-print

器件型号:CC1312R


工具/软件:

大家好、德州仪器 (TI) 工程师

我正在使用 CC1312R Launchpad 调试来自 MPU6050(陀螺仪和加速计)的一些数据。 当处理数据并将其放置在 UART 中以打印 PuTTY 时、不会打印浮点值。

我咨询过以下链接:

TMS320F28379D:如何启用浮点值打印? - C2000 微控制器论坛 — C2000Tm μ︎ 微控制器 — TI E2E 支持论坛

如何在 UART 上打印浮点值 — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

CC1352R:estoy tratando de imprimir un número ó n flotante pero el specificador de formato %f no funciona según lo prevesto。 - Foro de Sub-1GHz - Sub-1GHz - Foros de soporte de TI E2E

CC2652RB:system_snprintf () no puede imprimir flotante en SDK 7.10.1.24 - Foro de Bluetooth - BluetoothRegistered︎ è s - Foros de soporte de TI E2E

他们都没有为我提供解决办法。

有人能指导我解决这个问题吗?

提前感谢您。


CC1312R
SDK simplelink_cc13xx_cc26xx_sdk_7_40_00_77

void *MPU6050Thread(UArg arg0, UArg arg1) {
    char buffer[128];
    UART2_Handle uart;
    int16_t ax_raw, ay_raw, az_raw, gx_raw, gy_raw, gz_raw;
    float Ax, Ay, Az, Gx, Gy, Gz;
    size_t bytesWritten = 0;

    I2C_Params i2cParams;
    I2C_Params_init(&i2cParams);
    i2cParams.bitRate = I2C_400kHz;
    i2c = I2C_open(CONFIG_I2C_0, &i2cParams);

    UART2_Params uartParams;
    UART2_Params_init(&uartParams);
    uartParams.baudRate = 115200;
    uart = UART2_open(CONFIG_UART2_0, &uartParams);

    if (i2c == NULL || uart == NULL) {
        while (1); // Error
    }

    MPU6050_init();


    while (1) {
        
        MPU6050_readRaw(&ax_raw, &ay_raw, &az_raw, &gx_raw, &gy_raw, &gz_raw);

        Ax = ax_raw / ACCEL_SCALE;
        Ay = ay_raw / ACCEL_SCALE;
        Az = az_raw / ACCEL_SCALE;

        Gx = gx_raw / GYRO_SCALE;
        Gy = gy_raw / GYRO_SCALE;
        Gz = gz_raw / GYRO_SCALE;

        bytesWritten = snprintf(buffer, sizeof(buffer),"A: %.2f, %.2f, %.2f | G: %.2f, %.2f, %.2f\r\n",Ax, Ay, Az, Gx, Gy, Gz);
        UART2_write(uart, &buffer, strlen(buffer), &bytesWritten);

        Task_sleep(100 * (1000 / Clock_tickPeriod)); // 1000 ms
    }
}



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

    我从 SDK 中获取 uart2Echo、并对其进行修改、以输出具有 5 个小数点的浮点数。

    代码如下:

    /*
     *  ======== uart2echo.c ========
     */
    #include <stdint.h>
    #include <stddef.h>
    #include <stdio.h>
    
    /* Driver Header files */
    #include <ti/drivers/UART2.h>
    
    /* Driver configuration */
    #include "ti_drivers_config.h"
    
    void *mainThread(void *arg0)
    {
        char strVal[20] = {0};
        UART2_Handle uart;
        UART2_Params uartParams;
        size_t bytesRead;
        size_t bytesWritten = 0;
    
        /* Create a UART where the default read and write mode is BLOCKING */
        UART2_Params_init(&uartParams);
        uartParams.baudRate = 115200;
    
        uart = UART2_open(CONFIG_UART2_0, &uartParams);
    
        if (uart == NULL)
        {
            /* UART2_open() failed */
            while (1) {}
        }
    
        float number = 10.123456789;
    
        sprintf(strVal, "%.5f\r\n", number);
    
        while(1)
        {
            UART2_write(uart, strVal, sizeof(strVal), &bytesWritten);
        }
    }

    我测试了代码、并按预期输出 10.12346。

    BR

    Siri

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

    感谢您发送编修。 但是、我无法成功地执行它、我想知道、“魔法“在哪里?

    我将我的项目切换到另一个编译器。

    根据 uart2echo_CC1312R1_LAUNCHXL_tirtos7_gcc 更改为来更改我的工程
    uart2echo_CC1312R1_LAUNCHXL_tirtos7_ticlang

    它与“ticlang"编译“编译器‘良好的效果。