ViKo 1 14 июля, 2014 Опубликовано 14 июля, 2014 · Жалоба Уже появилась в CubeMX поддержка STM32F3. Сделал проект для STM32F3Discovery. Подключаю к компьютеру - обнаруживается Virtual COM Port. Но как его использовать? В main программе на месте пользовательского кода - пустые места. Наверное, где-то описаны пара функций для работы - принять, послать. И буферы создать нужно. Не вижу ни в документации, ни в примерах. Поможите, люди добрые! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 15 июля, 2014 Опубликовано 15 июля, 2014 · Жалоба посмотрите в файле usbd_cdc_if.c, CDC_Transmit_FS и callback CDC_Receive_FS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 15 июля, 2014 Опубликовано 15 июля, 2014 · Жалоба посмотрите в файле usbd_cdc_if.c, CDC_Transmit_FS и callback CDC_Receive_FS Пробовал эти функции, но ... их не видит проект. Кое-что получается с USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf_Ch, 4); USBD_CDC_TransmitPacket(&hUsbDeviceFS); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 16 июля, 2014 Опубликовано 16 июля, 2014 (изменено) · Жалоба Пробовал эти функции, но ... их не видит проект. Кое-что получается с USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf_Ch, 4); USBD_CDC_TransmitPacket(&hUsbDeviceFS); Что значит не видит проект? Файл исключен из сборки? Самый простой способ проверить работу, поставить брекпоинт в функцию CDC_Receive_FS, затем в терминале на PC что либо отправить Изменено 16 июля, 2014 пользователем Integro Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 июля, 2014 Опубликовано 16 июля, 2014 · Жалоба Из мейн функции не видны. Можно инклюдами заголовок добавить. Но, если этого не сделано, значит их использовать не нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 16 июля, 2014 Опубликовано 16 июля, 2014 (изменено) · Жалоба Из мейн функции не видны. Можно инклюдами заголовок добавить. Но, если этого не сделано, значит их использовать не нужно. Если это не сделано значит это нужно сделать.) Не стоит доверять сырым либам от ST, мы в мае месяце не один баг у них нашли, благо обновления основную часть устранили. Для работы с Виртуальным портом необходимо использовать функции описанные выше. 1. Проверить приходят ли данные в CDC_Receive_FS для этого просто ставим бряк, как я писал выше, если приходят в данной функции вызываем вашу реализация функции обработки принятых данных. 2. Сделать обертку для CDC_Transmit_FS в каком ни-будь вашем файле ("Platform.c" или "hal_DeviceName.c" не суть что там у вас) CDC_Write. А вообще на данный момент не рекомендовал бы использовать Cube, подождите пару месяцев, а текущий проект доделайте на CMSIS. Изменено 16 июля, 2014 пользователем Integro Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 июля, 2014 Опубликовано 16 июля, 2014 · Жалоба Кабы я умел программировать USB в STM32, стал бы я связываться с Кубами, Либами, Миддлеварами и пр. Мой путь обратный - от вышеперечисленного к своему. Те функции, что я использовал (см. выше), позволили передавать массив символов. Вокруг них и буду танцевать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 17 июля, 2014 Опубликовано 17 июля, 2014 · Жалоба Кабы я умел программировать USB в STM32, стал бы я связываться с Кубами, Либами, Миддлеварами и пр. Мой путь обратный - от вышеперечисленного к своему. Те функции, что я использовал (см. выше), позволили передавать массив символов. Вокруг них и буду танцевать. Посмотрите на реализацию функции CDC_Transmit_FS а затем на ваш вариант, да! это одно и тоже. Теперь, с точки зрения работоспособности кода... можно писать говнокод. Но можно сделать красивее, практичнее и тд... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 20 июля, 2014 Опубликовано 20 июля, 2014 · Жалоба Вот функция из usbd_cdc_if.c /** * @brief CDC_Transmit_FS * Data send over USB IN endpoint are sent over CDC interface * through this function. * @note * * * @param Buf: Buffer of data to be send * @param Len: Number of data to be send (in bytes) * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY */ uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) { uint8_t result = USBD_OK; /* USER CODE BEGIN 8 */ USBD_CDC_SetTxBuffer(hUsbDevice_0, UserTxBufferFS, Len); result = USBD_CDC_TransmitPacket(hUsbDevice_0); /* USER CODE END 8 */ return result; } Вопрос - как?! Как используется параметр Buf? А вот еще один шедевр оттуда же. /** * @brief CDC_Receive_FS * Data received over USB OUT endpoint are sent over CDC interface * through this function. * * @note * This function will block any OUT packet reception on USB endpoint * untill exiting this function. If you exit this function before transfer * is complete on CDC interface (ie. using DMA controller) it will result * in receiving more data while previous ones are still not sent. * * @param Buf: Buffer of data to be received * @param Len: Number of data received (in bytes) * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL */ static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len) { /* USER CODE BEGIN 7 */ return (USBD_OK); /* USER CODE END 7 */ } Это означает, что мне нужно поработать там своей головой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 23 июля, 2014 Опубликовано 23 июля, 2014 (изменено) · Жалоба ... Ха, ща разберемся, у меня не так) это последняя версия Cube? Говорю сырой этот куб еще.... Изменено 24 июля, 2014 пользователем IgorKossak бездумное цитирование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 24 июля, 2014 Опубликовано 24 июля, 2014 · Жалоба Ха, ща разберемся, у меня не так) это последняя версия Cube? Говорю сырой этот куб еще.... Крайняя (не последняя, надеюсь :rolleyes:) Я тут решил взяться за изучение всех функций по-порядку, закопался... Пытался отладчик запустить, трассировку - ничего не видит. Пытался другой проект запустить - тоже самое. И логический анализатор ничего не показывает. А ведь показывал. Обновил Keil - не помогло. Обновил прошивку ST-Link на Discovery - вообще не программируется, не отлаживается. Вернул назад Keil, и ST-Link. По-прежнему, трассировка не работает. Кто сбил мой ераплан прицел? Горячие дни. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 24 июля, 2014 Опубликовано 24 июля, 2014 · Жалоба а галочки дебуг и трейс информация, 0 оптимизация (по умолчанию в кейле не 0, default - это -2 вроде) и прочая фигня стоят? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 24 июля, 2014 Опубликовано 24 июля, 2014 · Жалоба а галочки дебуг и трейс информация, 0 оптимизация (по умолчанию в кейле не 0, default - это -2 вроде) и прочая фигня стоят? Стоят. Достану из-под стола осциллограф, посмотрю на выводах... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tahoe 0 24 июля, 2014 Опубликовано 24 июля, 2014 · Жалоба Пытался отладчик запустить, трассировку - ничего не видит. Ну да, колбэки - они такие, прямолинейный подход не поможет. ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 24 июля, 2014 Опубликовано 24 июля, 2014 · Жалоба Ну да, колбэки - они такие, прямолинейный подход не поможет. ;) Нет, я другой проектик запустил, там нет таких страхов. Но все равно ЛА не работает. В окне "Watch 1" вижу, что переменная меняется, а в окне Logic Analyzer - нет. Она по разным цепям попадает. Хотя на SWO вижу, что-то выдается. P.S. не ползет время в ЛА. P.P.S. Да, и перемычку SB10 на F3Discovery я давно запаял. И что-то видел раньше, не помню, то ли, что хочу сейчас, или другое... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться