реклама на сайте
подробности

 
 
> STM32 VCP CDC затыкается прием данных от хоста (РЕШЕНО)
bullit
сообщение Oct 7 2016, 07:13
Сообщение #1


пуля
****

Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959



Здравствуйте, Уважаемые форумчане!

На 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);
    }

Один фиг перестаёт принимать байты через некоторое время

Приём данных: кидаю в буфер, кидаю сообщение задаче, та выдёргивает из буфера, парсит, отвечает. Другая задача от программы мк получает пакеты на передачу и также вызывает выше указанный код.

Кто нибудь сталкивался с таким что затыкается прием данных от хоста?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01352 секунд с 7
ELECTRONIX ©2004-2016