OpenEdv-开源电子网

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

又是FATFS方面的问题,最近都要被这个搞晕了

[复制链接]

17

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2015-10-22
在线时间
95 小时
发表于 2016-3-30 20:32:33 | 显示全部楼层 |阅读模式
1金钱
我设置一个按钮中断,每次按按钮都可以新建一个文件,然后在这个文件中写数据,
不中断新建文件,并写入数据可以实现了。每次按钮中断,新建一个文件也可以实现了,但是放在一起,按下按钮只有一个新建的文件,文件内没有写入数据
贴一下按钮中断函数
[mw_shl_code=applescript,true]void EXTI0_IRQHandler(void)
{
        delay_ms(10);        //消抖
        if(KEY0==0)        //PC0按键
        {                                 
         do
  {
   sprintf((char*)pch,"0:%d.txt",inum++);
   if(inum>500)inum=0;
   res1 = f_open(file,(char*)pch, FA_CREATE_NEW  | FA_WRITE);
         res1=f_close(file);   //关闭打开的文件
                printf("创建文件");
  }while(res1!=FR_OK);
       
  while(1)
        {
        if(t!=calendar.sec)
                {
                 
                 t=calendar.sec;
                 USART2->DR='w';       
                 if(USART2_RX_STA&0X8000)//串口2收到数据了
                 {
                        //Show_Str(0,0,240,16,"串口收到数据了",16,0);
                        rxlen=USART2_RX_STA&0x7FFF;                    //得到数据长度
                        write_buf=mymalloc(SRAMIN,FILE_MAX_SIZE); //申请FILE_MAX_SIZE字节的空间
                        for(i=0;i<rxlen;i++)
                        {
                                write_buf=USART2_RX_BUF;
                        }       
      pname=mymalloc(SRAMIN,FILE_MAX_SIZE); //申请FILE_MAX_SIZE字节的空间
                        f_open (file,"0:/inum.txt", FA_OPEN_EXISTING|FA_WRITE);
      res1=f_lseek(file,file->fsize);//移动文件指针
      sprintf((char*)pname,"%02d:%02d:%02d",calendar.hour,calendar.min,calendar.sec);               
                        //sprintf(s, "%.*s%.*s", strlen((const TCHAR*)pname), pname, rxlen, write_buf);
            res1=f_write(file,(const TCHAR*)pname,strlen((const TCHAR*)pname),&br);//向文件内写入时间
                        printf("%d:%d:%d\r\n",calendar.hour,calendar.min,calendar.sec);
                        printf("%d\r\n",calendar.sec);
                   res1=f_write(file,write_buf,rxlen,&br);//向文件内写入数据
                        printf("输入数据\r\n");
                        //res=f_write(file,s,sizeof(s),&br);
                        res1=f_write(file,huiche, sizeof(huiche),&br);//向文件内写入换行
                        res1=f_close(file);   //关闭打开的文件
             myfree(SRAMIN,pname);       
      myfree(SRAMIN,write_buf);                       
                        USART2_RX_STA=0; //启动下一次接收               
                  }
               
                 }
                }                 
        EXTI->PR=1<<0;  //清除LINE0上的中断标志位  
}
}[/mw_shl_code]
在串口调试助手中显示已经执行了向txt中写数据的操作 QQ截图20160330203134.png
但是打开txt文件里面并没有数据。是哪里出错了,想了半天了也没搞清楚哪里出了问题

最佳答案

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

哈哈, 你应该看看f_open (file,"0:/inum.txt", FA_OPEN_EXISTING|FA_WRITE);的返回结果,应该是错的,根本没有这个文件; sprintf((char*)pch,"0:%d.txt",inum++); res1 = f_open(file,(char*)pch, FA_CREATE_NEW | FA_WRITE); f_open (file,"0:/inum.txt", FA_OPEN_EXISTING|FA_WRITE); 仔细看看,你后面打开的文件是你前面创建的吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2013-12-17
在线时间
66 小时
发表于 2016-3-30 20:32:34 | 显示全部楼层
哈哈,
你应该看看f_open (file,"0:/inum.txt", FA_OPEN_EXISTING|FA_WRITE);的返回结果,应该是错的,根本没有这个文件;


sprintf((char*)pch,"0:%d.txt",inum++);
res1 = f_open(file,(char*)pch, FA_CREATE_NEW  | FA_WRITE);

f_open (file,"0:/inum.txt", FA_OPEN_EXISTING|FA_WRITE);


仔细看看,你后面打开的文件是你前面创建的吗?
回复

使用道具 举报

17

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2015-10-22
在线时间
95 小时
 楼主| 发表于 2016-3-31 07:58:49 | 显示全部楼层
大神们求助啊
回复

使用道具 举报

17

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2015-10-22
在线时间
95 小时
 楼主| 发表于 2016-3-31 10:23:09 | 显示全部楼层
xiaowu191 发表于 2016-3-31 09:54
哈哈,
你应该看看f_open (file,"0:/inum.txt", FA_OPEN_EXISTING|FA_WRITE);的返回结果,应该是错的,根 ...

输出6,The path name format is invalid路径名格式无效
那应该怎么写这个打开的文件名
回复

使用道具 举报

17

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2015-10-22
在线时间
95 小时
 楼主| 发表于 2016-3-31 10:25:43 | 显示全部楼层
本帖最后由 昊430 于 2016-3-31 10:33 编辑
xiaowu191 发表于 2016-3-31 09:54
哈哈,
你应该看看f_open (file,"0:/inum.txt", FA_OPEN_EXISTING|FA_WRITE);的返回结果,应该是错的,根 ...

OK了,谢谢指点啊,唉,自己写程序怎么看都是对的,大神一下就看出关键问题所在,谢谢你
res1=f_open (file,(char*)pch, FA_OPEN_EXISTING|FA_WRITE);

回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 06:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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