| |
《ARM嵌入式软件开发实例(一)》USB驱动程序有错 |
|
|
| 出处:21ic 时间: 2007-09-07 |
|
wahahaabc 发布于 2007-9-6 8:18:00 《ARM嵌入式软件开发实例(一)》P212 USB_ReadISR()函数有错, 例如:优先级为0的任务要从端点索引2(就是端点1OUT)读取100字节,由于端点索引2 的包大小为16字节,所以,需要读7次,我们来看一下第7次端点索引2 out中断时,调用 USB_ReadISR()函数会发生什么。当产生第7次端点索引2OUT中断调用USB_ReadISR()函数时,pUsb->Max[0]为100, pUsb->Cnt为96,执行len=pUsb->Max[0]-pUsb->Cnt以后,len为4,则继续向下执行 len=(INT8U)D12_ReadEndpoint(endp,(INT8U)len,pBuff+pUsb->Cnt); 如果第7次端点索引2OUT中断接收到的数据是16字节,那么,上述代码只读取了前4个字节, 后面的12字节被扔掉,此时,优先级为0的任务是接收到了100字节的数据,这没有错, 但是,根据P203的设计思想,如果等待列表中还有其它任务(除了优先级为0的任务)在等待接收,则应该把后12字节存入 等待列表中优先级最高的那个任务的缓冲区,而不是扔掉后面的12字节
wahahaabc 发布于 2007-9-6 17:33:00 怎么没人
zlgARM 发布于 2007-9-7 8:23:00 您好: 谢谢指教。请致电020-28872412。
|
| 【关闭】 【打印】 |
|
|
|
|