Цитата(0men @ Feb 27 2018, 16:55)

Значит надо копать внутрь этих функций.
копаю. не могу докопатся.
я посмотрел в демо проекте пользуются флагом
Код
if (packet_sent == 1)
CDC_Send_DATA((uint8_t *)Receive_Buffer, strlen((char *)Receive_Buffer));
этот флаг устанавливается в
Код
void EP1_IN_Callback (void)
{
packet_sent = 1;
}
я вставил костыль
Код
uint32_t CDC_Send_DATA (uint8_t *ptrBuffer, uint8_t Send_length)
{
uint32_t timeout=0;
/*if max buffer is Not reached*/
if(Send_length < VIRTUAL_COM_PORT_DATA_SIZE)
{
//------moi kostyl---------------
while(packet_sent == 0)
{
if(++timeout > 10000) break;
}
//---------------------------------
/*Sent flag*/
packet_sent = 0;
/* send packet to PMA*/
UserToPMABufferCopy((unsigned char*)ptrBuffer, ENDP1_TXADDR, Send_length);
SetEPTxCount(ENDP1, Send_length);
SetEPTxValid(ENDP1);
}
else
{
return 0;
}
return 1;
}
так работает но мне это не нравиться. как можно разрулить это красивее?
Сообщение отредактировал Jenya7 - Feb 27 2018, 13:47