问题
串口接收数据总会有一定的机率丢掉若干个字节,使用示波器查看串口的波形并无异常,使用串口调试助手查看数据发送端并未丢失数据,猜想MSP430接收数据出现问题,经过查资料对比文档,串口初始化并无问题。
以下为串口中断处理函数:
#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
uint8 data =0;
switch(__even_in_range(UCA1IV,USCI_UART_UCTXCPTIFG))
{
case USCI_NONE: break;
case USCI_UART_UCRXIFG:
while(!(UCA1IFG&UCTXIFG));
data = UCA1RXBUF;
if(data != 0x00)
RxBuffer[RxCounter++] = data;// Read buffer
if(RxCounter>511)//
RxCounter=0;
break;
case USCI_UART_UCTXIFG: break;
case USCI_UART_UCSTTIFG: break;
case USCI_UART_UCTXCPTIFG: break;
}
}
通过查找资料,可能是由于其他中断影响了串口中断接收。
查找到的综合资料
1)MSP430中断优先级无法设置,是根据中断向量表;
2)430默认关闭中断嵌套,即进入中断后默认关闭总中断,除非进入中断程序后再次打开总中