Gracias amigo bueno ahora mas tarde pruebo tu codigo haber si funciona. :x
de 3 enteros de 8bits a entero de 32bits ?
uint8_t datos[3];
uint32_t dato32;
dato32 = array[0]<<24 + array[1]<<16 + array[2]<<8;
O lo mismo se aplica a la union...
La forma en que haces esos corrimientos le va a dar 0xEEDDFF00, no el numero que quiere obtener : 0x00EEDDFF
array[3] en ellos con un ciclo for coloque tres valores 0AA, 0xBB y 0xCC, entonces esos valores pasarlos a una variable de tipo float
ya que como son tres valores no puedo usar un entero, y bueno que el valor de float me quede asi: float=AABBCC00
void main()
{
int i, arr[]= {0xaa, 0xbb, 0xcc};
float dato;
int *ptr;
ptr= &dato;
for(i=0 ; i<4; i++)
*ptr++ = arr[i];
delay_ms(100);
while(true);
}void main()
{
int i;
union
{
int arr[3];
float dato;
}var;
for(i=0; i<4; i++)
var.arr[i]= i+10;
delay_ms(100);
while(true);
}De esa manera se carga en el float, los valores cargados en el array