sd卡为2GB,金士顿;用winhex查了一下卡的fat32,DBR大概在7747sector,第0扇区是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函数之前定义的
在13楼楼顶
那就更错了,CH376DiskCapacity(PUINT32 DiskCap) CH376DiskCapacity的参数是一个指针。 基本确定不是376的问题。好好看看程序,检查一下你的程序。另外提示你一下,如果你用的是keil不要打印%l 可能会有问题。
memory不是一个数组,是一个无符号长整型变量,最主要的是,我用打印的方式跟踪到最原始的读spi函数xReadCH376Data(),就是在这里跟踪到读回来就是5f 7f 7f 7f,这个底层函数返回值我printf的。
你在回帖前好好看一下程序。你应该这样做: CH376DiskCapacity需要传递一个long型的指针变量。是一个地址 CH376DiskCapacity(&memory)
我用的是iccavr7.22,破解的,哦。。。 可是我不理解,为什么在最底层读函数,这个32bit的数据,会读到5f 7f 7f 7f呢
你好好理解一下吧,问题已经给你指出来了。 关于printf,你可以用串口直接发送,不要字符转换。