UINT8 code *DirConstData;請問這個定義在arm下怎么修改,ADS是不認這種定義的!
只要把關(guān)鍵字“code”去掉即可,這樣變量是被定義在RAM區(qū)
我是去掉了,但是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";
那你參考ADS下面的參考程序,ARM32\FILELIB9\EXAM1 還有很多不一樣的地方,所以您直接用這個參考程序就可以了
我創(chuàng)建txt文檔用的是那個例程,它也能創(chuàng)建文件夾嗎?
不可以,創(chuàng)建文件夾參考51下EXAM9
現(xiàn)在我的程序已經(jīng)可以檢查到根目錄里沒有指定的文件夾,下面就是創(chuàng)建文件夾,但怎么都創(chuàng)建不成功,創(chuàng)建文件和創(chuàng)建文件夾都是使用 CH375FileCreate( )函數(shù)?程序是怎么來區(qū)分是文件還是文件夾的?創(chuàng)建文件CREAT.TXT時把.TXT去掉,創(chuàng)建的也不是文件夾!
不是的,五樓已經(jīng)告訴您在EXAM9中了.您把UINT8 CreateDirectory( void )移植一下就可以了. 光修改文件名是不行的,還有一個文件屬性的問題: mCmdParam.Modify.mFileAttr = 0x10; 為0X10表示是文件夾
屬性!明白了,謝謝,我是移植的那個子程序,不過還沒有創(chuàng)建成功!再操作一下,謝謝!
FILE_DATA_BUF[0x1A] = ( (PUINT8I)&CH375vStartCluster )[3]; 這條指令在arm下應(yīng)該怎么改呢,實在看不懂( (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__,我們當時已經(jīng)考慮到可移植性和速度方面的問題了. #ifdef __C51__ .......... #esle 可以去掉.
請教一下關(guān)閉文件的函數(shù)除了自動更新長度之外,還有沒有其他的作用???
會把一些關(guān)鍵的變量,磁盤緩沖區(qū)等清除,FAT表的更新等等.你在操作完畢,特別寫操作一定要關(guān)閉文件.
這個問題我們看不到源程序,只能問你們了,謝謝!