-
在端点0发送缓存区的地址寄存器中的值,是端点0发送缓存区在Packet Buffer中的偏移地址。而端点0接收缓存区的地址寄存器中的值,是端点0接收缓存区在Packet Buffer中的偏移地址。
如前所说,Buffer Description Table从理论上占有128个字节。但对于具体的应用,不是每个应用都会用到8个端点的16个方向的。所以,对于那些没有用到的端点寄存器,我们可以不考虑为他们预留位置。
在ST提供的例程中,通常这么定义:
#define BTABLE_ADDRESS (0x00)
/* EP0 */
/* rx/tx buffer base address */
#define ENDP0_RXADDR (0x18)
#define ENDP0_TXADDR (0x58)
这3句定义,意味着:
1, 端点0的接收缓存区位于Packet Buffer的0x18地址。
2, 端点0的发送缓存区位于Packet Buffer的0x58地址。
3, Buffer Description Table 位于Packet Buffer的前24字节。24个字节意味着应用需要使用6个寄存器,即3个端点。
4, 端点0的接收缓存区长度为64字节。
下载 (56.55 KB)
2010-11-26 16:32
-
好东西呀
-
其它中断也是如此,我测的应该比较细了,先清没问题的,清完随便加点垃圾也没问题,只是不能是最后清。
用库函数的也没问题,原因同上。很久以前其它的芯片我也发现过类似问题。
-
标记一下,正在看stm8l152c6的资料,准备使用
-
学习。。。
-
就没有人能帮我下不
另外我也不晓得发在这个版块对不对,知道的麻烦告诉下,谢谢啦
-
这个地址是系统弹出的MessageBox提示的,还是串口调试信息打印出来的呢?
你可以用IDA反汇编你的应用程序,然后找到相应的地址,从而确定出错的原因。
我一般都是这么做的,基本都能找到问题。
-
该内容应该是正在编译,没显示其它的情况…如果不能正常Sysgen,提示和你现在贴的不同…
-
学习了
-
隐藏A,显示B
-
如果想做驱动的话建议看,linux 设备驱动开发3,不过难度相当大
要有心理准备
-
在pc机端用个232转485卡或串转网卡之类的东西,保证pc机可以使用485通讯,单片机部分按照485的电路做就ok了。为了解决冲突,单片机端需要使用地址等区分一下,具体的看你的约定了!
-
后面那一段俺看了一会儿,也没太懂。
-
核探测器---你是干哪个行当的???
-
谢谢FLandY1982的解答。看来问题很快就能解决了。
-
这个V1.3.0版本的code从2003年起就挂在官网了,有很多客户都用过的。没有出现过你说的编译错误。
-
引用 28 楼 gsymichael 的回复:
传输有问题并不一定是控制器有问题,也有可能你的连线不合适。硬件部分我不是很了解,没有建议。
只有512M我估计是在获取TotalSectorNumber的时候出错。但是不是很确定。
你可以在SDmemory部分把DISK_INFO的di_total_sectors成员打出来看看是多少,乘上512就是容量大小了。
看了前面的回复,感觉硬件传输过程中出错导致最终mount不上的可能性比较大,因为那个数据看似太乱了,跟正常情况下差别比较大
----------
1. 既然存储管理器里面可以看到,能不能把分区格式化掉或者配置成自动格式化尝试一下
2. 尝试一下把sd卡的clock降下来,直接修改"BaseClockFrequency"=dword:5B8D800就行了,
因为有些硬件上的问题在频率相对比较低的情况下概率就会变小,而且从识别的前期来看,也不是所有的数据都错误
-
芯片的定位不一样,价钱也很贵,比如现在用的一刻MPC8548E单芯片要1000+RMB。
引用 10 楼 uqjeaxts 的回复:
-
jf。。。就都开始放假了???
-
你可以参考那个例子。