纠结的 FATFS 结构体.....
在写一个函数的时候遇到个这样的问题:FRESULT CreateONEFile(const char *filename)
{
FATFS fs_cre; // Work area (file system object) for logical drive
FILfsrc; // file objects
FRESULT res; // FatFs function common result code
//
// Register a work area for logical drive 0
//
f_mount(0, &fs_cre);
// Createfile
res = f_open(&fsrc, filename, FA_CREATE_ALWAYS | FA_WRITE);
f_close(&fsrc);
return (res);
}
这是一个用 FATFS 系统写的一个生成一个文件的函数,写好了,语法没有错误,通过编译下载到 ARM 上,没想到,程序卡死了.但是如果把FATFS fs_cre 定义成 static FATFS fs_cre 或者 定义成全局变量就会很顺利,也能实现预想的功能!
我在调试的时候,它们的区别就是初始化和未被初始化.但是我又不想把把定义成静态或者全局的,剩下的就只有初始化为0,但是 FATFS 是文件系统自己定义的一个结构体,具体的成员我也不知道,所以初始化也不行.这便令我很纠结啊! 不知道有哪位大虾能帮小弟解决一下... 1. elm fatfs支持N个逻辑卷.每个逻辑卷的相关信息要保存起来.
使用f_mount来指定保存的地址.如果使用局部变量函数退出时就失效了.后果是不可预料的.
2. 局部变量过多要防止 栈溢出. 回复【楼主位】ngyg12
-----------------------------------------------------------------------
谢谢关注,针对失效的问题,我想了一下,如果我每使用一次,就注_册一次,即是使用一次 f_mount(0, &fs_cre);
这样的话,应该可以吧,所以是不是只要我在保证堆栈不溢出的情况下就能够操作成功呢?
页:
[1]