STM32的FATFS文件系统 无法建立文件 res返回值不为0,到底是怎么回事

f_mount(0,&fs);//创建一个工作区///*在刚开辟的工作区盘符0下创建新文件123.TXT*/res=f_open(&fdst,"0:/123.TXT",F... f_mount(0,&fs); //创建一个工作区 //

/* 在刚开辟的工作区盘符0下创建新文件123.TXT */
res = f_open(&fdst,"0:/123.TXT",FA_CREATE_NEW | FA_WRITE);
if ( res == FR_OK )
{

res=f_write(&fdst,textFileBuffer,sizeof(textFileBuffer),&bw);
printf( "\r\n File created succeed \n");
}
else
printf( "\r\n File created not succeed:%d \n",res);
res返回值不为0,意味着初始化失败?diskio.c里的初始化内容,不知是哪里出了问题
DSTATUS disk_initialize (BYTE drv) /* Physical drive nmuber (0..) */
{
SD_Error Status;
/* Supports only single drive */
if (drv)
{
return STA_NOINIT;
}
//SD Init
Status = SD_Init();
if (Status!=SD_OK )
{
return STA_NOINIT;
}
else
{
return RES_OK;
}
}
展开
 我来答
百度网友6fe833056
2015-04-21 · TA获得超过123个赞
知道答主
回答量:40
采纳率:0%
帮助的人:47.8万
展开全部
问题没表述清楚,f_open的返回不为零的可能性有很多种,你可以根据具体的返回值,找到错误类型
下面是具体的错误类型:
typedef enum {
FR_OK = 0, /* (0) Succeeded */
FR_DISK_ERR, /* (1) A hard error occurred in the low level disk I/O layer */
FR_INT_ERR, /* (2) Assertion failed */
FR_NOT_READY, /* (3) The physical drive cannot work */
FR_NO_FILE, /* (4) Could not find the file */
FR_NO_PATH, /* (5) Could not find the path */
FR_INVALID_NAME, /* (6) The path name format is invalid */
FR_DENIED, /* (7) Access denied due to prohibited access or directory full */
FR_EXIST, /* (8) Access denied due to prohibited access */
FR_INVALID_OBJECT, /* (9) The file/directory object is invalid */
FR_WRITE_PROTECTED, /* (10) The physical drive is write protected */
FR_INVALID_DRIVE, /* (11) The logical drive number is invalid */
FR_NOT_ENABLED, /* (12) The volume has no work area */
FR_NO_FILESYSTEM, /* (13) There is no valid FAT volume */
FR_MKFS_ABORTED, /* (14) The f_mkfs() aborted due to any parameter error */
FR_TIMEOUT, /* (15) Could not get a grant to access the volume within defined period */
FR_LOCKED, /* (16) The operation is rejected according to the file sharing policy */
FR_NOT_ENOUGH_CORE, /* (17) LFN working buffer could not be allocated */
FR_TOO_MANY_OPEN_FILES, /* (18) Number of open files > _FS_SHARE */
FR_INVALID_PARAMETER /* (19) Given parameter is invalid */
} FRESULT;

还有f_mount也有返回值,你应该看看是否mount成功。
更多追问追答
追问
谢谢你指点

我看了一下 f_mont 的返回值是FR_OK,但f_open的返回值是FR_NOT_READY(驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作)。
不是很清楚,这到底是什么原因?
追答
应该是SD卡驱动问题吧,重点检查diskio.c文件中的disk_initialize()、disk_status()、disk_read()、disk_write()这几个函数
心海love汤圆儿
2018-03-30 · TA获得超过1448个赞
知道答主
回答量:10
采纳率:0%
帮助的人:1403
展开全部

f_open的返回不为零的可能性有很多种,可以根据具体的返回值,找到错误类型。


下面是具体的错误类型:


typedef enum {
FR_OK = 0, /* (0) Succeeded */


FR_DISK_ERR, /* (1) A hard error occurred in the low level disk I/O layer */


FR_INT_ERR, /* (2) Assertion failed */


FR_NOT_READY, /* (3) The physical drive cannot work */


FR_NO_FILE, /* (4) Could not find the file */


FR_NO_PATH, /* (5) Could not find the path */


FR_INVALID_NAME, /* (6) The path name format is invalid */


FR_DENIED, /* (7) Access denied due to prohibited access or directory full */


FR_EXIST, /* (8) Access denied due to prohibited access */

FR_WRITE_PROTECTED, /* (10) The physical drive is write protected */


FR_INVALID_DRIVE, /* (11) The logical drive number is invalid */


FR_NOT_ENABLED, /* (12) The volume has no work area */


FR_NO_FILESYSTEM, /* (13) There is no valid FAT volume */


FR_MKFS_ABORTED, /* (14) The f_mkfs() aborted due to any parameter error */


FR_TIMEOUT, /* (15) Could not get a grant to access the volume within defined period */


FR_LOCKED, /* (16) The operation is rejected according to the file sharing policy */


FR_NOT_ENOUGH_CORE, /* (17) LFN working buffer could not be allocated */


FR_TOO_MANY_OPEN_FILES, /* (18) Number of open files > _FS_SHARE */


FR_INVALID_PARAMETER /* (19) Given parameter is invalid */
} FRESULT;

还有f_mount也有返回值,你应该看看是否mount成功。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
查晓筠0i5
2015-04-20 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4948万
展开全部
关注
mark
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式