Merge pull request #379 from bcostm/dev_nucleos_serial

[NUCLEOs] Add Serial Rx only and TX only modes + 8-bit data as default
pull/381/head
Martin Kojtal 2014-06-27 07:15:34 +01:00
commit 176e0fa9d8
7 changed files with 66 additions and 27 deletions

View File

@ -71,7 +71,15 @@ static void init_usart(serial_t *obj) {
USART_InitStructure.USART_StopBits = obj->stopbits;
USART_InitStructure.USART_Parity = obj->parity;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
if (obj->pin_rx == NC) {
USART_InitStructure.USART_Mode = USART_Mode_Tx;
} else if (obj->pin_tx == NC) {
USART_InitStructure.USART_Mode = USART_Mode_Rx;
} else {
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
}
USART_Init(usart, &USART_InitStructure);
USART_Cmd(usart, ENABLE);
@ -147,10 +155,10 @@ void serial_baud(serial_t *obj, int baudrate) {
}
void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
if (data_bits == 8) {
obj->databits = USART_WordLength_8b;
} else {
if (data_bits == 9) {
obj->databits = USART_WordLength_9b;
} else {
obj->databits = USART_WordLength_8b;
}
switch (parity) {

View File

@ -181,10 +181,10 @@ void serial_baud(serial_t *obj, int baudrate) {
}
void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
if (data_bits == 8) {
obj->databits = UART_WORDLENGTH_8B;
} else {
if (data_bits == 9) {
obj->databits = UART_WORDLENGTH_9B;
} else {
obj->databits = UART_WORDLENGTH_8B;
}
switch (parity) {

View File

@ -74,7 +74,15 @@ static void init_usart(serial_t *obj) {
USART_InitStructure.USART_StopBits = obj->stopbits;
USART_InitStructure.USART_Parity = obj->parity;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
if (obj->pin_rx == NC) {
USART_InitStructure.USART_Mode = USART_Mode_Tx;
} else if (obj->pin_tx == NC) {
USART_InitStructure.USART_Mode = USART_Mode_Rx;
} else {
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
}
USART_Init(usart, &USART_InitStructure);
USART_Cmd(usart, ENABLE);
@ -156,10 +164,10 @@ void serial_baud(serial_t *obj, int baudrate) {
}
void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
if (data_bits == 8) {
obj->databits = USART_WordLength_8b;
} else {
if (data_bits == 9) {
obj->databits = USART_WordLength_9b;
} else {
obj->databits = USART_WordLength_8b;
}
switch (parity) {

View File

@ -82,7 +82,15 @@ static void init_usart(serial_t *obj) {
USART_InitStructure.USART_StopBits = obj->stopbits;
USART_InitStructure.USART_Parity = obj->parity;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
if (obj->pin_rx == NC) {
USART_InitStructure.USART_Mode = USART_Mode_Tx;
} else if (obj->pin_tx == NC) {
USART_InitStructure.USART_Mode = USART_Mode_Rx;
} else {
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
}
USART_Init(usart, &USART_InitStructure);
USART_Cmd(usart, ENABLE);
@ -167,10 +175,10 @@ void serial_baud(serial_t *obj, int baudrate) {
}
void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
if (data_bits == 8) {
obj->databits = USART_WordLength_8b;
} else {
if (data_bits == 9) {
obj->databits = USART_WordLength_9b;
} else {
obj->databits = USART_WordLength_8b;
}
switch (parity) {

View File

@ -73,7 +73,14 @@ static void init_uart(serial_t *obj) {
UartHandle.Init.StopBits = obj->stopbits;
UartHandle.Init.Parity = obj->parity;
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UartHandle.Init.Mode = UART_MODE_TX_RX;
if (obj->pin_rx == NC) {
UartHandle.Init.Mode = UART_MODE_TX;
} else if (obj->pin_tx == NC) {
UartHandle.Init.Mode = UART_MODE_RX;
} else {
UartHandle.Init.Mode = UART_MODE_TX_RX;
}
HAL_UART_Init(&UartHandle);
}
@ -157,10 +164,10 @@ void serial_baud(serial_t *obj, int baudrate) {
}
void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
if (data_bits == 8) {
obj->databits = UART_WORDLENGTH_8B;
} else {
if (data_bits == 9) {
obj->databits = UART_WORDLENGTH_9B;
} else {
obj->databits = UART_WORDLENGTH_8B;
}
switch (parity) {

View File

@ -175,10 +175,10 @@ void serial_baud(serial_t *obj, int baudrate) {
}
void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
if (data_bits == 8) {
obj->databits = UART_WORDLENGTH_8B;
} else {
if (data_bits == 9) {
obj->databits = UART_WORDLENGTH_9B;
} else {
obj->databits = UART_WORDLENGTH_8B;
}
switch (parity) {
@ -303,7 +303,7 @@ int serial_getc(serial_t *obj) {
void serial_putc(serial_t *obj, int c) {
USART_TypeDef *uart = (USART_TypeDef *)(obj->uart);
while (!serial_writable(obj));
uart->TDR = (uint32_t)(c & 0xFF);
uart->TDR = (uint16_t)(c & 0xFF);
}
int serial_readable(serial_t *obj) {

View File

@ -78,7 +78,15 @@ static void init_usart(serial_t *obj) {
USART_InitStructure.USART_StopBits = obj->stopbits;
USART_InitStructure.USART_Parity = obj->parity;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
if (obj->pin_rx == NC) {
USART_InitStructure.USART_Mode = USART_Mode_Tx;
} else if (obj->pin_tx == NC) {
USART_InitStructure.USART_Mode = USART_Mode_Rx;
} else {
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
}
USART_Init(usart, &USART_InitStructure);
USART_Cmd(usart, ENABLE);
@ -180,10 +188,10 @@ void serial_baud(serial_t *obj, int baudrate) {
}
void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
if (data_bits == 8) {
obj->databits = USART_WordLength_8b;
} else {
if (data_bits == 9) {
obj->databits = USART_WordLength_9b;
} else {
obj->databits = USART_WordLength_8b;
}
switch (parity) {