mirror of https://github.com/ARMmbed/mbed-os.git
NRF serial: Use nrf_uarte_event_t enum to avoid implicit conversion
parent
c7759fe505
commit
f6d6d44346
|
@ -102,13 +102,6 @@
|
|||
* |___/|_|
|
||||
*/
|
||||
|
||||
/**
|
||||
* Missing event typedefs.
|
||||
*/
|
||||
typedef enum {
|
||||
NRF_UARTE_EVENT_TXDRDY = offsetof(NRF_UARTE_Type, EVENTS_TXDRDY),
|
||||
} nrf_uarte_event_extra_t;
|
||||
|
||||
|
||||
/**
|
||||
* Internal struct for storing each UARTE instance's state:
|
||||
|
@ -910,12 +903,12 @@ void serial_init(serial_t *obj, PinName tx, PinName rx)
|
|||
nrf_uarte_enable(nordic_nrf5_uart_register[instance]);
|
||||
|
||||
/* In order to support printing with interrupts disabled serial_putc
|
||||
* must busy wait on NRF_UARTE_EVENT_TXDRDY. This event cannot be set
|
||||
* must busy wait on NRF_UARTE_EVENT_TXDDY. This event cannot be set
|
||||
* manually but must be set by the UARTE module after a character has
|
||||
* been sent.
|
||||
*
|
||||
* The following code sends a dummy character into the void so that
|
||||
* NRF_UARTE_EVENT_TXDRDY is correctly set.
|
||||
* NRF_UARTE_EVENT_TXDDY is correctly set.
|
||||
*/
|
||||
|
||||
/* Ensure pins are disconnected. */
|
||||
|
@ -934,11 +927,11 @@ void serial_init(serial_t *obj, PinName tx, PinName rx)
|
|||
nrf_uarte_event_clear(nordic_nrf5_uart_register[instance], NRF_UARTE_EVENT_ENDTX);
|
||||
nrf_uarte_task_trigger(nordic_nrf5_uart_register[instance], NRF_UARTE_TASK_STARTTX);
|
||||
|
||||
/* Wait until NRF_UARTE_EVENT_TXDRDY is set before proceeding. */
|
||||
/* Wait until NRF_UARTE_EVENT_TXDDY is set before proceeding. */
|
||||
bool done = false;
|
||||
do {
|
||||
done = nrf_uarte_event_check(nordic_nrf5_uart_register[instance],
|
||||
(nrf_uarte_event_t) NRF_UARTE_EVENT_TXDRDY);
|
||||
NRF_UARTE_EVENT_TXDDY);
|
||||
} while (done == false);
|
||||
}
|
||||
|
||||
|
@ -1284,7 +1277,7 @@ void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable)
|
|||
Driver uses DMA to perform uart transfer and TxIrq is generated after the transfer is finished.
|
||||
Trigger TxIrq interrupt manually on enabling the TxIrq. */
|
||||
if (irq == TxIrq) {
|
||||
if (nrf_uarte_event_check(nordic_nrf5_uart_register[instance], NRF_UARTE_EVENT_TXDRDY)) {
|
||||
if (nrf_uarte_event_check(nordic_nrf5_uart_register[instance], NRF_UARTE_EVENT_TXDDY)) {
|
||||
nordic_swi_tx_trigger(instance);
|
||||
}
|
||||
}
|
||||
|
@ -1365,10 +1358,10 @@ void serial_putc(serial_t *obj, int character)
|
|||
|
||||
/* Wait until UART is ready to send next character. */
|
||||
do {
|
||||
done = nrf_uarte_event_check(nordic_nrf5_uart_register[instance], NRF_UARTE_EVENT_TXDRDY);
|
||||
done = nrf_uarte_event_check(nordic_nrf5_uart_register[instance], NRF_UARTE_EVENT_TXDDY);
|
||||
} while (done == false);
|
||||
|
||||
nrf_uarte_event_clear(nordic_nrf5_uart_register[instance], NRF_UARTE_EVENT_TXDRDY);
|
||||
nrf_uarte_event_clear(nordic_nrf5_uart_register[instance], NRF_UARTE_EVENT_TXDDY);
|
||||
|
||||
/* Arm Tx DMA buffer. */
|
||||
nordic_nrf5_uart_state[instance].tx_data = character;
|
||||
|
@ -1431,7 +1424,7 @@ int serial_writable(serial_t *obj)
|
|||
int instance = uart_object->instance;
|
||||
|
||||
return (!core_util_atomic_load_bool(&nordic_nrf5_uart_state[instance].tx_in_progress) &&
|
||||
(nrf_uarte_event_check(nordic_nrf5_uart_register[instance], NRF_UARTE_EVENT_TXDRDY)));
|
||||
(nrf_uarte_event_check(nordic_nrf5_uart_register[instance], NRF_UARTE_EVENT_TXDDY)));
|
||||
}
|
||||
|
||||
const PinMap *serial_tx_pinmap()
|
||||
|
|
Loading…
Reference in New Issue