When writing low-level drivers, it's a must to read through the datasheet in order to understand how the peripheral works. Even if you're not writing a low-level driver from scratch, it is always a good idea to gain some familiarity with the hardware you'll be working with. The more familiarity you have, the easier it will be to diagnose unexpected behavior, as well as to create efficient solutions.
You can read more about the UART peripheral we're working with in Chapter 34 of the STM RM0410 STM32F76xxx reference manual (USART).
Our first driver will take an extremely simple approach to getting data from the UART and into a queue that can be easily monitored and consumed by any task in the system. By monitoring the receive not empty ( RXNE) bit of the UART peripheral's interrupt status register (ISR), the driver can determine...