本帖最后由 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的串口数据?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>