OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6386|回复: 10

stm32f407ve做host插入u盘,创建文件正常,但是写入数据错误

[复制链接]

14

主题

164

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1861
金钱
1861
注册时间
2012-5-19
在线时间
286 小时
发表于 2019-7-2 14:53:47 | 显示全部楼层 |阅读模式
20金钱
  1. //sd卡数据复制到U盘
  2. void SDDataToUpanProcess(void)
  3. {
  4. //FATFS fs_;        //逻辑磁盘工作区
  5. FIL U_fdst;        //文件
  6. FRESULT res;//状态变量
  7. typedef unsigned int        UINT;
  8. UINT br_,bw_;
  9.         res = f_open(&U_fdst,"2:\1.txt",FA_WRITE | FA_CREATE_ALWAYS);        //打卡U盘
  10.         if(res !=FR_OK){DEBUG_printf("U_open_ERR:%d\r\n",res); return ;}
  11.         else{DEBUG_printf("U_open_OK\r\n");}
  12.         
  13.         while(1)
  14.         {
  15.                 res = f_write(&U_fdst,"1234578\r\n",10,&bw_);    在这里不出来不知道为什么?
  16.                 res = res;
  17.                 if(res || bw_ < br_){DEBUG_printf("U_write_error disk full:%d-%d\r\n",res,bw_); break ;}
  18.         }
  19.         f_close(&U_fdst);
  20.         DEBUG_printf("f_close\r\n");
  21. }
复制代码
res = f_write(&U_fdst,"1234578\r\n",10,&bw_);    在这里不出来不知道为什么?



下面的代码创建1.txt文件是正常的
  1. //sd卡数据复制到U盘
  2. void SDDataToUpanProcess(void)
  3. {
  4. //FATFS fs_;        //逻辑磁盘工作区
  5. FIL U_fdst;        //文件
  6. FRESULT res;//状态变量
  7. typedef unsigned int        UINT;
  8. UINT br_,bw_;
  9. res = f_open(&U_fdst,"2:\1.txt",FA_WRITE | FA_CREATE_ALWAYS);        //打卡U盘
  10. if(res !=FR_OK){DEBUG_printf("U_open_ERR:%d\r\n",res); return ;}
  11. else{DEBUG_printf("U_open_OK\r\n");}

  12. f_close(&U_fdst);
  13. DEBUG_printf("f_close\r\n");
  14. }
复制代码


最佳答案

查看完整内容[请看2#楼]

找到问题了,是u盘的兼容问题,用金士顿的就没有问题,用闪迪的就不行,不知道如何优化代码 把u的库升级最新的v2.2问题完美解决了,
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

164

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1861
金钱
1861
注册时间
2012-5-19
在线时间
286 小时
 楼主| 发表于 2019-7-2 14:53:48 | 显示全部楼层
本帖最后由 zhcj66 于 2019-7-4 08:59 编辑
翼行园子 发表于 2019-7-2 18:20
U盘是不是写保护什么的了  格式化下U盘在去读写试下

找到问题了,是u盘的兼容问题,用金士顿的就没有问题,用闪迪的就不行,不知道如何优化代码

把u的库升级最新的v2.2问题完美解决了,
回复

使用道具 举报

14

主题

164

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1861
金钱
1861
注册时间
2012-5-19
在线时间
286 小时
 楼主| 发表于 2019-7-2 15:30:10 | 显示全部楼层
读取内容也正常
  1. res=f_open (&U_fdst,"2:/1.txt", FA_READ);          //读方式打开配置文件
  2. //        f_lseek(&fil0,i*6);             //每次读取之前先移动读写指针达到读写不同数据的目的
  3.     if(res !=FR_OK){DEBUG_printf("ERR:%d\r\n",res);}
  4.         res=f_read (&U_fdst, buf,100,&br_);                        //读取文件到buf
  5.         if(res !=FR_OK){DEBUG_printf("ERR:%d\r\n",res);}
  6.         f_close(&U_fdst);                                                                        //关闭文件
  7. //        configbound = atol(buf);                                                 //使用stdlib.h头文件里面的函数将字符串转换为数字
  8.         printf("读取1.txt配置文件\r\n内容为:\r\n%s\r\n",buf);//将数字使用printf函数输出
复制代码
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14435
金钱
14435
注册时间
2018-8-3
在线时间
1157 小时
发表于 2019-7-2 16:06:38 | 显示全部楼层
返回值 读出来Res 是什么
回复

使用道具 举报

14

主题

164

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1861
金钱
1861
注册时间
2012-5-19
在线时间
286 小时
 楼主| 发表于 2019-7-2 16:10:44 | 显示全部楼层
本帖最后由 zhcj66 于 2019-7-2 16:21 编辑
翼行园子 发表于 2019-7-2 16:06
返回值 读出来Res 是什么

没有跳出这个函数 所以没有返回,一直在这个函数里面,拔下u盘就可以跳出来了
回复

使用道具 举报

14

主题

164

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1861
金钱
1861
注册时间
2012-5-19
在线时间
286 小时
 楼主| 发表于 2019-7-2 16:37:08 | 显示全部楼层
翼行园子 发表于 2019-7-2 16:06
返回值 读出来Res 是什么

死在
res=USBH_MSC_Read10(&USB_OTG_Core,buf,sector,512*cnt);
res 返回状态是3

读的时候是正常的,写的时候就出现了错误
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14435
金钱
14435
注册时间
2018-8-3
在线时间
1157 小时
发表于 2019-7-2 18:20:44 | 显示全部楼层
zhcj66 发表于 2019-7-2 16:37
死在
res=USBH_MSC_Read10(&USB_OTG_Core,buf,sector,512*cnt);
res 返回状态是3

U盘是不是写保护什么的了  格式化下U盘在去读写试下
啊哈~加油!!
回复

使用道具 举报

14

主题

164

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1861
金钱
1861
注册时间
2012-5-19
在线时间
286 小时
 楼主| 发表于 2019-7-3 08:59:44 | 显示全部楼层
翼行园子 发表于 2019-7-2 18:20
U盘是不是写保护什么的了  格式化下U盘在去读写试下

没有写保护
回复

使用道具 举报

1

主题

232

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3503
金钱
3503
注册时间
2015-4-19
在线时间
377 小时
发表于 2020-12-14 16:26:00 | 显示全部楼层
你好,这个最大可以支持到多少G的U盘
回复

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2020-12-15 09:09:13 | 显示全部楼层
jinniuxing 发表于 2020-12-14 16:26
你好,这个最大可以支持到多少G的U盘

64G,128G都行,看你的U盘用什么文件系统
1-1
回复

使用道具 举报

1

主题

232

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3503
金钱
3503
注册时间
2015-4-19
在线时间
377 小时
发表于 2020-12-15 14:02:08 | 显示全部楼层
哦,谢谢,格式化成FAT32
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-17 02:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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