Skip to content

Commit eb4dc4e

Browse files
author
Owen
authored
Merge pull request #134 from sparkfun/uart-setup-order
reorder uart initialization before pin configuration
2 parents 28df6db + 115ffcd commit eb4dc4e

File tree

1 file changed

+22
-23
lines changed

1 file changed

+22
-23
lines changed

cores/arduino/ard_sup/uart/ap3_uart.cpp

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,28 @@ ap3_err_t Uart::_begin(void)
311311
_config.ui32RxBufferSize = sizeof(_rx_linbuff);
312312
_config.ui32TxBufferSize = sizeof(_tx_linbuff);
313313

314+
//User may want to change settings mid-sketch. Only init UART if it's new.
315+
if (_handle == NULL)
316+
{
317+
retval = (ap3_err_t)am_hal_uart_initialize(_instance, &_handle);
318+
if (retval != AP3_OK)
319+
{
320+
return ap3_return(retval);
321+
}
322+
}
323+
retval = (ap3_err_t)am_hal_uart_power_control(_handle, AM_HAL_SYSCTRL_WAKE, false);
324+
if (retval != AP3_OK)
325+
{
326+
return ap3_return(retval);
327+
}
328+
retval = (ap3_err_t)am_hal_uart_configure(_handle, &_config);
329+
if (retval != AP3_OK)
330+
{
331+
return ap3_return(retval);
332+
}
333+
334+
UARTn(_instance)->LCRH_b.FEN = 0; // Disable that pesky FIFO
335+
314336
// Check for a valid instance
315337
// Check pins for compatibility with the selcted instance
316338

@@ -383,29 +405,6 @@ ap3_err_t Uart::_begin(void)
383405
pincfg = AP3_GPIO_DEFAULT_PINCFG; // set back to default for use with next pin
384406
}
385407

386-
//User may want to change settings mid-sketch. Only init UART if it's new.
387-
if (_handle == NULL)
388-
{
389-
// Now that pins are initialized start the actual driver
390-
retval = (ap3_err_t)am_hal_uart_initialize(_instance, &_handle);
391-
if (retval != AP3_OK)
392-
{
393-
return ap3_return(retval);
394-
}
395-
}
396-
retval = (ap3_err_t)am_hal_uart_power_control(_handle, AM_HAL_SYSCTRL_WAKE, false);
397-
if (retval != AP3_OK)
398-
{
399-
return ap3_return(retval);
400-
}
401-
retval = (ap3_err_t)am_hal_uart_configure(_handle, &_config);
402-
if (retval != AP3_OK)
403-
{
404-
return ap3_return(retval);
405-
}
406-
407-
UARTn(_instance)->LCRH_b.FEN = 0; // Disable that pesky FIFO
408-
409408
// Enable TX and RX interrupts
410409
NVIC_EnableIRQ((IRQn_Type)(UART0_IRQn + _instance));
411410
am_hal_uart_interrupt_enable(_handle, (AM_HAL_UART_INT_RX | AM_HAL_UART_INT_TX));

0 commit comments

Comments
 (0)