|
同志们,请教个问题,我移植了一个用FATFS写SD卡的程序,串口1接收的到的内容写到SD卡里,生成文件在主程序里做:串口1发送一组指令给另一个设备,它会把数据回传,串口1(115200)中断里接收,写到SD卡里并用另一个串口发给电脑,如果只转发给电脑而不写SD卡里(屏蔽红色部分),数据一个不少,如果写SD卡,就会丢一部分数据,请问,如何优化一下写SD卡呢,代码如下:
void USART1_IRQHandler(void) //串口1中断服务程序
{
u8 Res;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
Res =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据
USART3_Putc(Res); //1收到的数据用3发给电脑
ReceiveData_USART1[Cnt_Usart1] = Res; //接收到的数据存到缓冲区
Cnt_Usart1++; //计数
Cnt_1_Usart1++; //计总数
Cnt_TIM4=0; //清除TIM4计数
if (Cnt_Usart1>511)
{
Cnt_Usart1=0;
f_lseek(&fsrc,fsrc.fsize);
f_write(&fsrc,ReceiveData_USART1,512,&bw);
f_sync(&fsrc);
}
}
}
|