Estaria bien que indicaras un poco de contexto, pues si pones ese while "a secas", lo ejecutará O NO (dependiendo de si ha llegado un dato), y ya no volverá a el. O a menos que todo lo que pones (excepto las declaraciones de variables) esté dentro de un while(1). Bueno, he detectado un problema con los punteros, aunque segun estoy viendo, el postfix (++) parece tener prioridad sobre el *.
( *( Receiveddata)++) = ReadUART1();
Yo lo pondria asi, para salir de dudas.
*( Receiveddata++) = ReadUART1();
Y si lo que buscas es almacenar y luego incrementar:
*Receiveddata = ReadUART1();
Receiveddata++;
Por lo demas, como he dicho antes, quiero pensar que todo lo que pones esta dentro de un while(1). Porque piensa, que tu micro ejecuta ordenes a millones por segundo, mientras que a tu micro le llegaran datos pocos por segundo.
Un saludo
PD: Bueno, acabo de leer en el post anterior que quereis un ejemplo con punteros. Pues eso:
char Buf[80];
char * Receiveddata = Buf;
while(TRUE)
{
if(DataRdyUART1())
{
( *( Receiveddata++)) = ReadUART1();
}