我想用串口0读取电度表(1200的波特率),并且希望每收到1字节数据就中断一次。这样便于对所收到的数据进行分析和处理。但我的串口中断程序每中断一次,所读到的数据有好几个字节不等。搞了半天不知道原因在哪里,请那位帮我分析一下。谢谢! 我的串口0的初始化如下: uint16 Fdiv; U0LCR = 0x83; Fdiv=(Fpclk/16)/UART_BPS; U0DLM = Fdiv/256; U0DLL = Fdiv % 256; U0LCR = 0x1B; U0FCR = 0x01; /* 允许FIFO,并设置触发点为1字节*/ VICIntSelect = 0x00000000; /* 设置所有的通道为IRQ中断*/ VICVectCntl1 = 0x20 | 0x06; /* UART0分配到IRQ slot1*/ VICVectAddr1 = (uint32)IRQ_UART0; /* 设置UART0向量地址*/ VICIntEnable = (1 << 0x06) /* 使能UART0中断*/ 下面是我的中断处理程序: uint8 Uart0; rcv_new0 = 1; if ((U0IIR & 0x0F) == 0x04) { rcv_buf0[l_0] = U0RBR; // 读取FIFO的数据 l_0 = l_0+1; } Uart0 = U0IIR; VICVectAddr = 0x00; // 中断处理结束
|