@@ -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