硬汉嵌入式论坛

 找回密码
 立即注册
查看: 36|回复: 2
收起左侧

[FatFs] GD32F470 USB FATFS U盘

[复制链接]

0

主题

0

回帖

0

积分

新手上路

积分
0
发表于 前天 11:02 | 显示全部楼层 |阅读模式
本帖最后由 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;
}

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
123497
QQ
发表于 昨天 11:47 | 显示全部楼层
搞个骚操作试试,最后一次操作fatfs unmout卸载一次,然后重新挂载测试看看
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
123497
QQ
发表于 昨天 11:47 | 显示全部楼层
搞个骚操作试试,最后一次操作fatfs unmout卸载一次,然后重新挂载测试看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-7-17 05:53 , Processed in 1.120275 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表