MSP430FR2476: 串口UART0无法输出

Part Number: MSP430FR2476

串口UART0为P1.4--TXD0,P1.5--RXD0

调试发现串口0能进入接收中断,且UCA0RXBUF数据是正确的

单步调试,能进入发送中断,且UCA0TXBUF中数据正确,但是上位机软件收不到数据。

加上 SYSCFG3|=USCIA0RMP;  故障依旧。

上位机软件及串口线已经排除无问题,硬件连接也无问题。试了几块板子是一样的故障

URAT1配置与UART0一致,串口收发均正常

//IO配置

P1DIR |= 0xff; // Set unuse pins to output direction
P1SEL0 |= BIT2+BIT4+BIT5; // P1.4-P1.5 UART

// Setup USCI_A0 配置 9600 n 8 1
UCA0CTLW0 |= UCSWRST; // **Put state machine in reset**
UCA0CTLW0 |= UCSSEL_2; // SMCLK

// UCA0BR0 = 26;
// UCA0BR1 = 0;
// UCA0MCTLW = 0xB600 | UCOS16 | UCBRF_1;

UCA0BR0 = 52; // 8MHz 9600 (see User's Guide)
UCA0BR1 = 0; // 8MHz 9600
UCA0MCTLW = 0x4900 | UCOS16 | UCBRF_1;

UCA0CTLW0 &= ~UCSWRST; // **Initialize USCI state machine**
UCA0IE |= UCRXIE; // Enable USCI_A1 RX interrupt

#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
switch (__even_in_range(UCA0IV, 4))
{
case 0: break; // No interrupt
case 2: // RXIFG数据接收
{
RX232_BUFF0[RX232_IndexW0]=UCA0RXBUF;//串口接收数据写入FIFO
// while ((UCA1IFG&UCRXIFG));

RX232_IndexW0++;
if(( RX232_BUFF0[RX232_IndexW0-2] == 0x0D)&&( RX232_BUFF0[RX232_IndexW0-1] == 0x0A))
{
RX232_IndexW0=0;
REC232_FLAG0=1; //单片机接收完探头返回的数据
}
if(RX232_IndexW0 >=RX232BUF_SIZE0)
{
RX232_IndexW0=0;
}

break;
}
case 4: // TXIFG
{
if(TX232_OutLen0>0) //FIFO内是否有待发送数据
{
TX232_OutLen0--; //有,待发送数据的字节数减1
UCA0TXBUF=TX232_BUFF0[TX232_IndexR0];//从未指针读取一个字节并发送
while (!(UCA0IFG&UCTXIFG));
if(++TX232_IndexR0 >= TX232BUF_SIZE0)
{
TX232_IndexR0=0;
}
}
else
{
UCA0IE &= ~UCTXIE; //数据发送完,关闭中断,停止发送
}
break;
}
default: break;
}
}