我在用STM32板子跟zigbee通信时,利用串口接收zigbee发送的数据,然后写入SD卡。可是出现了掉包的情况。大概是每十组数据才写入1组。搞了一天不知道是什么原因,大家帮忙指导一下。串口波特率设置的115200,每次发送15个数,然后5个数一组存入SD卡。程序如下:
[mw_shl_code=c,true] while(1)
{
if(USART_RX_STA&0x8000) //
{
len=USART_RX_STA&0x3fff;
if(len==15)
{
for(t=0;t<5;t++)xdata[t]= USART_RX_BUF[t];
for(t=5;t<10;t++)ydata[t-5]= USART_RX_BUF[t];
for(t=10;t<15;t++)zdata[t-10]= USART_RX_BUF[t];
write_file("0:value_xyz.txt",xdata,ydata,zdata,0x02);
}
USART_RX_STA=0;
}
} [/mw_shl_code]
[mw_shl_code=c,true]void write_file(u8*path,u8*dat_x,u8*dat_y,u8*dat_z,u8 mode)
{
u8 res;
u8 hh[1]={0x0a};
res=f_open(file,(const TCHAR*)path,mode);
if(res==0x0)res=f_lseek(file,file->fsize);
if(res==0x0)res=f_write(file,dat_x,5,&bw);
if(res==0x0)res=f_write(file,",",1,&bw);
if(res==0x0)res=f_write(file,dat_y,5,&bw);
if(res==0x0)res=f_write(file,",",1,&bw);
if(res==0x0)res=f_write(file,dat_z,5,&bw);
if(res==0x0)res=f_write(file,hh,1,&bw);
if(res==0x0)res=f_sync(file);
}[/mw_shl_code]
|