Cómo evitar los valores de basura recibidos en la comunicación UART

1

Soy nuevo en la programación incrustada. Estoy haciendo una comunicación UART en PIC32MX795F512L MCU. De alguna manera, he logrado transmitir y recibir datos pero no puedo recibir una cadena completa.

Estoy haciendo algo como esto:

char Rx[5] ;                      //variable to store rx data
int i;
for(i=0;i<=4;i++)  
{
   while(!DataRdyUART1());       //This check if data is ready to be received
   Rx[i] = getcUART1();         //This get one character from UART

 }
 putsUART1(Rx);              //Putting all the Rx data on UART

Pero lo que sucede es que si escribo 12345 entonces obtengo 123452345&+ tomando sus últimos valores. De nuevo, si escribo asdfg , obtengo asdfg2345&+ . Después del quinto carácter, se muestran algunos valores de basura.

Esto no debería suceder. No sé por qué está tomando 2345&+ . ¿Cómo puedo eliminar esto. Por favor ayuda. Gracias.!

    
pregunta user007

1 respuesta

2

La cadena debe estar terminada en cero para que la función de envío, putsUART1 , sepa cuándo se ha llegado al final. Así que haz que tu matriz sea un carácter más grande y agrega un nulo (cero) al final.

Algo como esto:

char Rx[6] ;                      //variable to store rx data
int i;
for(i=0;i<=4;i++)  
{
   while(!DataRdyUART1());       //This check if data is ready to be received
   Rx[i] = getcUART1();         //This get one character from UART

 }
Rx[5] = 0;                  // add null terminator
putsUART1(Rx);              //Putting all the Rx data on UART
    
respondido por el Roger Rowland

Lea otras preguntas en las etiquetas