我写了一个在内存卡中读取数据并发送的程序,程序编译没有任何错误,但是一下载到STM32中串口就发送系统错误的信息。 >>>>>>>>>>>>>>>>>>>>>>>SYSTEM ERROR</pp>>SYSTEM ERRORFileNameLen[1]; Buffer[9]=(unsigned char)Buf->FileName[0]; Buffer[10]=(unsigned char)Buf->FileName[1]; Buffer[11]=(unsigned char)Buf->FileName[2]; Buffer[12]=(unsigned char)Buf->FileName[3]; Buffer[13]=(unsigned char)Buf->FileName[4]; // LCD_Str_CH_P(240,10,"缓冲区赋值成功",0); // LCD_Str_O_P(300, 10, "Buffer ready", 0); f_mount(1,&Datafs); Datares=f_open(&Datafsrc,tmp_name,FA_READ); if(Datares==FR_OK) { //LCD_Str_CH_P(260,10,"成功打开文件",0); LCD_Str_O_P(300, 10, "openfile", 0); for(;;) { //这里分段是从i=0开始 if(iSegment) //如果分段不满 { j=1000; Buffer[14]=j&0x00ff; Buffer[15]=(j>>8)&0x00ff; Buffer[16]=Buffer[14]; Buffer[17]=Buffer[17]; Datares=f_read(&Datafsrc,&Buffer[18],1000,&mybw); // USART1_printf(USART1,"%s",Buffer);//发送mms Buffer[5]=i; Buffer[5]=i; //到这里,Buffer的头部分已经准备好了 } if(i==Buf->Segment) //如果分段满 5, 0,1,2,3,4,5 实际有六段,5段为满1000的,最后一段为不满1000的 { //这时候DataLen[0]=5,假如Buffer=5800,那么,满1000的有5段,不满1000的为最后一段 Buffer[14]=Buf->DataLen[1]&0x00ff; Buffer[15]=(Buf->DataLen[1]>>8)&0x00ff; Buffer[16]=Buffer[14]; Buffer[17]=Buffer[17]; Datares=f_read(&Datafsrc,&Buffer[18],Buf->DataLen[0],&mybw); // USART1_printf(USART1,"%s",Buffer); break; // for() } i++; } } f_close(&Datafsrc); } |