Hi,
我在使用MSP430F5418A的串口通信功能。现在遇到的问题是PC机端发过来的数据单片机收不到。应该如何在程序上实现收数据呢?仅仅是在配置完UART通信的参数
之后,将RX的终端打开吗?我采用9600波特率通信
下面是我的程序:
UCA1CTL1 |= UCSWRST; // **Put state machine in reset**
UCA1CTL1 |= UCSSEL_1; // CLK = ACLK
UCA1BR0 = 0x03; // 32kHz/9600=3.41 (see User's Guide)
UCA1BR1 = 0x00;
UCA1MCTL = UCBRS_3+UCBRF_0; // Modulation UCBRSx=3, UCBRFx=0
UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
UCA1IE |= UCRXIE; // Enable USCI_A1 RX interrupt
__bis_SR_register(GIE); // interrupts enabled
__no_operation();
下面是中断服务程序:
#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
int i;
switch(__even_in_range(UCA1IV,4))
{
case 0:break; // Vector 0 - no interrupt
case 2: // Vector 2 - RXIFG
for(i=10;i>=0;i--)
{
rx_buffer[i] = UCA1RXBUF;
decode(); //数据接受解码
} //数据解码完成之后立即进行数据的SPI配置
break;
case 4: // Vector 4 - TXIFG
for(i=0;i<=10;i++)
{
UCA1TXBUF = tx_buffer[i];
}
break;
default: break;
}
}
程序总是进入发送中断服务程序,却无法进入收中断服务程序。我在PC机一端用串口调试助手一直在发数据,可是就是接收不到。
请专家帮忙解释一下
Thank you
Nick