阅读:1662回复:10
请教cy68013一个简单问题,
我在看CY例程的固件程序,其中fw.c写到有 if ((WORD)&DeviceDscr & 0xe000) 应该是取结构体DeviceDscr的地址与0xe000相与。我不太明白设备描述符DeviceDscr结构体是从RAM地址的0xe000开始存放的?查了些资料也没有弄清楚,请大虾们赐教!
|
|
沙发#
发布于:2004-04-28 10:34
顶一下,要不快找不见了。
|
|
板凳#
发布于:2004-04-28 10:41
我郁闷 顺便帮你顶一下 :( :( :(
|
|
|
地板#
发布于:2004-04-28 14:07
谁能帮帮我呀,指点我???小生不胜感激.
|
|
地下室#
发布于:2004-04-29 10:21
关注中。。。。。
|
|
|
5楼#
发布于:2004-04-29 13:15
提示你一下:
if ((WORD)&DeviceDscr & 0xe000)的意思是判断DeviceDscr是否位于大于0xe000的地址空间,而这正是外部数据空间 |
|
6楼#
发布于:2004-04-29 14:30
我注意到从0xe000开始为data Ram,但if ((WORD)&DeviceDscr & 0xe000)的意思是判断DeviceDscr的地址一定在0xe000。在fx2.h中它的前面还有DSCR结构体,我是想C中应该是顺序存放自定义的变量吧,那么它也不应该在地址0xe000吧?
:(郁闷呀,请踊跃发言!谢谢 |
|
7楼#
发布于:2004-04-29 14:37
用SUDPTRH:L指向描速表首地址的时候,设备描述必须保存在片内的8K以内,所以假如描述表保存在0xE000以外的地址就必须移动到8K以内。这段代码就是这个作用。
[编辑 - 4/29/04 by upstar] |
|
8楼#
发布于:2004-04-29 14:53
感谢upstar,但好像没有说明白为什么自举前DeviceDscr的地址一定在0xe000。
|
|
9楼#
发布于:2004-04-29 15:36
上面这个IF语句的判断,不是说正好就在0xe000而是说地址大于0xe000。
|
|
10楼#
发布于:2004-04-29 16:27
upstar说得有道理,谢谢upstar。
|
|