27 #include <libopencm3/stm32/usart.h> 33 #define USART_PERIPHERALS_NB 3 44 static const bool even_parity_lut[256] = {
true,
false,
false,
true,
false,
true,
true,
false,
false,
true,
true,
false,
true,
false,
false,
true,
false,
true,
true,
false,
true,
false,
false,
true,
true,
false,
false,
true,
false,
true,
true,
false,
false,
true,
true,
false,
true,
false,
false,
true,
true,
false,
false,
true,
false,
true,
true,
false,
true,
false,
false,
true,
false,
true,
true,
false,
false,
true,
true,
false,
true,
false,
false,
true,
false,
true,
true,
false,
true,
false,
false,
true,
true,
false,
false,
true,
false,
true,
true,
false,
true,
false,
false,
true,
false,
true,
true,
false,
false,
true,
true,
false,
true,
false,
false,
true,
true,
false,
false,
true,
false,
true,
true,
false,
false,
true,
true,
false,
true,
false,
false,
true,
false,
true,
true,
false,
true,
false,
false,
true,
true,
false,
false,
true,
false,
true,
true,
false,
false,
true,
true,
false,
true,
false,
false,
true,
true,
false,
false,
true,
false,
true,
true,
false,
true,
false,
false,
true,
false,
true,
true,
false,
false,
true,
true,
false,
true,
false,
false,
true,
true,
false,
false,
true,
false,
true,
true,
false,
false,
true,
true,
false,
true,
false,
false,
true,
false,
true,
true,
false,
true,
false,
false,
true,
true,
false,
false,
true,
false,
true,
true,
false,
true,
false,
false,
true,
false,
true,
true,
false,
false,
true,
true,
false,
true,
false,
false,
true,
false,
true,
true,
false,
true,
false,
false,
true,
true,
false,
false,
true,
false,
true,
true,
false,
false,
true,
true,
false,
true,
false,
false,
true,
true,
false,
false,
true,
false,
true,
true,
false,
true,
false,
false,
true,
false,
true,
true,
false,
false,
true,
true,
false,
true,
false,
false,
true, };
79 if (databits<5 || databits>8) {
91 usart_set_databits(usart, 9);
93 usart_set_databits(usart, 8);
95 usart_set_parity(usart, USART_PARITY_NONE);
109 uint16_t output = data;
132 usart_send(usart, output);
143 uint16_t input = usart_recv(usart);
void usart_enhanced_send(uint32_t usart, uint8_t data)
send data over the enhanced USART using the configuration
#define USART_PERIPHERALS_NB
number of available USART peripherals
usart_enhanced_parity_t
enhanced USART setting for the additional parity bit
static uint8_t usart_enhanced_id(uint32_t usart)
get index of corresponding enhanced USART configurations
static enum usart_enhanced_parity_t usart_enhanced_parity[USART_PERIPHERALS_NB]
configured enhanced USART parity
bool usart_enhanced_config(uint32_t usart, uint8_t databits, enum usart_enhanced_parity_t parity)
configure enhanced USART
uint8_t usart_enhanced_recv(uint32_t usart)
receive data over the enhanced USART using the configuration
static const bool even_parity_lut[256]
know if there is an even number of 1's in a integer
static uint8_t usart_enhanced_databits[USART_PERIPHERALS_NB]
configured enhanced USART word size
bool usart_enhanced_parity_error(uint32_t usart)
get the parity status of the received data
static bool usart_enhanced_parity_errors[USART_PERIPHERALS_NB]
last enhanced USART parity error status
library for enhanced USART communication (API)