[ZLG-ARM] 《ARM嵌入式软件开发实例(一)》USB驱动程序有错

[复制链接]
2060|2
 楼主| wahahaabc 发表于 2007-9-6 08:18 | 显示全部楼层 |阅读模式
《ARM嵌入式软件开发实例(一)》P212&nbsp;USB_ReadISR()函数有错,<br />例如:优先级为0的任务要从端点索引2(就是端点1OUT)读取100字节,由于端点索引2<br />的包大小为16字节,所以,需要读7次,我们来看一下第7次端点索引2&nbsp;out中断时,调用<br />USB_ReadISR()函数会发生什么。当产生第7次端点索引2OUT中断调用USB_ReadISR()函数时,pUsb-&gtMax[0]为100,<br />pUsb-&gtCnt为96,执行len=pUsb-&gtMax[0]-pUsb-&gtCnt以后,len为4,则继续向下执行<br />len=(INT8U)D12_ReadEndpoint(endp,(INT8U)len,pBuff+pUsb-&gtCnt);<br />如果第7次端点索引2OUT中断接收到的数据是16字节,那么,上述代码只读取了前4个字节,<br />后面的12字节被扔掉,此时,优先级为0的任务是接收到了100字节的数据,这没有错,<br />但是,根据P203的设计思想,如果等待列表中还有其它任务(除了优先级为0的任务)在等待接收,则应该把后12字节存入<br />等待列表中优先级最高的那个任务的缓冲区,而不是扔掉后面的12字节
 楼主| wahahaabc 发表于 2007-9-6 17:33 | 显示全部楼层

怎么没人

怎么没人
您需要登录后才可以回帖 登录 | 注册

本版积分规则

119

主题

627

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部