bullit 0 7 октября, 2016 Опубликовано 7 октября, 2016 · Жалоба Здравствуйте, Уважаемые форумчане! На STM32F105 реализовываю VCP (CDC) HAL (версия 1.1.0) с помощью CubeMX + FreeRTOS. При "частом" запросе (22 байта в 10 мс) вешается приём данных от хоста. Паралельно из двух задач вызывается result = CDC_Transmit_FS(buf, len); Защитил мьютексами, защитил запретом прерывания: osStatus status = osMutexWait(MutexUSBSend_id, timeout); if (status == osOK) { do { //cnt_send++; // wait N millisek __disable_irq(); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET); result = CDC_Transmit_FS(buf, len); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET); __enable_irq(); osDelay(1); } while( result != USBD_OK /*|| cnt_send < 3*/); osMutexRelease(MutexUSBSend_id); } Один фиг перестаёт принимать байты через некоторое время Приём данных: кидаю в буфер, кидаю сообщение задаче, та выдёргивает из буфера, парсит, отвечает. Другая задача от программы мк получает пакеты на передачу и также вызывает выше указанный код. Кто нибудь сталкивался с таким что затыкается прием данных от хоста? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bullit 0 7 октября, 2016 Опубликовано 7 октября, 2016 · Жалоба Решение нашлось, и было не в USB. Тему можно закрывать! Всем спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться