STM32
直播中

刘静

7年用户 1257经验值
私信 关注
[问答]

STM32F105RB通过FATFS0.12C写U盘失败的原因?

从github上搬来的FATFS v0.12c代码;往U盘里文本文件写任意写符串(不超过30个字符)。第一次插入U盘失败,拔掉U盘再插入,就能写成功。
何故??
FATFS v0.12c源码:http://github.com/stm32duino/FatFs/tree/master/src

char *STR = "aa132cv41654654464rtyrryryrydfgs";
fr = f_open( fil ,"0:t123.txt",FA_OPEN_ALWAYS|FA_WRITE|FA_READ);

                        if(fr == FR_OK)
                        {
                                printf("文件打开成功!rn");
                //__disable_irq();
                                fr = f_write( fil,STR,strlen(STR),(UINT*)fw);
                //__enable_irq();
                                if(fr == FR_OK)
                                {
                                        printf("数据写入完成!rn");
                                }
                                else
                                {
                                        printf("数据写入失败!rn");
                                }
                                
                //HAL_Delay(200);

                                fr = f_close( fil);                        //首次加电,写入U盘失败时,此处返回 1 ;
                                
                                if(fr == FR_OK)
                                {
                                        printf("rn文件关闭成功.rn");
                                        printf("打印关闭文件代码:%drn",fr);
                                }
                                else
                                {
                                       
                    printf("rn文件关闭失败!rn");
                    printf("打印关闭文件代码:%drn",fr);

                                }
                                
                        }

回帖(1)

尚文清

2024-4-19 16:09:49
有几个可能的原因导致这个问题:

1. U盘的文件系统可能未能正确挂载。首次插入U盘时,操作系统可能需要一些时间来识别文件系统,并将其挂载为可写的目录。因此,当第一次尝试写入文件时会失败。当你拔掉U盘并再次插入时,操作系统可能已经完成了挂载过程,所以第二次尝试会成功写入。

2. U盘的文件系统可能不是FATFS支持的。FATFS库只支持FAT12、FAT16和FAT32文件系统。如果你的U盘使用的是其他文件系统,例如NTFS或exFAT,则可能无法成功写入文件。

3. U盘可能已经损坏。如果U盘出现了硬件问题或损坏,那么可能无法成功写入文件。在这种情况下,拔掉U盘并再次插入可能只是让操作系统重新检测并忽略了U盘上的损坏部分。

解决这个问题的方法有几个:

1. 确保你的U盘使用的是FAT文件系统。可以在电脑上格式化U盘,选择FAT32格式。

2. 在尝试写入文件之前,可以增加一些延迟时间,以等待操作系统正确挂载文件系统。

3. 检查U盘是否正常工作。尝试将U盘插入其他设备,如电脑或其他嵌入式系统,在这些设备上尝试写入文件,以确认U盘本身是否存在问题。

4. 确保你使用的是最新版本的FATFS库。可以检查并更新FATFS库,以获得更好的兼容性和稳定性。

总之,这个问题可能是由于U盘的文件系统不正确、U盘的损坏或FATFS库的问题所致。通过上述方法进行排查和修复,应该能解决这个问题。
1 举报

更多回帖

发帖
×
20
完善资料,
赚取积分