OpenEdv-开源电子网

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

F407 FATFS 生成的文件有乱码~~~~~~

[复制链接]

5

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2016-2-18
在线时间
13 小时
发表于 2016-9-8 15:28:51 | 显示全部楼层 |阅读模式
3金钱
    首先我改写了实验例程,在main函数中,while(1)之前加入了如下代码:        #define FILE_WRITE_BUFF_LEN                128         #define FILE_READ_BUFF_LEN                1024
        u8 g_file_read_buff[FILE_READ_BUFF_LEN] = {0};
        FIL f_record;
        FRESULT f_res = FR_DISK_ERR;
        UINT file_write_position_point = 0;
        UINT file_read_position_point = 0;


      ………………………………………………
      ………………………………………………



        memset(&f_record,0,sizeof(FIL));
       
        f_res = f_open(&f_record,"0:/Rrcord.txt",FA_OPEN_ALWAYS | FA_READ | FA_WRITE);
        if (FR_OK != f_res)
        {
                printf("%s %d Record.txt open failed!\r\n",__FILE__,__LINE__);
                memset(&f_record,0,sizeof(FIL));
                return -1;
        }
       
        f_res = f_write(&f_record,"This is a test buffer,write to sd card!\n",FILE_WRITE_BUFF_LEN,&file_write_position_point);
        if (FR_OK != f_res)
        {
                printf("%s %d Record.txt write failed!\r\n",__FILE__,__LINE__);
                memset(&f_record,0,sizeof(FIL));
                return -1;
        }
       
        f_lseek(&f_record,0);
       
        f_res = f_read(&f_record,(void *)g_file_read_buff,FILE_READ_BUFF_LEN,&file_read_position_point);
        if (FR_OK != f_res)
        {
                printf("%s %d Record.txt read failed!\r\n",__FILE__,__LINE__);
                memset(&f_record,0,sizeof(FIL));
                return -1;
        }
       
        f_res = f_close(&f_record);
        if (FR_OK != f_res)
        {
                printf("%s %d Record.txt close failed!\r\n",__FILE__,__LINE__);
                memset(&f_record,0,sizeof(FIL));
                return -1;
        }
       
        printf("%s %d Record.txt = %s\r\n",__FILE__,__LINE__,g_file_read_buff);


我的做法是下载程序到开发板后,关闭开发板电源,sd卡连pc,清除sd卡,然后再插上sd卡,然后打开开发板电源,串口一直连接,打开串口调试助手后,看到终端打印信息也正常。 图片1.png ,但是在sd卡中生成的文本文档文件中除了应当有的字符串外还有别的东西!!! 图片2.png ,不知道这些东西怎么会写入到我的文件里的?自己调了好久也没调通,求助原子哥及各位大神!!!




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2016-2-18
在线时间
13 小时
 楼主| 发表于 2016-9-8 15:43:36 | 显示全部楼层
请各位给帮忙分析分析,小弟在此先谢过~!
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
发表于 2016-9-8 15:46:56 | 显示全部楼层
FIL f_record;这个FIL好像是结构体类型吧?
你这里直接 memset(&f_record,0,sizeof(FIL));这个是什么鬼?
回复

使用道具 举报

11

主题

49

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2016-8-24
在线时间
65 小时
发表于 2016-9-8 16:01:55 | 显示全部楼层
同求,我也正在弄这个东西,把ADC采集到的数据存在数组里然后以.txt的形式放到SD卡里。
回复

使用道具 举报

5

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2016-2-18
在线时间
13 小时
 楼主| 发表于 2016-9-10 08:27:40 | 显示全部楼层
zhoujianwen 发表于 2016-9-8 15:46
FIL f_record;这个FIL好像是结构体类型吧?
你这里直接 memset(&f_record,0,sizeof(FIL));这个是什么鬼?

数据清0啊,所有的缓存,结构体在使用前最好都要清0啊
回复

使用道具 举报

12

主题

228

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1730
金钱
1730
注册时间
2016-3-8
在线时间
678 小时
发表于 2016-9-10 08:51:09 | 显示全部楼层
我之前遇到过一个类似的情况,写入数据是对的,在文件中查看的时候是乱码。
然后我换了一张卡,没这个问题。后来我把原来的SD卡格式化也解决了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-13 17:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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