按照书的讲解自己写USB枚举部分,发现USB端点0输入中断一直无法产生。
1.首先是怀疑是不是没有清理中断位,导致没有EP0的输入中断产生?
刚进入UsbEp0Out函数时,就调用了D12ReadEndpLastStatus(0);这个函数清中断了,应该不是这个问题。
-
uint8 D12ReadEndpLastStatus(uint8 Endp)
-
{
-
// This command also resets the corresponding interrupt ?ag
-
// in the interrupt register
-
D12WriteCommand(0x40+Endp); //Read last transaction status register
-
return D12ReadByte();
-
}
2.再次是怀疑是不是中断时间太长了,导致端点0中断没有响应?
以前感觉书中的打印太乱了,于是就写了自己的printf打印,把UsbEp0Out中的这些printf全部删去,USBEpOIn的printf就不删了,要不就算是发生了EPO输入中断也不知道。
幸福来的太突然了,这次竟然打印出了EP0输入中断。
3.分析一下原因:
书中P92上部,“当前面的数据成功发送后,端点0输入中断就会产生”。
阅读(5054) | 评论(0) | 转发(0) |