本帖最后由 liumeili 于 2026-7-15 11:12 编辑
主控:GD32F470,读写U盘数据,读取数据成功。USB使用的是GD官方提供的库《GD32F4xx_Firmware_Library_V3.3.2》。U盘使用的读卡器+SD卡,SD卡512M与32G。
写入数据时,最后一次写入的数据不成功,通过PC查看U盘数据,最后一次写入的数据已经写到U盘中,但是文件大小没有更新,导致最后一次写入的数据无法读出。
测试代码每秒触发一次,通过控制变量测试U盘读写。
[C] 纯文本查看 复制代码 static BYTE s_Buf[100], s_Len;
int api_UDiskTest(void)
{
UINT Size = 0;
FIL tFil = {0};
if(usbh_usr_application_state != eUsbh_Usr_FS_RdWrfile)
{
return -1;
}
if(s_Len == 0)
{
return -1;
}
if (f_open(&tFil, "0:/WUpdataC.txt", FA_READ|FA_WRITE) != FR_OK)
{
return -1;
}
//写入到文件末尾
if (f_lseek(&tFil, f_size(&tFil)) != FR_OK)
{
f_close(&tFil);
return -1;
}
if (f_write(&tFil, s_Buf, s_Len, &Size) != FR_OK)
{
f_close(&tFil);
return -1;
}
memset(s_Buf, 0x00, sizeof(s_Buf));
//将写入的数据读出
if (f_lseek(&tFil, f_size(&tFil) - s_Len) != FR_OK)
{
f_close(&tFil);
return -1;
}
if (f_read(&tFil, s_Buf, s_Len, &Size) != FR_OK)
{
f_close(&tFil);
return -1;
}
f_sync(&tFil);
f_close(&tFil);
s_Len = 0;
return Size;
}
|