Здравствуйте, Уважаемые форумчане!
На 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);
}
Один фиг перестаёт принимать байты через некоторое время
Приём данных: кидаю в буфер, кидаю сообщение задаче, та выдёргивает из буфера, парсит, отвечает. Другая задача от программы мк получает пакеты на передачу и также вызывает выше указанный код.
Кто нибудь сталкивался с таким что затыкается прием данных от хоста?