c_cpp 将两个浮子挤压成两个uint16_t

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 将两个浮子挤压成两个uint16_t相关的知识,希望对你有一定的参考价值。

void writeRtcLatLng(void)
{
    uint32_t tmp;

    // RTC Backup registers have the first 2 bytes reserved. So we get to use the second half of each.

    // Write lat tp first two backup registers
    tmp = *(uint32_t*)⪫
    rtcRegWrite(RTC_BKP_DR6, tmp >> 16);
    rtcRegWrite(RTC_BKP_DR7, tmp & 0xffff);

    // Read lon from third and fourth backup registers
    tmp = *(uint32_t*)&lng;
    rtcRegWrite(RTC_BKP_DR8, tmp >> 16);
    rtcRegWrite(RTC_BKP_DR9, tmp & 0xffff);

    printf("[readRtcLatLng] wrote to RTC backup registers lat: %f lng: %f\r\n", lat, lng);
}

void readRtcLatLng(void)
{
    uint32_t tmp;

    // RTC Backup registers have the first 2 bytes reserved. So we get to use the second half of each.

    // Read lat from first two backup registers
    tmp = rtcRegRead(RTC_BKP_DR6);
    tmp <<= 16;
    tmp |= rtcRegRead(RTC_BKP_DR7);
    lat = *(float*)&tmp;

    // Read lon from third and fourth backup registers
    tmp = rtcRegRead(RTC_BKP_DR8);
    tmp <<= 16;
    tmp |= rtcRegRead(RTC_BKP_DR9);
    lng = *(float*)&tmp;

    printf("[readRtcLatLng] read from RTC backup registers lat: %f lng: %f\r\n", lat, lng);
}

以上是关于c_cpp 将两个浮子挤压成两个uint16_t的主要内容,如果未能解决你的问题,请参考以下文章

将指向 uint16_t 的指针传递给需要 C 中 uint8_t[] 数组的子例程 - 如何?

将 uint16_t 转换为 char[2] 以通过套接字(unix)发送

防止将 uint64_t 转换为 uint16_t

c_cpp PRINTF uint64_t

Arduino关于长整形数据转换成String类型

c_cpp Ç将浮子保留两位有效数字。ç