5.1.7.2.2. Functional Requirements
| The system must enable the clock using the RCC register. | 
| The system should allow the usage of different USART peripherals. | 
| The system must ensure that the USART peripheral is enabled by setting the bits in the USART_CR1 register for operation. | 
| The USART module must initialize both the receiver (RX) and transmitter (TX) pins to the input or output configuration. | 
| The USART module must configure pins for alternate functions. | 
| The system must allow the user to choose between USART modes. | 
| The system must be able to choose between types of oversampling. | 
| The system must allow the selection of baud rate for communication. | 
| The system must allow enabling data sending using CR1. | 
| The system must check if the Transmit Data Register is empty and ready to receive a byte for transfer. | 
| The system must allow checking if the data transmission is completed using DR. | 
| The system must allow receiving data using CR1. | 
| The system must allow reception of one byte of data at a time through USART by reading from the data register. | 
| The system must check if the byte of data is available on the data register. | 
| The system must ensure that the transmitted and received data remains uncorrupted. | 
| The USART must synchronize with the system clock or external clock source. | 
| The system should allow simultaneous communication with multiple external devices. | 
| The USART configuration must be configurable through software. |