Type conversion 将float/double写入EEPROM将double/float转换为uint8\t

Type conversion 将float/double写入EEPROM将double/float转换为uint8\t,type-conversion,stm32,Type Conversion,Stm32,您好,我有两个简单的函数将值写入EEPROM,但这不能正常工作。我做错了什么?转换有什么问题吗? 例子 写入输入:1 读取输出:0 写入输入:1.1 读取输出:-1717986944 写入输入:500.03 读取输出:-515396064 #define EEPROM_BASE_ADDRESS 0x08080000UL HAL_StatusTypeDef writeEEPROMByte(uint32_t address, uint8_t data) { HAL_StatusTypeDef

您好,我有两个简单的函数将值写入EEPROM,但这不能正常工作。我做错了什么?转换有什么问题吗? 例子 写入输入:1 读取输出:0

写入输入:1.1 读取输出:-1717986944

写入输入:500.03 读取输出:-515396064

#define EEPROM_BASE_ADDRESS 0x08080000UL

HAL_StatusTypeDef writeEEPROMByte(uint32_t address, uint8_t data) {
  HAL_StatusTypeDef  status;
  address = address + EEPROM_BASE_ADDRESS;
  HAL_FLASHEx_DATAEEPROM_Unlock();  //Unprotect the EEPROM to allow writing
  status = HAL_FLASHEx_DATAEEPROM_Program(TYPEPROGRAMDATA_BYTE, address, data);
  HAL_FLASHEx_DATAEEPROM_Lock();  // Reprotect the EEPROM
  return status;
  }

uint8_t readEEPROMByte(uint32_t address) {
  uint8_t data = 0;
  address = address + EEPROM_BASE_ADDRESS;
  data = *(__IO uint8_t*)address;
  return data;
  }

void saveConfigToEEPROM (uint32_t address, double data)
{
    uint8_t *array;
    array = (uint8_t*)(&data);
    for(int i=0;i<8;i++) //float to array of uint8_t
    {
        writeEEPROMByte(address+i, array[i]);
    }
}

double loadConfigFromEEPROM (uint32_t address)
{
    double value = 0;
    uint8_t data[8];
    for(int i=0;i<8;i++) //float to array of uint8_t
    {
        data[i] = readEEPROMByte(address+i);
    }
    value = *(double *)(&data);
    //memcpy(&value, data, sizeof(value));
    return value;
}
#定义EEPROM_基地址0x08080000UL
HAL_StatusTypeDef WriteePromByte(uint32地址,uint8数据){
HAL_状态类型定义状态;
地址=地址+EEPROM\u基地址;
HAL_flashx_DATAEEPROM_Unlock();//解除EEPROM的保护以允许写入
状态=HAL_闪存X_数据EEPROM_程序(类型程序数据_字节、地址、数据);
HAL_flashx_DATAEEPROM_Lock();//重新保护EEPROM
返回状态;
}
uint8\u t readEEPROMByte(uint32\u t地址){
uint8_t数据=0;
地址=地址+EEPROM\u基地址;
数据=*(\uu IO uint8\u t*)地址;
返回数据;
}
void saveConfigToEEPROM(uint32\u t地址,双数据)
{
uint8_t*阵列;
数组=(uint8_t*)(&data);

对于(int i=0;iNo)您对上一个问题的反馈(请参阅),现在您正在使用相同的代码打开一个新问题?