Skip to content

Commit 6d48c21

Browse files
committed
K64F, NUCLEO_F429ZI: Use explicit pinmap for console
1 parent 7c12aab commit 6d48c21

File tree

3 files changed

+50
-18
lines changed

3 files changed

+50
-18
lines changed

platform/source/mbed_retarget.cpp

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ extern serial_t stdio_uart;
141141
class DirectSerial : public FileHandle {
142142
public:
143143
DirectSerial(PinName tx, PinName rx, int baud);
144+
DirectSerial(const serial_pinmap_t &explicit_pinmap, int baud);
144145
virtual ssize_t write(const void *buffer, size_t size);
145146
virtual ssize_t read(void *buffer, size_t size);
146147
virtual off_t seek(off_t offset, int whence = SEEK_SET)
@@ -178,6 +179,22 @@ DirectSerial::DirectSerial(PinName tx, PinName rx, int baud)
178179
#endif
179180
}
180181

182+
DirectSerial::DirectSerial(const serial_pinmap_t &explicit_pinmap, int baud)
183+
{
184+
if (stdio_uart_inited) {
185+
return;
186+
}
187+
serial_init_direct(&stdio_uart, &explicit_pinmap);
188+
serial_baud(&stdio_uart, baud);
189+
#if CONSOLE_FLOWCONTROL == CONSOLE_FLOWCONTROL_RTS
190+
serial_set_flow_control(&stdio_uart, FlowControlRTS, STDIO_UART_RTS, NC);
191+
#elif CONSOLE_FLOWCONTROL == CONSOLE_FLOWCONTROL_CTS
192+
serial_set_flow_control(&stdio_uart, FlowControlCTS, NC, STDIO_UART_CTS);
193+
#elif CONSOLE_FLOWCONTROL == CONSOLE_FLOWCONTROL_RTSCTS
194+
serial_set_flow_control(&stdio_uart, FlowControlRTSCTS, STDIO_UART_RTS, STDIO_UART_CTS);
195+
#endif
196+
}
197+
181198
ssize_t DirectSerial::write(const void *buffer, size_t size)
182199
{
183200
const unsigned char *buf = static_cast<const unsigned char *>(buffer);
@@ -262,7 +279,12 @@ static FileHandle *default_console()
262279
{
263280
#if MBED_CONF_TARGET_CONSOLE_UART && DEVICE_SERIAL
264281
# if MBED_CONF_PLATFORM_STDIO_BUFFERED_SERIAL
265-
static UARTSerial console(STDIO_UART_TX, STDIO_UART_RX, MBED_CONF_PLATFORM_STDIO_BAUD_RATE);
282+
# if defined(STDIO_UART_TX) && defined(STDIO_UART_TX_FUNC) && defined(STDIO_UART_RX) && defined(STDIO_UART_RX_FUNC) && defined(STDIO_UART)
283+
const serial_pinmap_t explicit_pinmap = {STDIO_UART, STDIO_UART_TX, STDIO_UART_TX_FUNC, STDIO_UART_RX, STDIO_UART_RX_FUNC, 1};
284+
static UARTSerial console(explicit_pinmap, MBED_CONF_PLATFORM_STDIO_BAUD_RATE);
285+
# else
286+
static UARTSerial console(STDIO_UART_TX, STDIO_UART_RX, MBED_CONF_PLATFORM_STDIO_BAUD_RATE);
287+
# endif
266288
# if CONSOLE_FLOWCONTROL == CONSOLE_FLOWCONTROL_RTS
267289
console.set_flow_control(SerialBase::RTS, STDIO_UART_RTS, NC);
268290
# elif CONSOLE_FLOWCONTROL == CONSOLE_FLOWCONTROL_CTS
@@ -271,7 +293,12 @@ static FileHandle *default_console()
271293
console.set_flow_control(SerialBase::RTSCTS, STDIO_UART_RTS, STDIO_UART_CTS);
272294
# endif
273295
# else
274-
static DirectSerial console(STDIO_UART_TX, STDIO_UART_RX, MBED_CONF_PLATFORM_STDIO_BAUD_RATE);
296+
# if defined(STDIO_UART_TX) && defined(STDIO_UART_TX_FUNC) && defined(STDIO_UART_RX) && defined(STDIO_UART_RX_FUNC) && defined(STDIO_UART)
297+
const serial_pinmap_t explicit_pinmap = {STDIO_UART, STDIO_UART_TX, STDIO_UART_TX_FUNC, STDIO_UART_RX, STDIO_UART_RX_FUNC, 1};
298+
static DirectSerial console(explicit_pinmap, MBED_CONF_PLATFORM_STDIO_BAUD_RATE);
299+
# else
300+
static DirectSerial console(STDIO_UART_TX, STDIO_UART_RX, MBED_CONF_PLATFORM_STDIO_BAUD_RATE);
301+
# endif
275302
# endif
276303
#else // MBED_CONF_TARGET_CONSOLE_UART && DEVICE_SERIAL
277304
static Sink console;

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/TARGET_FRDM/PeripheralNames.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,11 @@ typedef enum {
3838
UART_4 = 4,
3939
} UARTName;
4040

41-
#define STDIO_UART_TX USBTX
42-
#define STDIO_UART_RX USBRX
43-
#define STDIO_UART UART_0
41+
#define STDIO_UART_TX USBTX
42+
#define STDIO_UART_TX_FUNC 3
43+
#define STDIO_UART_RX USBRX
44+
#define STDIO_UART_RX_FUNC 3
45+
#define STDIO_UART UART_0
4446

4547
typedef enum {
4648
I2C_0 = 0,

targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F429xI/TARGET_NUCLEO_F429ZI/PinNames.h

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,22 @@
3838
extern "C" {
3939
#endif
4040

41+
#define STDIO_UART UART_3
42+
43+
// STDIO for console print
44+
#ifdef MBED_CONF_TARGET_STDIO_UART_TX
45+
# define STDIO_UART_TX MBED_CONF_TARGET_STDIO_UART_TX
46+
#else
47+
# define STDIO_UART_TX PD_8
48+
# define STDIO_UART_TX_FUNC STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)
49+
#endif
50+
#ifdef MBED_CONF_TARGET_STDIO_UART_RX
51+
# define STDIO_UART_RX MBED_CONF_TARGET_STDIO_UART_RX
52+
#else
53+
# define STDIO_UART_RX PD_9
54+
# define STDIO_UART_RX_FUNC STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)
55+
#endif
56+
4157
typedef enum {
4258
ALT0 = 0x100,
4359
ALT1 = 0x200,
@@ -241,19 +257,6 @@ typedef enum {
241257
D13 = PA_5,
242258
D14 = PB_9,
243259
D15 = PB_8,
244-
245-
// STDIO for console print
246-
#ifdef MBED_CONF_TARGET_STDIO_UART_TX
247-
STDIO_UART_TX = MBED_CONF_TARGET_STDIO_UART_TX,
248-
#else
249-
STDIO_UART_TX = PD_8,
250-
#endif
251-
#ifdef MBED_CONF_TARGET_STDIO_UART_RX
252-
STDIO_UART_RX = MBED_CONF_TARGET_STDIO_UART_RX,
253-
#else
254-
STDIO_UART_RX = PD_9,
255-
#endif
256-
257260
// Generic signals namings
258261
LED1 = PB_0, // LD1 = GREEN
259262
LED2 = PB_7, // Blue

0 commit comments

Comments
 (0)