Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: WizFi250_AP_HelloWorld
Fork of mbed-src by
Diff: targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/serial_api.c
- Revision:
- 167:d5744491c362
- Parent:
- 70:c1fbde68b492
- Child:
- 174:8bb9f3a33240
diff -r cb4253f91ada -r d5744491c362 targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/serial_api.c
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/serial_api.c Tue Apr 22 16:00:06 2014 +0100
+++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/serial_api.c Wed Apr 23 11:00:08 2014 +0100
@@ -34,20 +34,26 @@
#include <string.h>
static const PinMap PinMap_UART_TX[] = {
+ {PA_2, UART_2, STM_PIN_DATA(GPIO_Mode_AF_PP, 0)},
{PA_9, UART_1, STM_PIN_DATA(GPIO_Mode_AF_PP, 0)},
- {PA_2, UART_2, STM_PIN_DATA(GPIO_Mode_AF_PP, 0)},
+ {PB_6, UART_1, STM_PIN_DATA(GPIO_Mode_AF_PP, 3)}, // GPIO_Remap_USART1
+ {PB_10, UART_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 0)},
+ {PC_10, UART_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 5)}, // GPIO_PartialRemap_USART3
{NC, NC, 0}
};
static const PinMap PinMap_UART_RX[] = {
+ {PA_3, UART_2, STM_PIN_DATA(GPIO_Mode_IN_FLOATING, 0)},
{PA_10, UART_1, STM_PIN_DATA(GPIO_Mode_IN_FLOATING, 0)},
- {PA_3, UART_2, STM_PIN_DATA(GPIO_Mode_IN_FLOATING, 0)},
+ {PB_7, UART_1, STM_PIN_DATA(GPIO_Mode_IN_FLOATING, 3)}, // GPIO_Remap_USART1
+ {PB_11, UART_3, STM_PIN_DATA(GPIO_Mode_IN_FLOATING, 0)},
+ {PC_11, UART_3, STM_PIN_DATA(GPIO_Mode_IN_FLOATING, 5)}, // GPIO_PartialRemap_USART3
{NC, NC, 0}
};
-#define UART_NUM (2)
+#define UART_NUM (3)
-static uint32_t serial_irq_ids[UART_NUM] = {0};
+static uint32_t serial_irq_ids[UART_NUM] = {0, 0, 0};
static uart_irq_handler irq_handler;
@@ -60,12 +66,12 @@
USART_Cmd(usart, DISABLE);
- USART_InitStructure.USART_BaudRate = obj->baudrate;
- USART_InitStructure.USART_WordLength = obj->databits;
- USART_InitStructure.USART_StopBits = obj->stopbits;
- USART_InitStructure.USART_Parity = obj->parity;
+ USART_InitStructure.USART_BaudRate = obj->baudrate;
+ USART_InitStructure.USART_WordLength = obj->databits;
+ 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;
+ USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(usart, &USART_InitStructure);
USART_Cmd(usart, ENABLE);
@@ -90,7 +96,10 @@
if (obj->uart == UART_2) {
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
}
-
+ if (obj->uart == UART_3) {
+ RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
+ }
+
// Configure the UART pins
pinmap_pinout(tx, PinMap_UART_TX);
pinmap_pinout(rx, PinMap_UART_RX);
@@ -106,6 +115,7 @@
// The index is used by irq
if (obj->uart == UART_1) obj->index = 0;
if (obj->uart == UART_2) obj->index = 1;
+ if (obj->uart == UART_3) obj->index = 2;
// For stdio management
if (obj->uart == STDIO_UART) {
@@ -174,8 +184,15 @@
}
}
-static void uart1_irq(void) {uart_irq((USART_TypeDef*)UART_1, 0);}
-static void uart2_irq(void) {uart_irq((USART_TypeDef*)UART_2, 1);}
+static void uart1_irq(void) {
+ uart_irq((USART_TypeDef*)UART_1, 0);
+}
+static void uart2_irq(void) {
+ uart_irq((USART_TypeDef*)UART_2, 1);
+}
+static void uart3_irq(void) {
+ uart_irq((USART_TypeDef*)UART_3, 2);
+}
void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id) {
irq_handler = handler;
@@ -196,6 +213,11 @@
irq_n = USART2_IRQn;
vector = (uint32_t)&uart2_irq;
}
+
+ if (obj->uart == UART_3) {
+ irq_n = USART3_IRQn;
+ vector = (uint32_t)&uart3_irq;
+ }
if (enable) {
