|
/*******************************************************************************
* Function Name : EP1_IN_Callback
* Description :
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
void EP1_IN_Callback (void)
{
int32_t len = 0;
if (1 == packet_sent)
{
len = USB_SendWriteIndex - USB_SendReadIndex;
if (len > 0)
{
if(len > VIRTUAL_COM_PORT_DATA_SIZE){len = VIRTUAL_COM_PORT_DATA_SIZE;}
UserToPMABufferCopy((u8 *)(&USB_Sendbuf[USB_SendReadIndex]), ENDP1_TXADDR, len);
SetEPTxCount(ENDP1, len);
USB_SendReadIndex += len;
SetEPTxValid(ENDP1);
}
else
{
packet_sent = 0;
USB_SendWriteIndex = 0;
USB_SendReadIndex = 0;
}
}
}
/*******************************************************************************
* Function Name : SOF_Callback / INTR_SOFINTR_Callback
* Description :
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
void SOF_Callback(void)
{
int32_t len = 0;
if(bDeviceState == CONFIGURED)
{
if(0 == packet_sent)
{
len = USB_SendWriteIndex - USB_SendReadIndex;
if (len > 0)
{
if(len > VIRTUAL_COM_PORT_DATA_SIZE){len = VIRTUAL_COM_PORT_DATA_SIZE;}
UserToPMABufferCopy((u8 *)(&USB_Sendbuf[USB_SendReadIndex]), ENDP1_TXADDR, len);
SetEPTxCount(ENDP1, len);
USB_SendReadIndex += len;
SetEPTxValid(ENDP1);
packet_sent = 1;
}
else
{
USB_SendWriteIndex = 0;
USB_SendReadIndex = 0;
}
}
}
else
{
packet_sent = 0;
USB_SendWriteIndex = 0;
USB_SendReadIndex = 0;
}
}
1. 目前USB发送数据用的是上面这段代码,是在USB中断里执行的,一次最多只能发送64个字节,这个规定能突破吗?
2.因为是在中断里发送数据,所以外部应用程序装载发送数据时,需要关闭一下中断,这个也是影响速度吧,要怎么好呢?
|
|