Estoy intentando guardar algunos valores flotantes en el flash de datos de mi microcontrolador Nuc220 (ARM-M0 32 bit) usando el procedimiento ISP.
FMC->ISPCMD = FMC_ISPCMD_PROGRAM; /* Set ISP Command Code */
FMC->ISPADR = 0x10000; /* Set Target ROM Address. The address must be word alignment. */
FMC->ISPDAT = 22.5; /* Set Data to Program */
FMC->ISPTRG = 0x1; /* Trigger to start ISP procedure */
__ISB(); /* To make sure ISP/CPU be Synchronized */
while(FMC->ISPTRG); /* Waiting for ISP Done */
FMC->ISPCMD = FMC_ISPCMD_READ; /* Set ISP Command Code */
FMC->ISPADR = 0x10000; /* Set Target ROM Address. The address must be word alignment. */
FMC->ISPTRG = 0x1; /* Trigger to start ISP procedure */
__ISB(); /* To make sure ISP/CPU be Synchronized */
while(FMC->ISPTRG); /* Waiting for ISP Done */
dataFloat = (float)(FMC->ISPDAT);
Pero el valor leído es 22.0 en lugar de 22.5, también recibo una advertencia de "conversión implícita a entero" mientras se realiza la compilación. ¿Cómo puedo hacer esto sin error?