MSP430串口中断接收丢数据----(中断优先级问题)

文章讨论了在MSP430微控制器中遇到的串口接收数据偶尔丢失的问题。通过分析,确定可能是由于中断优先级和嵌套导致。作者提到MSP430的中断优先级由中断向量表决定,且默认不支持中断嵌套。为了解决数据丢失,作者在定时中断服务程序中开启总中断,使得串口中断能被及时响应,从而避免数据丢失。经过修改,系统运行恢复正常。
摘要由CSDN通过智能技术生成

问题

串口接收数据总会有一定的机率丢掉若干个字节,使用示波器查看串口的波形并无异常,使用串口调试助手查看数据发送端并未丢失数据,猜想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默认关闭中断嵌套,即进入中断后默认关闭总中断,除非进入中断程序后再次打开总中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值