/* * ======== EUSCI_A0_graceInit ======== * Initialize Config for the MSP430 eUSCI_A0 */ void EUSCI_A0_graceInit(void) { /* USER CODE START (section: EUSCI_A0_graceInit_prologue) */ /* User initialization code */ /* USER CODE END (section: EUSCI_A0_graceInit_prologue) */ /* initialize UART for 115200 baud (based on a 8000000 Hz clock) */ if (STATUS_FAIL == EUSCI_A_UART_initAdvance(EUSCI_A0_BASE, EUSCI_A_UART_CLOCKSOURCE_SMCLK, 4, 5, 85, EUSCI_A_UART_NO_PARITY, EUSCI_A_UART_LSB_FIRST, EUSCI_A_UART_ONE_STOP_BIT, EUSCI_A_UART_MODE, 1)) { return; } /* enable eUSCI UART */ EUSCI_A_UART_enable(EUSCI_A0_BASE); /* set deglitch time */ EUSCI_A_UART_selectDeglitchTime(EUSCI_A0_BASE, EUSCI_A_UART_DEGLITCH_TIME_200ns); /* disable eUSCI UART transmit interrupt */ EUSCI_A_UART_disableInterrupt(EUSCI_A0_BASE, EUSCI_A_UART_TRANSMIT_INTERRUPT); /* disable eUSCI UART receive interrupt */ EUSCI_A_UART_disableInterrupt(EUSCI_A0_BASE, EUSCI_A_UART_RECEIVE_INTERRUPT); /* USER CODE START (section: EUSCI_A0_graceInit_epilogue) */ /* User code */ /* USER CODE END (section: EUSCI_A0_graceInit_epilogue) */ }
void uart_a0_tx_rdy_handler(void) { char c; if (ring_buffer_get(_uart_a0_tx_ringbuffer_id, &c) == 0) { UCA0TXBUF = c; EUSCI_A_UART_enableInterrupt(EUSCI_A0_BASE, EUSCI_A_UART_TRANSMIT_INTERRUPT); } else { // ringbuffer empty, nothing to send anymore... EUSCI_A_UART_disableInterrupt(EUSCI_A0_BASE, EUSCI_A_UART_TRANSMIT_INTERRUPT); UCA0IFG |= EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG; } }