金牌会员
 
- 积分
- 1180
- 金钱
- 1180
- 注册时间
- 2018-9-11
- 在线时间
- 132 小时
|
20金钱
最近在弄SD卡以及FATFS文件系统,碰到了一点问题想来请教一下各位大神。
1、SD卡文件命名
因为我想根据实际情况不同来命名不同的文件名,
我用的是这个函数:f_open (&fil,file_name, FA_WRITE | FA_CREATE_NEW);
函数原型是:
FRESULT f_open (
FIL* fp, /* Pointer to the blank file object */
const TCHAR* path, /* Pointer to the file name */
BYTE mode /* Access mode and file open mode flags */
)
file_name我用了一个字符数组来表示,如果是固定字符串的话每次的文件名就都是一样的了。
char file_name[10];
file_name[0]='0';
file_name[1]=':';
file_name[2]='/';
file_name[3]=(char)name;
file_name[4]='2';
file_name[5]='.';
file_name[6]='t';
file_name[7]='x';
file_name[8]='t';
运行的时候返回值为6,创建文件失败。
大神们帮我看看,是哪里出错了。。。
还有,我在挂在SD卡的时候也经常性报错,
res_mount=f_mount(&sd_fs,"0:",1);
printf("\r\nf_mount res=%d\r\n\r\n",res_mount);
返回值为3,应该是物理性错误。
但有时候能挂载成功,有时候又挂载不上,是不是物理硬件方面接触不良导致了?
|
最佳答案
查看完整内容[请看2#楼]
我找到问题出在哪了。是我给变量赋值的时候有问题,当我把int型强转成char型的时候,int型的值就成了ASCII码的十进制数,对应成字符是一个文件命名的非法字符,所以创建文件一直不成功。我把int变量换成49 即对应字符‘1’的时候,创建就可以了!
|