我想用串口采集数据,现在调试串口遇到了问题,在用XUartLite_Recv函数接受从PC机传过来的数据的时候,总是不能接收到,而发送XUartLite_Send函数可以正常使用,不知道是什么问题,麻烦大家给解答一下,十分感谢!我的程序如下:
#include "stdio.h"
#include"xuartlite.h"
#include"xil_types.h"
#include"xparameters.h"
#include "xuartlite_l.h"
#define TEST_BUFFER_SIZE 16
XUartLite xuar;
u8 SendBuffer[TEST_BUFFER_SIZE];
u8 RecvBuffer[TEST_BUFFER_SIZE];
int i,Index;
int state;
unsigned int rec_count;
int main()
{
state=XUartLite_Initialize(&xuar, XPAR_RS232_UART_DEVICE_ID);
if(state!=XST_SUCCESS ){
return state;
}
XUartLite_ResetFifos(&xuar);
state=XUartLite_SelfTest (&xuar);
if(state!=XST_SUCCESS ){
return state;
}
for (Index = 0; Index < TEST_BUFFER_SIZE; Index++)
{
SendBuffer[Index] = 0;
RecvBuffer[Index] = 0;
}
while(1)
{
rec_count=XUartLite_Recv(&xuar,RecvBuffer ,TEST_BUFFER_SIZE);
for (Index = 0; Index < TEST_BUFFER_SIZE; Index++)
SendBuffer[Index]=RecvBuffer[Index] ;
XUartLite_Send(&xuar,SendBuffer ,TEST_BUFFER_SIZE);
for(i=0;i<9999999;i++);
}
return 0;
}
按以上程序,每次返回到串口调试助手上面的是00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00,也就是XUartLite_Recv这个函数没有接受到数据,我觉得是程序的问题,不知道这样用这个函数是否正确?刚刚接触Microblaze,很多地方不是很明白,希望有高手帮助,十分感谢! |