昨天在调试串口的时候,用串口工具发送 bd bd bb ba b9 b8 b7 b6 b5 b4 b3 b2 b1 b0的时候,LPC2214仿真中断后发现接收到的是ad bd ab ba a9 b8
a7 b6 a5 b4 a3 b2 a1 b0,发现接收到的数据从第一个开始隔一个所有的高四位都是错误的。当发送a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad的时候接收
又都是正常的。
void UART1_Init(void)
{
uint16 Fdiv;
U1LCR=0x80; //8位为高电平的时候,可以设置波特率
Fdiv=(Fpclk/16)/57600; // 波特率为57600
U1DLM=Fdiv/256;
U1DLL=Fdiv%256;
U1LCR=0x03; // 8个数据位,1个起始位,1个结束位。
U1FCR=0xC1; // 使能FIFO,14字节触发。
U1IER=0x01; // 允许接收中断
PCREV=0; //有数据从上位机收到标志
PCSEND=0; //有数据要向上位机发送标志
UART1INIT=0; //数据发送完毕标志和还有后续数据标志
VICVectCntl7=0x27;
VICVectAddr7=(uint32)IRQ_UART1;
COMENABLE1; // 使能串行通讯中断
}
// 串行通讯中断响应程序
void __irq IRQ_UART1(void)
{
uint8 i;
if(0x04==(U1IIR&0x0f))
{
PCREV=1; // 收到一帧数据
}
for(i=0;i<14;i++)
datapc[i]=U1RBR; // 只要读走数据就可以清除中断标志
VICVectAddr = 0x00; // 中断处理结束
}
有哪位大侠碰到过这类问题呀,咨询缘故!!!
|