sd卡建立txt文件

2019-08-13 22:19发布

大家好!,小屁孩求教。。我想在战舰开发板综合实验基础上添加一个功能,就是在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文件,,这个有什么缺的东西吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
郝洋
1楼-- · 2019-08-15 12:41
巴哈德 发表于 2014-11-11 22:03
好久没时间玩stm32,前天终于弄出来了。。。可能有错,但建新文件成功,想写什么就能写什么了,。。。来分 ...

楼主,可以发一份程序吗,学习学习
lol
2楼-- · 2019-08-15 18:18
巴哈德 发表于 2014-11-11 22:03
好久没时间玩stm32,前天终于弄出来了。。。可能有错,但建新文件成功,想写什么就能写什么了,。。。来分 ...

您好,您说的这个第40个例程叫什么?我这的地40个是汉字显示实验啊   谢谢
zhangrufan
3楼-- · 2019-08-15 19:20
 精彩回答 2  元偷偷看……
lqb7733
4楼-- · 2019-08-15 23:19
本帖最后由 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

其它的都没修改,怎么会这样呢?
lqb7733
5楼-- · 2019-08-16 02:12
楼主,我写成这样也能行,不知道这样做对不对,如果有人按楼主的方式出错的,像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;
        }
}
逍遥1
6楼-- · 2019-08-16 05:36
巴哈德 发表于 2014-11-11 22:03
好久没时间玩stm32,前天终于弄出来了。。。可能有错,但建新文件成功,想写什么就能写什么了,。。。来分 ...

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

一周热门 更多>