Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

STM32 отладка USB проекта

Ср дек 18, 2019 01:23:13

Доброго времени суток! Не пойму в чем проблема. Разрабатываю проект с использованием USB, устройство в компьютере определяется как виртуальный COM порт. Собираю проект в STM32CubeIDE. На STM32, в цикле отправляю данные, на компьютере через терминал проверяю - данные приходят. К STM32 подключаю отладчик ST-Link, что бы посмотреть что происходит в программе, после запуска отладки, передача данных прекращается (терминал на ПК не получает данные). Отключаю отладчик, перезагружаю STM32, передача данных снова возобновляется. Так же обстоят дела и с эхо-передачей, с помощью терминала отправляю данные, STM'ка мне их обратно отправляет. Подключаю отладчик, что бы посмотреть, что пришло от ПК, бах... все рушится - ничего не принимает и ответ не отправляет, отключаю отладчик, перезагружаю STM'ку - все работает. Подскажите пожалуйста, как все таки нормально произвести отладку, что бы все нормально работало???

Re: STM32 отладка USB проекта

Ср дек 18, 2019 08:32:19

А каким образом вы предполагаете параллельную работу USB и отладчика, если USB - это процесс реального времени, а отладчик все тайминги к чертовой матери убивает?
Если так хочется рилтаймовой отладки, есть сеггеровские причиндалы. Но лично я просто подключал "свисток" на pl2303 и на скорости в 3Мбод в UART выплевывал нужную информацию.
И да, куб - зло. Возможно, виной является именно калокуб.

Re: STM32 отладка USB проекта

Ср дек 18, 2019 09:48:45

после запуска отладки, передача данных прекращается (терминал на ПК не получает данные)
Ты что, при открытом COM-порте перезапускаешь микроконтроллер? Запускай отладку и только после этого подключай USB, проходи энумерацию, открывай COM-порт.

Эдика не слушай, всё нормально отлаживается на USB, главное понимать что делаешь и к чему приведёт останов в конкретной точке программы. Ну да, после каких-то остановов надо будет переподключить USB, но ничего в этом страшного нет. Это всяк быстрее, чем перекомпилировать/перезагружать программу, чтобы посмотреть значение переменной через UART.
Ответить