Je regarde à l'oscillo si ça trame, sinon, il faudra peu-être que je force sur TX0 RX0.
Pas super clair :~
La boucle de réception est mal ficelée.
Le remplissage du buffer ne devrait commencer qu'après s'être assuré que le premier caractère était bien celui attendu [ sinon le buffer peut être rempli n'importe comment et jamais tu ne trouveras ton message.
De même l'interprétation ne devrait commencer qu'une fois le terminateur reçu ] ou éventuellement sur hors temps pour sécuriser la liaison.
Edit: je corrige, le terminateur n'est d'ailleurs pas ] mais \n puisque tu envoie une chaine de caractère.