Corrupción de datos al usar servicios de cola RTOS

1

Estoy intentando crear una tarea del controlador de acceso para mostrar los datos del sensor en la pantalla a través de UART. Los atributos se definen en la estructura de la siguiente manera,

typedef struct Peripheral_data
{
    volatile char data[5];
    char Source[15];
    char String[5];
    char Nextline[3];
}PeriData;
/****************************************************************************************************************

 An array of structures can be declared and initilized according to the need.

 ****************************************************************************************************************/
static PeriData Peripheral[2] =
{
        { "", "TMPSEN", "Temp:", "\r\n"},

        { "", "Light_Sensor", "Lumos", "\r\n"}

};

Pero al enviar a través de la cola, Source[0] de Peripheral[0] está cambiando a

  

\ 0

de

  

T

Estoy adjuntando capturas de pantalla como referencia.

Captura de pantalla 1:             Esta imagen muestra la iniciación de la estructura al principio.

Captura de pantalla 2:             Esta imagen muestra los datos presentes en la variable Fuente para la estructura uno. Aquí los datos indexados por el 0 en la variable Fuente son T. Pero automáticamente, después de enviarlos a través de la cola, la Fuente [0] para la primera estructura se convierte en cero señor. Pero a veces esto sucede antes de enviar también por la cola.

Podría alguien sugerirme cuál podría ser el problema aquí. Además, desarrollé este código, hace aproximadamente un mes y se ejecutó sin problemas en el mismo tablero. El chip que estoy usando es lpc 1768.

Pero cuando intenté ejecutar el mismo código ahora, surge el problema mencionado anteriormente.

    
pregunta vicky elango

1 respuesta

3

La matriz de caracteres 'data' tiene una longitud de 5 caracteres. Sin embargo, parece que intentó almacenar un entero completo en él (65519 en la segunda captura de pantalla). Una vez que incluyes el carácter '\ 0' para el final de la cadena, obtienes 6 caracteres. Este sexto carácter es probablemente el que se escribió al principio del segundo campo.

    
respondido por el Edesign

Lea otras preguntas en las etiquetas