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