串口接收错误
小弟初来扎到,正在调试串口驱动,调试了好几天了但是读串口还是有问题,问题描述如下:
当有一个字符串发送过来的时候,就只能接收到字符串的最后一个字符。
设置如下:
波特率是9600,
不需要FIFO,
数据格式LCR是0x3,即8个数据位,1个停止位,不需要ODD/EVEN
MCR是0x8,即 能正常中断,芯片正常工作。
IER是0xf,即所有中断全部打开。
代码如下:
char *uart_read_com()
{
int off = (int)0;
uint8_t reg_data = 0;
uint8_t temp = 0;
inport_byte(LSR,reg_data);
//memset(buf,0,sizeof(buf));
while((off<BUFFER_SIZE-1) && (reg_data&(1<<0)))
{
inport_byte(RBR,temp);
buff[off++] = temp;
printk("gets,buff[%d] is %c\n",off,temp);
inport_byte(IIR,reg_data);
printk("gets,IIR is0x%x\n",reg_data);
buff[off] = '\0';
}
return buff;
}
希望各位大牛指点小弟啊