OpenEdv-开源电子网

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

fatfs文件系统 新建文件 程序卡死

[复制链接]

8

主题

20

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-9-21
在线时间
17 小时
发表于 2016-2-25 11:39:04 | 显示全部楼层 |阅读模式
1金钱
int main(void)
{
        FIL fil;
        FATFS fs;
        FRESULT res;

        SystemInit();
        Usart_Configuration();
        delay_init(72);
        NVIC_Configuration();
        SD_Init();
        delay_ms(10);
        //disk_initialize(0);
        f_mount(0, &fs);

        f_open(&fil,"temp_save.txt",FA_READ);
        std_file(fil,20);
        f_close(&fil);

    printf("\n   ok!   \n");
       
    for(;;);       
}

int *std_file(FIL n, int length)
        {
                FIL out;
                int i=0;
                int j=0;
                int mean[3]={0,0,0};
                int *miu;
                int temp;
                int *o = 0;
               
                char pBuf[30];
                char mBuf[30];
                char *data_new;
                char *mean_new;
                int temp2;

        printf("\n  指示1  \n");
        f_open(&out,"std_save.txt",FA_CREATE_ALWAYS);
        f_close(&out);
        printf("\n  指示1。1  \n");
        f_open(&out,"std_save.txt",FA_WRITE);

        printf("\n  指示1.2  \n");
........
........
}
程序如上,这样只能打印出:指示1
如果把这段代码放到主函数里面就能正常运行,,,请问这是什么原因啊?
printf("\n  指示1  \n");
        f_open(&out,"std_save.txt",FA_CREATE_ALWAYS);
        f_close(&out);
        printf("\n  指示1。1  \n");
        f_open(&out,"std_save.txt",FA_WRITE);

        printf("\n  指示1.2  \n");


最佳答案

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

解决了,指针问题。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

20

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-9-21
在线时间
17 小时
 楼主| 发表于 2016-2-25 11:39:05 | 显示全部楼层
回复

使用道具 举报

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-2-21
在线时间
9 小时
发表于 2016-2-25 12:22:49 | 显示全部楼层
程序是不是卡在 f_open(&out,"std_save.txt",FA_CREATE_ALWAYS);         f_close(&out); 其中一个的循环里了吧,某个函数没有执行完,一直在函数里内循环。
回复

使用道具 举报

8

主题

20

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-9-21
在线时间
17 小时
 楼主| 发表于 2016-2-25 13:33:26 | 显示全部楼层
小陨石 发表于 2016-2-25 12:22
程序是不是卡在 f_open(&out,"std_save.txt",FA_CREATE_ALWAYS);         f_close(&out); 其中一个的循环里 ...

恩,是的,,,这个是什么原因啊,放在main函数里面又可以。
回复

使用道具 举报

3

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-2-21
在线时间
9 小时
发表于 2016-2-25 19:17:16 | 显示全部楼层
放在main函数之后可以,很有可能是main函数里放的位置前面有其他函数或者设置存在,导致它能够执行下去,仔细检查一下,
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-2-25 21:55:02 | 显示全部楼层
堆栈的问题吧.           FIL fil;          FATFS fs;     这2个东西,全部放外部去.做全局变量.


回复

使用道具 举报

8

主题

20

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-9-21
在线时间
17 小时
 楼主| 发表于 2016-2-26 14:02:23 | 显示全部楼层
正点原子 发表于 2016-2-25 21:55
堆栈的问题吧.           FIL fil;          FATFS fs;     这2个东西,全部放外部去.做全局变量.

改完全局变量了,也没用。。。还是会卡在里面。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-3 00:11:48 | 显示全部楼层
std_file函数里面的,也放全局变量。
怀疑是堆栈溢出导致的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1850
金钱
1850
注册时间
2012-9-16
在线时间
286 小时
发表于 2016-3-3 09:49:37 | 显示全部楼层
结果怎么样了?
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 02:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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