一、问题描述
1.
<pre name="code" class="cpp">for(i=0;i<nLen;i++) print("%x ",(UINT8)USBREGS.fifoep0));
先打印出来fifoep0的数据是 80 0 80 0 dd 0 50 81
<pre name="code" class="cpp">for(i=0;i<nLen;i++) pbuf[i] = (UINT8)USBREGS.fifoep0;
接着打印pbuf数据是 0 2 12 20 11 20 0 0 ;同样的代码 我不打印fifo值直接打印pbuf则pbuf数值是 80 0 80 0 dd 0 50 81
2.
for(i=0;i<nLen;i++) print("%x ",(UINT8)*((VUINT8*)&USBREGS.fifoep0)));
先打印出来fifoep0的数据是 80 6 0 1 0 0 40 0
for(i=0;i<nLen;i++) pbuf[i] = (UINT8)*((VUINT8*)&USBREGS.fifoep0);
接着打印pbuf数据是80 6 0 1 0 0 40 0 ;同样的代码 我不打印fifo值直接打印pbuf则pbuf数值是 80 6 0 1 0 0 40 0
3.
for(i=0;i<nLen;i++) print("%x ",(UINT8)USBREGS.fifoep0));
先打印出来fifoep0的数据是 80 0 80 0 dd 0 50 81
for(i=0;i<nLen;i++) print("%x ",(UINT8)*((VUINT8*)&USBREGS.fifoep0)));
接着打印pbuf数据是0 7 5 1 2 40 00;同样的代码 我不打印fifo值直接打印pbuf则pbuf数值是 80 6 0 1 0 0 40 0
二、自己猜想
这个可能与数据结构有关,由于后面加了挺复杂的数据格式转化,以及不清楚fifo内部的结构,只知道他是一个结构体的成员 UINT32 fifoep0。希望后面深入学习可以解释这个问题。