отличный пример просто бери и используй
НО у него отправочный буфер всего 64байта
И возникли проблемы с досылкой нескольких пакетов
пробовал сделать так
Код: Выделить всё
uint32_t CDC_Send_DATA (uint8_t *ptrBuffer, uint8_t Send_length)
{
/*if max buffer is Not reached*/
if(Send_length < VIRTUAL_COM_PORT_DATA_SIZE)
{
/*Sent flag*/
packet_sent = 0;
/* send packet to PMA*/
UserToPMABufferCopy((unsigned char*)ptrBuffer, ENDP1_TXADDR, Send_length);
SetEPTxCount(ENDP1, Send_length);
SetEPTxValid(ENDP1);
}
else
{
while (Send_length>VIRTUAL_COM_PORT_DATA_SIZE)
{
packet_sent = 0;
UserToPMABufferCopy((unsigned char*)ptrBuffer, ENDP1_TXADDR, Send_length);
SetEPTxCount(ENDP1, Send_length);
SetEPTxValid(ENDP1);
//
while(packet_sent!=1);
Send_length=Send_length-64;
ptrBuffer=ptrBuffer+64;
}
packet_sent = 0;
/* send packet to PMA*/
UserToPMABufferCopy((unsigned char*)ptrBuffer, ENDP1_TXADDR, Send_length);
SetEPTxCount(ENDP1, Send_length);
SetEPTxValid(ENDP1);
return 0;
}
return 1;
}
Код: Выделить всё
while(packet_sent!=1);Код: Выделить всё
void EP1_IN_Callback (void)
{
packet_sent = 1;
}


