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 (registresUSART1->ISR
etUSART1->TDR
)uint8_t uart_getchar()
, qui attend que l'UART ait reçu un caractère puis le retourne (registresUSART1->ISR
etUSART1->RDR
)void uart_puts(const char *s)
, qui fait la même chose que puts sous Linuxvoid uart_gets(char *s, size_t size)
, qui fait la même chose quefgets
sous Linux (sauf pour leEOF
, 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.