记录下今天调试USB读取FIFO函数遇到的问题

来源:互联网 发布:南朝 知乎 编辑:程序博客网 时间:2024/06/03 19:33

一、问题描述

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。希望后面深入学习可以解释这个问题。


0 0