51定义转ARM问题

UINT8 code *DirConstData;请问这个定义在arm下怎么修改,ADS是不认这种定义的!

只要把关键字“code”去掉即可,这样变量是被定义在RAM区


我是去掉了,但是ADS提示编译出错,在这里:DirConstData = ". \x10\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x21\x30\x0\x0\x0\x0\x0\x0.. \x10\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x21\x30\x0\x0\x0\x0\x0\x0"; 200942114422231.jpg


那你参考ADS下面的参考程序,ARM32\FILELIB9\EXAM1 还有很多不一样的地方,所以您直接用这个参考程序就可以了


我创建txt文档用的是那个例程,它也能创建文件夹吗?


不可以,创建文件夹参考51下EXAM9


现在我的程序已经可以检查到根目录里没有指定的文件夹,下面就是创建文件夹,但怎么都创建不成功,创建文件和创建文件夹都是使用 CH375FileCreate( )函数?程序是怎么来区分是文件还是文件夹的?创建文件CREAT.TXT时把.TXT去掉,创建的也不是文件夹!


不是的,五楼已经告诉您在EXAM9中了.您把UINT8 CreateDirectory( void )移植一下就可以了. 光修改文件名是不行的,还有一个文件属性的问题: mCmdParam.Modify.mFileAttr = 0x10; 为0X10表示是文件夹


属性!明白了,谢谢,我是移植的那个子程序,不过还没有创建成功!再操作一下,谢谢!


FILE_DATA_BUF[0x1A] = ( (PUINT8I)&CH375vStartCluster )[3]; 这条指令在arm下应该怎么改呢,实在看不懂( (PUINT8I)&CH375vStartCluster )[3]这是什么意思!


看头文件: typedef unsigned char idata *PUINT8I; 改为: FILE_DATA_BUF[0x1A] = ( (PUINT8)&CH375vStartCluster )[3];

idata显然在ARM下面是不支持的. 注意下面的语句: #ifdef __C51__ // 针对MCS51提速 FILE_DATA_BUF[0x1A] = ( (PUINT8I)&CH375vStartCluster )[3]; /* 自身的起始簇号 */ FILE_DATA_BUF[0x1B] = ( (PUINT8I)&CH375vStartCluster )[2]; FILE_DATA_BUF[0x14] = ( (PUINT8I)&CH375vStartCluster )[1]; FILE_DATA_BUF[0x15] = ( (PUINT8I)&CH375vStartCluster )[0]; FILE_DATA_BUF[0x20+0x1A] = ( (PUINT8I)&UpDirCluster )[3]; /* 上级目录的起始簇号 */ FILE_DATA_BUF[0x20+0x1B] = ( (PUINT8I)&UpDirCluster )[2]; FILE_DATA_BUF[0x20+0x14] = ( (PUINT8I)&UpDirCluster )[1]; FILE_DATA_BUF[0x20+0x15] = ( (PUINT8I)&UpDirCluster )[0]; #else // 其它单片机 FILE_DATA_BUF[0x1A] = (UINT8)CH375vStartCluster; /* 自身的起始簇号 */ FILE_DATA_BUF[0x1B] = (UINT8)(CH375vStartCluster>>8); FILE_DATA_BUF[0x14] = (UINT8)(CH375vStartCluster>>16); FILE_DATA_BUF[0x15] = (UINT8)(CH375vStartCluster>>24); FILE_DATA_BUF[0x20+0x1A] = (UINT8)UpDirCluster; /* 上级目录的起始簇号 */ FILE_DATA_BUF[0x20+0x1B] = (UINT8)(UpDirCluster>>8); FILE_DATA_BUF[0x20+0x14] = (UINT8)(UpDirCluster>>16); FILE_DATA_BUF[0x20+0x15] = (UINT8)(UpDirCluster>>24); #endif

你在ARM上用的肯定不要定义__C51__,我们当时已经考虑到可移植性和速度方面的问题了. #ifdef __C51__ .......... #esle 可以去掉.


请教一下关闭文件的函数除了自动更新长度之外,还有没有其他的作用啊?


会把一些关键的变量,磁盘缓冲区等清除,FAT表的更新等等.你在操作完毕,特别写操作一定要关闭文件.


这个问题我们看不到源程序,只能问你们了,谢谢!


只有登录才能回复,可以选择微信账号登录