pic32 debug char puntero declaración

0

Estoy trabajando con un PIC32MX564F128H en MPLABX 2.35 con pickit3. Estoy tratando de analizar un mensaje de UART. El carácter se recibe correctamente, pero me detengo cuando intento copiar un carácter en un búfer. Esta es la parte en mi bucle principal:

                unsigned char*buffer="efg"; //dummy string
                GetDataBuffer(buffer, 3);

_

  UINT32 GetDataBuffer(unsigned char *buffer, UINT32 max_size)
    {
        UINT32 num_char;
        num_char = 0;

        while(num_char < max_size)
        {
            UINT8 character;
            while(!UARTReceivedDataIsAvailable(UART1));
            character = UARTGetDataByte(UART1);
            if(character == '\r')
                break;
            *buffer = character;  **\PROGRAM STALLS HERE** 
            buffer++;
            num_char++;
        }
        return num_char;
    }

Síntomas:

En el modo de depuración, después de la declaración del puntero char sin firmar: dirección del búfer: 0xA0008010 Valor: Dirección no válida

Después de pasar a GetDataBuffer: dirección del búfer: 0xA00071F8 Valor: 0x9D005ED8 * buffer = 0x65 ("e", en este momento no se escribe). Continuando, el programa se detiene en el punto que se muestra arriba hasta que el depurador se detiene en una ubicación desconocida.

    
pregunta Sams

1 respuesta

3

Está teniendo este problema porque está intentando modificar buffer que definió como puntero a char, o más bien apunta a una cadena literal. No puedes modificar esto. Deberías usar:

unsigned char buffer[]="efg";

en su lugar. Para obtener más información, echa un vistazo a esta publicación: Char array vs Char Pointer en C

    
respondido por el Catsunami

Lea otras preguntas en las etiquetas