mbed w/ spi bug fig

Dependents:   display-puck

Fork of mbed-src by mbed official

Revision:
242:7074e42da0b2
Parent:
227:7bd0639b8911
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/serial_api.c	Thu Jun 26 10:30:09 2014 +0100
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/serial_api.c	Fri Jun 27 07:30:09 2014 +0100
@@ -78,7 +78,15 @@
     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_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
-    if (data_bits == 8) {
+    if (data_bits == 9) {
+        obj->databits = USART_WordLength_9b;
+    } else {
         obj->databits = USART_WordLength_8b;
-    } else {
-        obj->databits = USART_WordLength_9b;
     }
 
     switch (parity) {