sd卡為2GB,金士頓;用winhex查了一下卡的fat32,DBR大概在7747sector,第0扇區(qū)是MBR。
printf("res=%x\r\n",CH376DiskCapacity(memory));//容量。。。。問題1所在 printf("test1=%ld",memory); printf("res=%x\r\n",CH376DiskQuery(memory));// 剩余。。。。問題2所在 printf("test1=%ld",memory); 你這種打印方法不對吧?memory是個指針,打印指針是什么意思。 printf("test0=%02x\n",memory[0]); printf("test1=%02x\n",memory[1]); printf("test2=%02x\n",memory[2]); printf("test3=%02x\n",memory[3]);
不是的啊,memory是我之前定義的一個unsigned long memory變量啊?在main函數(shù)之前定義的
在13樓樓頂
那就更錯了,CH376DiskCapacity(PUINT32 DiskCap) CH376DiskCapacity的參數(shù)是一個指針。 基本確定不是376的問題。好好看看程序,檢查一下你的程序。另外提示你一下,如果你用的是keil不要打印%l 可能會有問題。
memory不是一個數(shù)組,是一個無符號長整型變量,最主要的是,我用打印的方式跟蹤到最原始的讀spi函數(shù)xReadCH376Data(),就是在這里跟蹤到讀回來就是5f 7f 7f 7f,這個底層函數(shù)返回值我printf的。
你在回帖前好好看一下程序。你應(yīng)該這樣做: CH376DiskCapacity需要傳遞一個long型的指針變量。是一個地址 CH376DiskCapacity(&memory)
我用的是iccavr7.22,破解的,哦。。。 可是我不理解,為什么在最底層讀函數(shù),這個32bit的數(shù)據(jù),會讀到5f 7f 7f 7f呢
你好好理解一下吧,問題已經(jīng)給你指出來了。 關(guān)于printf,你可以用串口直接發(fā)送,不要字符轉(zhuǎn)換。