你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
dabendan001 提问时间:2019-5-12 10:39 /
本帖最后由 dabendan001 于 2019-5-12 10:43 编辑

从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("文件打开成功!\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);

                                }
                                
                        }
收藏 评论6 发布时间:2019-5-12 10:39

举报

6个回答
maxtch 回答时间:2019-5-14 14:43:44
给我的感觉好像问题在于 USB。检查一下你的代码对于 USB 插入的处理,特别是上电时就已经有 USB 设备这个情况。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

dabendan001 回答时间:2019-5-19 23:13:15
maxtch 发表于 2019-5-14 14:43
给我的感觉好像问题在于 USB。检查一下你的代码对于 USB 插入的处理,特别是上电时就已经有 USB 设备这个情 ...

谢谢!

之前用的fatfs v0.11正常。
但这个版本不支持exFAT格式,所以才换v0.12版本。遇到上述问题。
maxtch 回答时间:2019-5-19 23:35:37
dabendan001 发表于 2019-5-19 23:13
谢谢!

之前用的fatfs v0.11正常。

你这是要多大啊,连 exFAT 都用上了。如果写入的文件这么大,改走网络也许可以更靠谱一点。(数据不滞留在设备上,随时采集随时上传。)而且 exFAT 还有专利授权问题,商用产品里面尽量别用。
dabendan001 回答时间:2019-5-23 12:00:16
maxtch 发表于 2019-5-19 23:35
你这是要多大啊,连 exFAT 都用上了。如果写入的文件这么大,改走网络也许可以更靠谱一点。(数据不滞留 ...

其实不需要往U盘里写大文件,支持exFAT的目的只有一个:能扫描枚举出U盘里的文件名,即可。
maxtch 回答时间:2019-5-23 12:17:48
dabendan001 发表于 2019-5-23 12:00
其实不需要往U盘里写大文件,支持exFAT的目的只有一个:能扫描枚举出U盘里的文件名,即可。 ...

如果是这样的话根本用不到支持 exFAT 啊?
dabendan001 回答时间:2019-5-23 12:36:12
maxtch 发表于 2019-5-23 12:17
如果是这样的话根本用不到支持 exFAT 啊?

??似乎是需要呢。
目前64GB以上的U盘,格式化时(win10),只能选择NTFS 或exFAT格式。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版