Перейти к содержанию
    

У меня та же проблема, как и у автора темы. Никогда не имел дело с выделением памяти, подскажите это фишка RTOS или нет? и вообще что делает функция USBD_malloc(sizeof (USBD_CDC_HandleTypeDef)); куда она выделяет память, как и для чего? каковы последствия увеличения или уменьшения Heap_Size.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Функция выдает указатель на первый адрес созданной "последовательной кучке байт памяти" для буфера приема-передачи вроде. Проблема бывает из-за нехватки этой "кучки", либо неправильного описания типа (байт или слово).

Советую использовать примеры из комплекта "CUBE EXAMPLE" и подпиливать их для себя (либо выдрать участки кода), чем генерировать голый проект Куба. Либо сравнивать отличия.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Советую использовать примеры из комплекта "CUBE EXAMPLE" и подпиливать их для себя (либо выдрать участки кода), чем генерировать голый проект Куба. Либо сравнивать отличия.

Вы имеете ввиду вот это? http://www.st.com/web/en/catalog/tools/PF259243#

я там примера USB CDC не нашел. скачал сейчас библиотеку, нашел отличие в файлах usbd_cdc.c , хотя у меня уже была та же версия библиотеки 1.3.0 и даже версия файла та же. неужели Cube что то нужное режет в файлах

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, это самое.

Ну как-так не нашли...

Вот путь: STM_CUBE\STM32Cube_FW_F4_V1.3.0\Projects\STM324xG_EVAL\Applications\USB_Device\CDC_Standalone

CUBE не режет, он просто генерирует комментарий "здесь программист должен написать свой код обработки" ;-)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, это самое.

Ну как-так не нашли...

Вот путь: STM_CUBE\STM32Cube_FW_F4_V1.3.0\Projects\STM324xG_EVAL\Applications\USB_Device\CDC_Standalone

CUBE не режет, он просто генерирует комментарий "здесь программист должен написать свой код обработки" ;-)

я смотрел в папках для плат Discovery. спасибо большое! но работа с запросами все равно осталась непонятной...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня было такое. На Х64 не заработало. ПОСТАВИЛ х32, убил виндовый драйвер и поставил от ST. После этого всё заработало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Победил изменением размера кучи до 400. (win7 x64)

 

Вопрос - uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)

я так понимаю, что чтобы передать данные нужно в UserTxBufferFS запихнуть данные из Buf?

А правильно ли я понимаю, что чтобы прочитать с помощью CDC_Receive_FS (uint8_t* Buf, uint32_t *Len), то нужно перекачать данные из UserRxBufferFS в buf?

 

Мож кто примером поделится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возвращаюсь к теме (нашел поиском по USB Cube, уже и забыл, что своё). Сгенерил Кубом для STM32F3Discovery CDC. И, как видел в разных видео, пытаюсь использовать CDC_Transmit_FS, CDC_Receive_FS. Эти функции находятся в usbd_cdc_if.c. И они не видны из main.c.

И буфера уже есть там же:

/* It's up to user to redefine and/or remove those define */

/* Received Data over USB are stored in this buffer */

uint8_t UserRxBufferFS[APP_RX_DATA_SIZE];

/* Send Data over USB CDC are stored in this buffer */

uint8_t UserTxBufferFS[APP_TX_DATA_SIZE];

и тоже не видны из main.c

Как же ими пользоваться? Если внутри usbd_cdc_if.c, то как будто через задний проход пролез.

 

P.S. Еще один дурной вопрос. Установил Куб, запустил, из него установил библиотеки. Где примеры?? Или надо, все же скачать STM32CubeF3 и установить? Что же так мутно всё?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

P.S. Еще один дурной вопрос. Установил Куб, запустил, из него установил библиотеки. Где примеры?? Или надо, все же скачать STM32CubeF3 и установить? Что же так мутно всё?

у меня тут C:\Users\имя пользователя\STM32Cube\Repository\STM32Cube_FW_F4_V1.5.0\Projects

 

Если внутри usbd_cdc_if.c, то как будто через задний проход пролез.

по моему так и есть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня тут C:\Users\имя пользователя\STM32Cube\Repository\STM32Cube_FW_F4_V1.5.0\Projects

О, спасибо! Нашел и у себя. У меня сам Куб стоит на H:\Design. Никогда бы не догадался.

Разбираю пример CDC от Куба. Пока складывается впечатление, что писало несколько (много) разных людей. Не один раз порты, прерывания инициализируют... Главное, нет конкретного указания в документации, какие функции использовать. :w00t:

 

Одно доброе дело сделал. Проверяю, что USB инициализировалась перед использованием. В Main. Теперь USB устройство определяется стабильно.

while (hUsbDeviceFS.dev_state != USBD_STATE_CONFIGURED) { }

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мелкое замечание, не стоящее отдельной темы. Разве что, если бы была тема "STM32 в Кубе".

При установке в STM32CubeMX частоты MAIN_PLL для STM32F207, коэффициент умножения N невозможно выбрать меньше 192. Для этого частоту HSE придется делить до 1 MHz. А в руководстве на STM32F2xx сказано, что при 2 MHz джиттер меньше (при этом коэффициент N нужно бы взять, например, 120). А диапазон PLLN 192 - 432 показан просто конкретно для случая 1 MHz на входе PLL. А Кубописатели схалтурили, ограничились только этим.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может кто-то сталкивался...

Win10 64x, CubeMX, STM32F407 discovery

 

Проект генерится из куба, винда драйвера ставит и определят COM порт вроде как без ошибок. Но вот когда пытаюсь подключится терминальной программой, то получаю

Error in OpenPort: Internal Error when initializing COM3

И то, были моменты когда открытие СОМ порта происходило как положено

 

В какую сторону копать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В какую сторону копать?
В сторону другой терминальной программы? Это же у нее происходит Internal error.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В сторону другой терминальной программы? Это же у нее происходит Internal error.

Пробовал, и другую пробовал, и Putty пробовал...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если использовать версию STM32Cube_FW_F4_V1.13.0 то

IAR -- работает

GCC -- работает но с вышеизложенными симптомами

 

Проект под GCC подготавливал согласно данному видео https://www.youtube.com/watch?v=Q68PBMGceqs

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...