dspic33f32mc204的串口如何一次接收大于5个字节长度的数据?

2020-02-06 10:20发布

本帖最后由 520zhoupian 于 2014-12-25 23:20 编辑

我现在使用的是dspic33f32mc204单片机,外部设备每隔1s通过串口一次发送10个Byte的数据给pic单片机,我的程序采用串口接收中断。该芯片的串口FIFO只有4级。
我尝试了以下几个中断方法:
1)每收到一个数据中断一次
  现象:只能收到数据的帧头,其它的数据都丢失了
2)缓冲区有3/4的数据时,产生一次中断
  现象:只接收到了前4个数据
3)缓冲区中有4个数据时,产生一次中断
  现象:最多只能接收5个数据,其它的数据都丢失了。

我的中断接收程序为(每收到一个数中断一次):

revNum = 0; unsigned int Rev[10];
void __attribute__((interrupt, no_auto_psv)) _U1RXInterrupt(void) {
       while (U1STAbits.URXDA == 1) {
        Rev[revNum] = U1RXREG;        
        revNum++;
    }
   if (revNum==10)
    revNum = 0;

    U1STAbits.OERR = 0;
    IFS0bits.U1RXIF = 0; // 清接收中断标志
}

请问,我的程序有什么问题,为什么不能把数据全部接收。如果程序有问题,如何实现pic单片机(无DMA功能)一次接收大于5个byte的串口数据?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。