Team DIANA / mbed-src

Dependents:   MX106-finaltest

Fork of mbed-src by mbed official

Revision:
630:825f75ca301e
Parent:
469:fc4922e0c183
diff -r 1806c2edb763 -r 825f75ca301e targets/hal/TARGET_STM/TARGET_STM32F0/serial_api.c
--- a/targets/hal/TARGET_STM/TARGET_STM32F0/serial_api.c	Mon Sep 28 10:30:09 2015 +0100
+++ b/targets/hal/TARGET_STM/TARGET_STM32F0/serial_api.c	Mon Sep 28 10:45:10 2015 +0100
@@ -1,6 +1,6 @@
 /* mbed Microcontroller Library
  *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
+ * Copyright (c) 2015, STMicroelectronics
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,6 +47,11 @@
 
 static uint32_t serial_irq_ids[UART_NUM] = {0, 0};
 
+#elif defined (TARGET_STM32F031K6)
+#define UART_NUM (1)
+
+static uint32_t serial_irq_ids[UART_NUM] = {0};
+
 #else
 #define UART_NUM (4)
 
@@ -61,8 +66,7 @@
 int stdio_uart_inited = 0;
 serial_t stdio_uart;
 
-static void init_uart(serial_t *obj)
-{
+static void init_uart(serial_t *obj) {
     UartHandle.Instance = (USART_TypeDef *)(obj->uart);
 
     UartHandle.Init.BaudRate   = obj->baudrate;
@@ -86,8 +90,7 @@
     HAL_UART_Init(&UartHandle);
 }
 
-void serial_init(serial_t *obj, PinName tx, PinName rx)
-{
+void serial_init(serial_t *obj, PinName tx, PinName rx) {
     // Determine the UART to use (UART_1, UART_2, ...)
     UARTName uart_tx = (UARTName)pinmap_peripheral(tx, PinMap_UART_TX);
     UARTName uart_rx = (UARTName)pinmap_peripheral(rx, PinMap_UART_RX);
@@ -102,10 +105,12 @@
         obj->index = 0;
     }
 
+#if defined USART2_BASE
     if (obj->uart == UART_2) {
         __USART2_CLK_ENABLE();
         obj->index = 1;
     }
+#endif
 
 #if defined USART3_BASE
     if (obj->uart == UART_3) {
@@ -177,8 +182,7 @@
     }
 }
 
-void serial_free(serial_t *obj)
-{
+void serial_free(serial_t *obj) {
     // Reset UART and disable clock
     if (obj->uart == UART_1) {
         __USART1_FORCE_RESET();
@@ -186,11 +190,13 @@
         __USART1_CLK_DISABLE();
     }
 
+#if defined(USART2_BASE)
     if (obj->uart == UART_2) {
         __USART2_FORCE_RESET();
         __USART2_RELEASE_RESET();
         __USART2_CLK_DISABLE();
     }
+#endif
 
 #if defined USART3_BASE
     if (obj->uart == UART_3) {
@@ -248,14 +254,12 @@
     serial_irq_ids[obj->index] = 0;
 }
 
-void serial_baud(serial_t *obj, int baudrate)
-{
+void serial_baud(serial_t *obj, int baudrate) {
     obj->baudrate = baudrate;
     init_uart(obj);
 }
 
-void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits)
-{
+void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
     if (data_bits == 9) {
         obj->databits = UART_WORDLENGTH_9B;
     } else {
@@ -289,8 +293,7 @@
  * INTERRUPTS HANDLING
  ******************************************************************************/
 
-static void uart_irq(UARTName name, int id)
-{
+static void uart_irq(UARTName name, int id) {
     UartHandle.Instance = (USART_TypeDef *)name;
     if (serial_irq_ids[id] != 0) {
         if (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_TC) != RESET) {
@@ -304,66 +307,58 @@
     }
 }
 
-static void uart1_irq(void)
-{
+static void uart1_irq(void) {
     uart_irq(UART_1, 0);
 }
 
-static void uart2_irq(void)
-{
+#if defined(USART2_BASE)
+static void uart2_irq(void) {
     uart_irq(UART_2, 1);
 }
+#endif
 
 #if defined USART3_BASE
-static void uart3_irq(void)
-{
+static void uart3_irq(void) {
     uart_irq(UART_3, 2);
 }
 #endif
 
 #if defined USART4_BASE
-static void uart4_irq(void)
-{
+static void uart4_irq(void) {
     uart_irq(UART_4, 3);
 }
 #endif
 
 #if defined USART5_BASE
-static void uart5_irq(void)
-{
+static void uart5_irq(void) {
     uart_irq(UART_5, 4);
 }
 #endif
 
 #if defined USART6_BASE
-static void uart6_irq(void)
-{
+static void uart6_irq(void) {
     uart_irq(UART_6, 5);
 }
 #endif
 
 #if defined USART7_BASE
-static void uart7_irq(void)
-{
+static void uart7_irq(void) {
     uart_irq(UART_7, 6);
 }
 #endif
 
 #if defined USART8_BASE
-static void uart8_irq(void)
-{
+static void uart8_irq(void) {
     uart_irq(UART_8, 7);
 }
 #endif
 
-void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id)
-{
+void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id) {
     irq_handler = handler;
     serial_irq_ids[obj->index] = id;
 }
 
-void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable)
-{
+void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable) {
     IRQn_Type irq_n = (IRQn_Type)0;
     uint32_t vector = 0;
 
@@ -374,10 +369,12 @@
         vector = (uint32_t)&uart1_irq;
     }
 
+#if defined(USART2_BASE)
     if (obj->uart == UART_2) {
         irq_n = USART2_IRQn;
         vector = (uint32_t)&uart2_irq;
     }
+#endif
 
 #if defined (TARGET_STM32F091RC)
     if (obj->uart == UART_3) {
@@ -413,16 +410,20 @@
 #elif defined (TARGET_STM32F030R8) || defined (TARGET_STM32F051R8)
 
 #else
+#if defined(USART3_BASE)
     if (obj->uart == UART_3) {
         irq_n = USART3_4_IRQn;
         vector = (uint32_t)&uart3_irq;
     }
+#endif
 
+#if defined(USART4_BASE)
     if (obj->uart == UART_4) {
         irq_n = USART3_4_IRQn;
         vector = (uint32_t)&uart4_irq;
     }
 #endif
+#endif
 
     if (enable) {
 
@@ -458,22 +459,19 @@
  * READ/WRITE
  ******************************************************************************/
 
-int serial_getc(serial_t *obj)
-{
+int serial_getc(serial_t *obj) {
     USART_TypeDef *uart = (USART_TypeDef *)(obj->uart);
     while (!serial_readable(obj));
     return (int)(uart->RDR & (uint16_t)0xFF);
 }
 
-void serial_putc(serial_t *obj, int c)
-{
+void serial_putc(serial_t *obj, int c) {
     USART_TypeDef *uart = (USART_TypeDef *)(obj->uart);
     while (!serial_writable(obj));
     uart->TDR = (uint32_t)(c & (uint16_t)0xFF);
 }
 
-int serial_readable(serial_t *obj)
-{
+int serial_readable(serial_t *obj) {
     int status;
     UartHandle.Instance = (USART_TypeDef *)(obj->uart);
     // Check if data is received
@@ -481,8 +479,7 @@
     return status;
 }
 
-int serial_writable(serial_t *obj)
-{
+int serial_writable(serial_t *obj) {
     int status;
     UartHandle.Instance = (USART_TypeDef *)(obj->uart);
     // Check if data is transmitted
@@ -490,25 +487,21 @@
     return status;
 }
 
-void serial_clear(serial_t *obj)
-{
+void serial_clear(serial_t *obj) {
     UartHandle.Instance = (USART_TypeDef *)(obj->uart);
     __HAL_UART_CLEAR_IT(&UartHandle, UART_FLAG_TC);
     __HAL_UART_SEND_REQ(&UartHandle, UART_RXDATA_FLUSH_REQUEST);
 }
 
-void serial_pinout_tx(PinName tx)
-{
+void serial_pinout_tx(PinName tx) {
     pinmap_pinout(tx, PinMap_UART_TX);
 }
 
-void serial_break_set(serial_t *obj)
-{
+void serial_break_set(serial_t *obj) {
     // [TODO]
 }
 
-void serial_break_clear(serial_t *obj)
-{
+void serial_break_clear(serial_t *obj) {
     // [TODO]
 }