TODOPIC

Otros Microcontroladores / Dispositivos programables => Microcontroladores ARM => Mensaje iniciado por: Saaac en 07 de Octubre de 2011, 06:56:47

Título: Estructura de punteros. variable puntero unsigned char pasarle 4 bytes
Publicado por: Saaac en 07 de Octubre de 2011, 06:56:47
Hola a todos,

Nueva duda que se me presenta, tengo las siguientes variable:
Código: [Seleccionar]
typedef struct
{
unsigned char  * pVar;
unsigned char * pVAR_refresh;
unsigned short  num_Var;
}VAR_DS;

VAR_DS Var[25];

/*En una parte del programa cargamos la siguiente variable al puntero*/
Var[0].pVar = var_tmp;
Var[0].pVar_refresh = var_refresh_tmp;
Var[0].num_Var = 100;

unsigned char var_tmp[200];
unsigned char var_refresh_tmp[200];

Mi problema es que necesito meter en la variable Var[0].pVar[0 a 4] un valor de 4 bytes
¿se es ocurre como se podria hacer?
Lo he intentado creando una array bidireccional en var_tmp[200][4] que me compila pero al cargar el programa en el microcontrolador este se queda si hacer nada. la idea era poner en la variable puntero 1 byte de los 4 que tengo que poner en cada bidimension. ¿Como lo veis?

Muchas gracias por vuestra ayuda.
Título: Re: Estructura de punteros. variable puntero unsigned char pasarle 4 bytes
Publicado por: fabianjsm en 07 de Octubre de 2011, 07:39:28
No comprendo muy bien el problema.
Var[0].pVar apunta a un byte, pero si queres tratarlo como si fueran 4 bytes podrías hacerlo con un cast:
Código: C
  1. *((long int *)(Var[0].pVar)) = 0;
Suponiendo que sizeof(long int) = 4). Estarías modificando así todos los campos de la estructura, o destruyéndola si no es lo que buscabas.

Si es un valor de 4 bytes que debe ser distribuido en 4 campos pVar consecutivos sería algo así:

Código: C
  1. VAR_DS *vd;
  2.         for(i=0; i<4; i++) {
  3.                 *vd->pVar = (unsigned char)(cuatro_bytes & 0xFF);
  4.                 cuatro_bytes >>= 8;
  5.         }
Título: Re: Estructura de punteros. variable puntero unsigned char pasarle 4 bytes
Publicado por: Saaac en 08 de Diciembre de 2011, 04:44:13
Hola,

Gracias por la solucion me sirvio para acabr solucionando mi problema, gracias a tu ejemplo.