OpenEdv-开源电子网

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

sd卡建立txt文件

[复制链接]

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2014-4-2
在线时间
23 小时
发表于 2014-11-11 22:03:40 | 显示全部楼层 |阅读模式
5金钱
大家好!,小屁孩求教。。我想在战舰开发板综合实验基础上添加一个功能,就是在sd卡里面建文本文件,然后写数据保存,,,我参考那个关于“记事本”的程序代码自己写来写去都不能建文件,
recode_new_pathname(pname);//取时间命名文件。
*sname=*pname;
res=f_open(f_txt,(const TCHAR*)sname,FA_READ|FA_WRITE|FA_CREATE_NEW);//创建新文件
f_lseek(f_txt,0);文件指针指向文件头
if(res=0)f_write(f_txt,btbuf,strlen(btbuf),&a);////写入数据
f_close(f_txt);//关闭文件
大概就是这个代码,建不了txt文件,,这个有什么缺的东西吗?

最佳答案

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

好久没时间玩stm32,前天终于弄出来了。。。可能有错,但建新文件成功,想写什么就能写什么了,。。。来分享一下 在战舰STM32开发板第40例程下改改代码就行了,别的地方不用看了。。。 int main(void)  {          char *b="ffssfssffdw";//随便定义了一下        char *btbuf="dkfjhsdfkdshfdsk";////随便定义了一下 delay_init(); &nbs ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2014-4-2
在线时间
23 小时
 楼主| 发表于 2014-11-11 22:03:41 | 显示全部楼层
好久没时间玩stm32,前天终于弄出来了。。。可能有错,但建新文件成功,想写什么就能写什么了,。。。来分享一下
在战舰STM32开发板第40例程下改改代码就行了,别的地方不用看了。。。
int main(void)
 {  
      
char *b="ffssfssffdw";//随便定义了一下
       char *btbuf="dkfjhsdfkdshfdsk";////随便定义了一下
delay_init();       //延时函数初始化   
NVIC_Configuration();   //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600);   //串口初始化为9600
  LED_Init();      //LED端口初始化
LCD_Init();  //初始化液晶
KEY_Init();    //初始化按键
exfuns_init(); //为fatfs相关变量申请内存 
usmart_dev.init(72);
  mem_init(SRAMIN); //初始化内部内存池
SD_Initialize();
   f_mount(0,*fs);//注册工作区域
res=f_mkdir("0ATA");//在SD卡里面新建文件夹
        res=f_open(&f_txt,(const TCHAR*)b,FA_OPEN_ALWAYS | FA_WRITE);//新建文件,其中b是一个字符数组,先强制转换constant char类型,再用来做文件名,用FA_ALWAYS_CREATE就建不了新文件,不知道为什么。
f_lseek(&f_txt,0);
        f_write(&f_txt,btbuf,strlen(btbuf),(UINT*)&br);写入数据
        f_close(&f_txt);
}
      整个程序就不贴过来了,改了这个以后能创建文件了,创建以后可以把btbuf里的内容写到里面并保存了。
    其实这个FATFS文件系统里面的微不足道的知识,没什么难度,不过希望能帮助像我一样刚开始学FATFS的小鸟。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-11 22:15:55 | 显示全部楼层
*sname=*pname;
改为:
sname=pname
另外,pname,你申请了内存吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2014-4-2
在线时间
23 小时
 楼主| 发表于 2014-11-13 16:32:50 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
 申请了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-13 20:02:04 | 显示全部楼层
回复【3楼】巴哈德:
---------------------------------
那你单步跟踪下吧,看看每个步骤返回结果是什么,根据返回结果判断错误类型。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2014-4-2
在线时间
23 小时
 楼主| 发表于 2014-11-14 22:29:03 | 显示全部楼层
回复【4楼】正点原子:
--------------------------------
行,我试试。。。。好不容易周末来了。。。可以安安心心地继续学32了。。。。
回复

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2014-12-22 16:49:30 | 显示全部楼层
mark 顶起来先!
原子哥是不是又要出黑科技了呀。^_^...
回复

使用道具 举报

11

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-1-5
在线时间
15 小时
发表于 2015-1-16 11:48:52 | 显示全部楼层
我试着做了一下,可以新建和写入。但问题是 只能写一行,第二次写入,直接覆盖上一次的。再就是,新建文件在根目录下,怎么建立到制定文件夹下呢?
回复

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2014-4-2
在线时间
23 小时
 楼主| 发表于 2015-3-10 12:18:57 | 显示全部楼层
回复【8楼】trustme77:
--------------------------------
文件的名字改一下就不会覆盖了吧
回复

使用道具 举报

11

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-1-5
在线时间
15 小时
发表于 2015-3-25 14:22:26 | 显示全部楼层
问题以解决,谢谢回复
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-3-20
在线时间
0 小时
发表于 2015-4-2 19:41:19 | 显示全部楼层
回复【6楼】巴哈德:
---------------------------------
你好,我是用18B20采集温度,怎样保存到SD卡里面的文件夹
回复

使用道具 举报

15

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2012-11-21
在线时间
9 小时
发表于 2015-7-14 10:55:24 | 显示全部楼层



我用5楼的main代码,为什么有errors,是因为少什么头文件吗?(FATFS实验,我是探索者F407)
回复

使用道具 举报

16

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
149
金钱
149
注册时间
2013-7-25
在线时间
1 小时
发表于 2015-7-22 22:17:01 | 显示全部楼层
回复【12楼】daska110:
---------------------------------
相关变量没定义,该有的.h文件没添加
回复

使用道具 举报

4

主题

18

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2016-6-1
在线时间
7 小时
发表于 2016-6-2 16:13:16 | 显示全部楼层
巴哈德 发表于 2014-11-11 22:03
好久没时间玩stm32,前天终于弄出来了。。。可能有错,但建新文件成功,想写什么就能写什么了,。。。来分 ...

楼主,可以发一份程序吗,学习学习
回复

使用道具 举报

14

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
296
金钱
296
注册时间
2016-6-23
在线时间
29 小时
发表于 2016-7-20 12:29:48 | 显示全部楼层
巴哈德 发表于 2014-11-11 22:03
好久没时间玩stm32,前天终于弄出来了。。。可能有错,但建新文件成功,想写什么就能写什么了,。。。来分 ...

您好,您说的这个第40个例程叫什么?我这的地40个是汉字显示实验啊   谢谢
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2012-9-16
在线时间
21 小时
发表于 2017-2-28 16:32:16 | 显示全部楼层
做个记号
回复

使用道具 举报

jianhuyy 该用户已被删除
发表于 2017-3-6 13:47:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2013-8-4
在线时间
3 小时
发表于 2017-7-9 21:49:07 | 显示全部楼层
本帖最后由 lqb7733 于 2017-7-9 21:50 编辑

楼主,我按你的方法修改的编译通不过,提示如下:main.c(90):
error:  #20: identifier "res" is undefined                 
      res=f_mkdir("0ATA"); main.c(91):
error:  #20: identifier "f_txt" is undefined               
     res=f_open(&f_txt,(const TCHAR*)b,FA_OPEN_ALWAYS | FA_WRITE); main.c: 0 warnings, 2 errors

其它的都没修改,怎么会这样呢?
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2013-8-4
在线时间
3 小时
发表于 2017-7-10 10:31:48 | 显示全部楼层
楼主,我写成这样也能行,不知道这样做对不对,如果有人按楼主的方式出错的,像12楼一样的,可以按下面我做的这样。

int main(void)
{         
                u32 total,free;         
          u8 t=0;   
                char *b="f.txt";
                char *btbuf="qwertyuiopasdfghjklzxcvbnm";
          FIL f_txt;
          FRESULT res;
                delay_init();                              
                NVIC_Configuration();           
                uart_init(9600);                  
                LED_Init();            
                LCD_Init();         
                KEY_Init();          
                exfuns_init();  
                usmart_dev.init(72);       
                mem_init(SRAMIN);
                SD_Initialize();       
                f_mount(0,*fs);
          res=f_mkdir("0ATA");
                res=f_open(&f_txt,(const TCHAR*)b,FA_OPEN_ALWAYS | FA_WRITE);
                f_lseek(&f_txt,0);
                f_write(&f_txt,btbuf,strlen(btbuf),(UINT*)&br);
                f_close(&f_txt);
               
               
                 POINT_COLOR=RED;//éèÖÃ×ÖìåÎaoìé«          
        LCD_ShowString(60,50,200,16,16,"WarShip STM32");       
        LCD_ShowString(60,70,200,16,16,"FATFS TEST");       
        LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(60,110,200,16,16,"Use USMART for test");          
        LCD_ShowString(60,130,200,16,16,"2012/9/18");          

        while(SD_Initialize())                                        //¼ì2aSD¿¨
        {
                LCD_ShowString(60,150,200,16,16,"SD Card Error!");
                delay_ms(200);
                LCD_Fill(60,150,240,150+16,WHITE);//Çå3yÏÔê¾                          
                delay_ms(200);
                LED0=!LED0;//DS0éá˸
        }                                                                          
        exfuns_init();                                                        //ÎafatfsÏà1رäá¿éêÇëÄú′æ                                 
          f_mount(0,fs[0]);                                                  //1òÔØSD¿¨
        f_mount(1,fs[1]);                                             //1òÔØFLASH.  
        while(exf_getfree("0",&total,&free))        //μÃμ½SD¿¨μÄ×üèYá¿oíê£óàèYá¿
        {
                LCD_ShowString(60,150,200,16,16,"Fatfs Error!");
                delay_ms(200);
                LCD_Fill(60,150,240,150+16,WHITE);//Çå3yÏÔê¾                          
                delay_ms(200);
                LED0=!LED0;//DS0éá˸
        }                                                                                                         
        POINT_COLOR=BLUE;//éèÖÃ×ÖìåÎaà¶é«          
        LCD_ShowString(60,150,200,16,16,"FATFS OK!");       
        LCD_ShowString(60,170,200,16,16,"SD Total Size:     MB");         
        LCD_ShowString(60,190,200,16,16,"SD  Free Size:     MB");             
        LCD_ShowNum(172,170,total>>10,5,16);                                        //ÏÔê¾SD¿¨×üèYá¿ MB
        LCD_ShowNum(172,190,free>>10,5,16);                                                //ÏÔê¾SD¿¨ê£óàèYá¿ MB                       
                while(1)
        {  
                t++;
                delay_ms(200);                                           
                LED0=!LED0;
        }
}
回复

使用道具 举报

77

主题

203

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1208
金钱
1208
注册时间
2017-8-25
在线时间
167 小时
发表于 2017-8-25 10:59:09 | 显示全部楼层
巴哈德 发表于 2014-11-11 22:03
好久没时间玩stm32,前天终于弄出来了。。。可能有错,但建新文件成功,想写什么就能写什么了,。。。来分 ...

只用改战舰第40例程的主程序么
回复

使用道具 举报

2

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2014-9-26
在线时间
26 小时
发表于 2017-9-29 15:04:04 | 显示全部楼层
kukuku  cool
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 20:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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