USART - универсальный синхронно-асинхронный приёмо-передатчик
RX: Receive Data Input - вход последовательных данных.
TX: Transmit Data Output - выход последовательных данных.
Oversampling techniques - метод избыточной выборки (преддискретизации). Каждый принятый бит данных дискритезируется на некоторое количество выборок (например 16 выборок для STM32F103C8T6). Полученные значения каждой выборки в пределах одного бита сравниваются между собой по определённому алгоритму. В результате делаются выводы: о значении принятого бита, о достоверности этого значения и об уровне шума в линии.
Idle character - пустой символ. Интерпретируется как кадр, где все биты равны "1", в том числе стартовый и стоповые биты.
Break character - символ Break. Интерпретируется как кадр, где все биты равны "0", в том числе стартовый и стоповые биты. По окончании кадра передатчик вставляет 1 или 2 стоповых бита для синхронизации и подтверждения следующего стартового бита.
#define PERIPH_BASE ((uint32_t)0x40000000) /* Peripheral base address in the alias region */
#define APB1PERIPH_BASE PERIPH_BASE
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000)
#define USART2_BASE (APB1PERIPH_BASE + 0x4400)
#define USART3_BASE (APB1PERIPH_BASE + 0x4800)
#define UART4_BASE (APB1PERIPH_BASE + 0x4C00)
#define UART5_BASE (APB1PERIPH_BASE + 0x5000)
#define USART1_BASE (APB2PERIPH_BASE + 0x3800)
#define USART2 ((USART_TypeDef *) USART2_BASE)
#define USART3 ((USART_TypeDef *) USART3_BASE)
#define UART4 ((USART_TypeDef *) UART4_BASE)
#define UART5 ((USART_TypeDef *) UART5_BASE)
#define USART1 ((USART_TypeDef *) USART1_BASE)
typedef struct
{
__IO uint16_t SR;
uint16_t RESERVED0;
__IO uint16_t DR;
uint16_t RESERVED1;
__IO uint16_t BRR;
uint16_t RESERVED2;
__IO uint16_t CR1;
uint16_t RESERVED3;
__IO uint16_t CR2;
uint16_t RESERVED4;
__IO uint16_t CR3;
uint16_t RESERVED5;
__IO uint16_t GTPR;
uint16_t RESERVED6;
} USART_TypeDef;
/****** STM32 specific Interrupt Numbers *****************************/
...
USART1_IRQn = 37, /* USART1 global Interrupt */
USART2_IRQn = 38, /* USART2 global Interrupt */
USART3_IRQn = 39, /* USART3 global Interrupt */
...
UART4_IRQn = 52, /* UART4 global Interrupt */
UART5_IRQn = 53, /* UART5 global Interrupt */
...