520zhoupian 发表于 2014-12-25 23:15:39

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

本帖最后由 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;
void __attribute__((interrupt, no_auto_psv)) _U1RXInterrupt(void) {
       while (U1STAbits.URXDA == 1) {
      Rev = U1RXREG;      
      revNum++;
    }
   if (revNum==10)
    revNum = 0;

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

请问,我的程序有什么问题,为什么不能把数据全部接收。如果程序有问题,如何实现pic单片机(无DMA功能)一次接收大于5个byte的串口数据?

chenchaoting 发表于 2014-12-26 00:02:08

做个索引号,收一个加1,注意超时的问题
页: [1]
查看完整版本: dspic33f32mc204的串口如何一次接收大于5个字节长度的数据?