我用的是fatfs0.07版本,需要用到长文件名。程序中
#define _USE_LFN 1 /* 0, 1 or 2 */
#define _MAX_LFN 255 /* Maximum LFN length to handle (12 to 255) */
#define _LFN_UNICODE 0 /* 0 or 1 */
编译之后存在这样的错误提示:
........STM324xG-EVAL_FS.axf: Error: L6218E: Undefined symbol ff_convert (referred from ff.o).
........STM324xG-EVAL_FS.axf: Error: L6218E: Undefined symbol ff_wtoupper (referred from ff.o).
这两个函数没有定义,我上网搜了一下这两个函数copy过来,但是又提示函数中的一些调用函数和变量未定义,如果全部自己再编写的话,太麻烦了。
我想弄个 长文件名有这么麻烦吗?
fatfs 0.09版本的是不是不存在这个问题了?
我到底怎么才能实现长文件名啊?
请大家帮帮忙啊,感激至极。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我的 长文件名都是英文的,不需要中文。
WCHAR ff_convert ( // Converted code, 0 means conversion error
WCHAR src, // Character code to be converted
UINT dir // 0: Unicode to OEMCP, 1: OEMCP to Unicode
)
{
WCHAR t[2];
WCHAR c;
u32 i, li, hi;
u16 n;
u32 gbk2uni_offset=0;
if (src < 0x80)
c = src;//ASCII,直接不用转换.
else
{
if(dir) //GBK 2 UNICODE
{
gbk2uni_offset=UNI2GBK_SIZE/2;
src = (src>>8)|(src<<8);
}
else //UNICODE 2 GBK
{
gbk2uni_offset=0;
}
//if(UK_FLAG)//存在
{
/* Unicode to OEMCP */
hi=UNI2GBK_SIZE/2;//对半开.
hi =hi / 4 - 1; //原尺寸是字节单位,除以4,变成两对字
li = 0;
for (n = 16; n; n--)
{
i = li + (hi - li) / 2;
SPI_Flash_Read((u8*)&t,UNI2GBKADDR+i*4+gbk2uni_offset,4);//读出8个字节
if (src == t[0])
break;
if (src > t[0])
li = i;
else
hi = i;
}
c = n ? t[1]: 0;
}
//else c=0;
}
return c;
}
这个地方是什么??如果是936是不是就不行啊
一周热门 更多>