OpenEdv-开源电子网

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

SD卡文件系统的一个文件多次写入问题

[复制链接]

16

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
215
金钱
215
注册时间
2020-3-5
在线时间
36 小时
发表于 2021-1-3 10:12:10 | 显示全部楼层 |阅读模式
5金钱
根据上一个帖子我进行了修改
FIL        MyFile;                        // 文件对象

         u8 key=0;
         u16 BufferSize = 0;       
u8  FATFS_write(void)        //文件创建和写入测试
{
        u8 i = 0;


        UINT         MyFile_Num;                //        数据长度
        BYTE         MyFile_WriteBuffer[1024];
        BYTE         MyFile_ReadBuffer[1024];        //要读出的数据
        sprintf((char*)MyFile_WriteBuffer,"角度  x: %f,y: %f,z: %f地磁  x: %d,y: %d,z: %d\r\n",angle_x,angle_y,angle_z,Geomagnetism_x,Geomagnetism_y,Geomagnetism_z);


       
        printf("-------------FatFs 文件创建和写入测试---------------\r\n");
        if(!key)
        {
        MyFile_Res = f_open(&MyFile,"0:FatFs Test.txt",FA_CREATE_ALWAYS | FA_WRITE);        //打开文件,若不存在则创建该文件

        if(MyFile_Res == FR_OK)
        {
                printf("文件打开/创建成功,准备写入数据...\r\n");
               
               
                MyFile_Res = f_write(&MyFile,MyFile_WriteBuffer,sizeof(MyFile_WriteBuffer),&MyFile_Num);        //向文件写入数据
                        f_close(&MyFile);          //关闭文件
                if (MyFile_Res == FR_OK)       
                {
                        printf("写入成功,写入内容为:\r\n");
                        printf("%s\r\n",MyFile_WriteBuffer);
                }
                else
                {
                        printf("文件写入失败,请检查SD卡或重新格式化!\r\n");
                        f_close(&MyFile);          //关闭文件       
                        return ERROR;                       
                }
                               
        }

        else
        {
                printf("无法打开/创建文件,请检查SD卡或重新格式化!\r\n");
                f_close(&MyFile);          //关闭文件       
                return ERROR;               
        }
        key=1;
        BufferSize = f_tell(&MyFile);
}       
        else
                {
        MyFile_Res = f_open(&MyFile,"0:FatFs Test.txt", FA_OPEN_ALWAYS | FA_WRITE);        //打开文件,若不存在则创建该文件
         f_lseek(&MyFile,BufferSize);
  MyFile_Res = f_write(&MyFile,MyFile_WriteBuffer,sizeof(MyFile_WriteBuffer),&MyFile_Num);        //向文件写入数据
                          f_close(&MyFile);          //关闭文件       
                                        if (MyFile_Res == FR_OK)       
                {
                        printf("写入成功,写入内容为:\r\n");
                        printf("%s\r\n",MyFile_WriteBuffer);
                }
                else
                {
                        printf("文件写入失败,请检查SD卡或重新格式化!\r\n");
                        f_close(&MyFile);          //关闭文件       
                        return ERROR;                       
                }

                }
BufferSize = f_tell(&MyFile);
        printf("-------------FatFs 文件读取测试---------------\r\n");       
        return SUCCESS;
}

有数据但是数据之前有好多乱码
通过这个函数获得文件大小 f_tell(&MyFile)

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2021-1-4 02:27:43 | 显示全部楼层
最好用一个帖子描述问题
回复

使用道具 举报

16

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
215
金钱
215
注册时间
2020-3-5
在线时间
36 小时
 楼主| 发表于 2021-1-4 16:05:01 | 显示全部楼层
正点原子 发表于 2021-1-4 02:27
最好用一个帖子描述问题

嗯嗯好,谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-3-1 05:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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