移植8位机的C的程序 8位C的读取4个字节的数据 Block0_offset=*((ULONG*)(&SD_Buffer[0x1c6])); 可能因为在ARM中&SD_Buffer[0x1c6]不是一个4的倍数 我在IAR调试中就跑到__HaltDAbort错误中去了
只能改为这个了 Block0_offset=SD_Buffer[0x1c6]; Block0_offset+=SD_Buffer[0x1c7]<<8; Block0_offset+=SD_Buffer[0x1c8]<<16; Block0_offset+=SD_Buffer[0x1c9]<<24;
有没有其他办法呢
还有数据结构中这样定义 bpb=(struct bpb710 *)(&SD_Buffer[0x0B]); 也跑飞了 在32位机器中 定义的struct typedef struct TEST_ST { unsigned char a; unsigned long b; unsigned char c; }S_T;
Uart_Printf("
size of struct:%d",sizeof(S_T));
得到的结果是 size of struct:12
typedef struct TEST_ST { unsigned char a; unsigned char a1; unsigned long b; unsigned char c; }S_T;
得到的结果是 size of struct:12
只要不是连续放置的的字节,都放在长整形里面了 看来
我如此定义的数据 bpb=(struct bpb710 *)(&SD_Buffer[0x0B]); 就要改成自己写一个程序 慢慢小心的放置了 看来 有更好的方法吗?
|