Это функции чтения/записи.
Код
void SPIEEPROM_WriteInt(uint32_t addr, uint32_t *ival)
{
SPIEEPROM_Write(addr,sizeof(uint32_t),(uint8_t*) ival);
}
uint32_t SPIEEPROM_ReadInt(uint32_t addr)
{
uint32_t value;
SPIEEPROM_Read(addr, sizeof(uint32_t), (uint8_t*)&value);
return value;
}
void SPIEEPROM_WriteFloat(uint32_t addr, float *fval)
{
SPIEEPROM_Write(addr,sizeof(float),(uint8_t*) fval);
}
float SPIEEPROM_ReadFloat(uint32_t addr)
{
float value;
SPIEEPROM_Read(addr, sizeof(float), (uint8_t*)&value);
return value;
}
А так я тестирую.
Код
uint32_t adr;
if(argument1 == NULL)
UART_SendString(UART0,msg_misarg);
else
{
adr = atoi(argument1);
if(argument2 == NULL) //read operation
{
#ifdef SPI_INT
uint32_t ival = SPIEEPROM_ReadInt(adr);
UART_SendInt(UART0,ival);
#endif
#ifdef SPI_FLOAT
float fval = SPIEEPROM_ReadFloat(adr);
UART_SendFloat(UART0,fval,2);
#endif
}
else //write operation
{
#ifdef SPI_INT
uint32_t ival = atoi(argument2);
SPIEEPROM_WriteInt(adr, &ival);
#endif
#ifdef SPI_FLOAT
float fval = atof(argument2);
SPIEEPROM_WriteFloat(adr, &fval);
#endif
}
}
float пишется-читается прекрасно.
а вот с uint32_t непонятное явление - пишет (или читает?) неправильно.
вот например
запись - чтение
100 - 255
300 - 511
1000 - 1023
Сижу второй день над проблемой не могу понять где собака порылась.
Сообщение отредактировал Jenya7 - Jun 25 2015, 05:44