打印
[STM32F1]

STM32F105RB通过FATFS0.12C写U盘失败!

[复制链接]
1307|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dabendan001|  楼主 | 2019-5-12 10:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
从github上搬来的FATFS v0.12c代码;往U盘里文本文件写任意写符串(不超过30个字符)。第一次插入U盘失败,拔掉U盘再插入,就能写成功。
何故??
FATFS v0.12c源码:https://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("文件打开成功!\r\n");
                //__disable_irq();
                                fr = f_write(&fil,STR,strlen(STR),(UINT*)fw);
                //__enable_irq();
                                if(fr == FR_OK)
                                {
                                        printf("数据写入完成!\r\n");
                                }
                                else
                                {
                                        printf("数据写入失败!\r\n");
                                }
                                
                //HAL_Delay(200);

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

                                }
                                
                        }

使用特权

评论回复
沙发
mmuuss586| | 2019-5-12 11:09 | 只看该作者
这方面不熟,帮顶下

使用特权

评论回复
板凳
dabendan001|  楼主 | 2019-5-27 00:23 | 只看该作者
困扰我许久了,今天终于解决了。感谢论坛里诸位大神的回贴帮助。
解决办法:
ffconf.h文件中,我将 _MAX_SS 和 _MIN_SS均置为512了……问题所在。
改为:
#define        _MIN_SS                512
#define        _MAX_SS                4096
即可。

使用特权

评论回复
地板
buffered| | 2019-5-27 16:57 | 只看该作者
一起学习下经验

使用特权

评论回复
5
八层楼| | 2019-6-12 09:17 | 只看该作者
这方面不太了解 帮楼主顶一下吧

使用特权

评论回复
6
观海| | 2019-6-12 09:26 | 只看该作者
感觉Usb本来就不是那么稳定的东西

使用特权

评论回复
7
香水城| | 2019-6-12 13:10 | 只看该作者
谢谢分享反馈!

使用特权

评论回复
8
无为之益| | 2019-9-18 11:16 | 只看该作者
dabendan001 发表于 2019-5-27 00:23
困扰我许久了,今天终于解决了。感谢论坛里诸位大神的回贴帮助。
解决办法:
ffconf.h文件中,我将 _MAX_SS ...

不是吧?我就是直接用官方的设置,每次都可以正确读写,我的设置就是
#define        FF_MIN_SS                512
#define        FF_MAX_SS                512
可能你程序别的地方有判断?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

41

帖子

0

粉丝