Envoi et réception

❎ Écrivez dans l'ordre les fonctions suivantes :

  • void uart_putchar(uint8_t c), qui attend que l'USART1 soit prêt à transmettre quelque chose, puis lui demande de l'envoyer (registres USART1->ISR et USART1->TDR)
  • uint8_t uart_getchar(), qui attend que l'UART ait reçu un caractère puis le retourne (registres USART1->ISR et USART1->RDR)
  • void uart_puts(const char *s), qui fait la même chose que puts sous Linux
  • void uart_gets(char *s, size_t size), qui fait la même chose que fgets sous Linux (sauf pour le EOF, qui n'a pas de sens pour un port série)

Remarques :

  • Testez vos fonctions à chaque étape (= n'attendez pas d'avoir tout écrit pour tester).
  • Si quelque chose ne marche pas, débuggez instruction assembleur par instruction assembleur.
  • En réception, si vous avez une erreur de framing ou d'overrun, déclenchez une boucle sans fin.