TI中文支持网
TI专业的中文技术问题搜集分享网站

LAUNCHXL-F2800157: 为什么从串口接收数据无法触发中断

Part Number:LAUNCHXL-F2800157

电脑通过串口给板子的串口发送数据,板子的串口接收数据,但是无法触发接收到数据的中断

但是在电脑发送多个数据之后,芯片串口的FIFO溢出了,此时触发FIFO满的中断

请问该如何让串口一接收到数据就出发中断

串口初始化代码如下:

#define UART_BASE                                                       SCIB_BASE
#define UART_INT_RX                                                    INT_SCIB_RX
#define UART_INT_RX_INTERRUPT_ACK_GROUP     INTERRUPT_ACK_GROUP9

SCI_clearInterruptStatus(UART_BASE, SCI_INT_RXFF | SCI_INT_TXFF | SCI_INT_FE | SCI_INT_OE | SCI_INT_PE | SCI_INT_RXERR | SCI_INT_RXRDY_BRKDT | SCI_INT_TXRDY);
SCI_clearOverflowStatus(UART_BASE);
SCI_resetTxFIFO(UART_BASE);
SCI_resetRxFIFO(UART_BASE);
SCI_resetChannels(UART_BASE);
SCI_setConfig(UART_BASE, DEVICE_LSPCLK_FREQ, UART_BAUD_RATE, (SCI_CONFIG_WLEN_8|SCI_CONFIG_STOP_ONE|SCI_CONFIG_PAR_NONE));
SCI_disableLoopback(UART_BASE);
SCI_disableSleepMode(UART_BASE);
SCI_performSoftwareReset(UART_BASE);
SCI_enableInterrupt(UART_BASE, SCI_INT_RXFF);
SCI_setFIFOInterruptLevel(UART_BASE, SCI_FIFO_TX0, SCI_FIFO_RX5);
SCI_enableFIFO(UART_BASE);
SCI_enableRxModule(UART_BASE);
SCI_enableModule(UART_BASE);
Interrupt_register(UART_INT_RX, &UartRxIsr);
//SCI_enableInterrupt(UART_BASE, SCI_INT_RXFF);
SCI_enableInterrupt(UART_BASE, SCI_INT_RXRDY_BRKDT);          // 试图通过这个使能RXRDY的中断,但是没有成功
SCI_clearInterruptStatus(UART_BASE, SCI_INT_RXRDY_BRKDT);
Interrupt_enable(UART_INT_RX);

John Pan:

用轮询的方式也无法从串口读到数据

轮询的代码如下:

while(1) {    if((SCI_getRxStatus(UART_BASE) & SCI_RXSTATUS_READY ) != 0)    {        tmpc = SCI_readCharBlockingNonFIFO(UART_BASE);        uartRecvFlag = true;    }

}

赞(0)
未经允许不得转载:TI中文支持网 » LAUNCHXL-F2800157: 为什么从串口接收数据无法触发中断
分享到: 更多 (0)