"Не обязан", да согласен, но если генерирует, то корректно. Нельзя быть на половину беременной. Я не писал, что это проблема, всего лишь написал, что не до конца написанный код и новичкам, как я, стоит на это обратить внимание.
Решил сегодня попробовать виртуальный COM-порт, используя USB микроконтроллера. Активировал функцию в Кубе и полез в сеть искать пример функции "Эхо" для его проверки. Оказалось Куб уже сам генерирует эту функцию, но она не до конца написана:
static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)
{
/* USER CODE BEGIN 6 */
USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
CDC_Transmit_FS(Buf, *Len); // CubeMX не генерирует эту строчку
USBD_CDC_ReceivePacket(&hUsbDeviceFS);
return (USBD_OK);
/* USER CODE END 6 */
}
внутри не хватает одной строчки. После ее вставки функция "Эхо" заработала.
Здравствуйте. Я начинающий в освоении STM32, да собственно в микроконтроллерах вообще. Осваивал подключение OLED дисплея на SSD1306 на STM32F103CBT6 библиотека для работы с использованием DMA была взята отсюда https://github.com/SL-RU/sdmplayer/tree/master/src/v002/Hardware . Работаю в среде System Workbench for STM32 в связке с CubeMX. В начале в Кубе использовалась прошивка STM32Cube_FW_F1_V1.4.0 все работало замечательно. Затем Куб обновил прошивку до версии STM32Cube_FW_F1_V1.6.0 и моя программа на микроконтроллере перестала нормально работать. При переходе назад на старую версию прошивки в Кубе (1.4.0) все опять работает замечательно. Так же для SSD1306 пользовался библиотекой без использования DMA (тот же автор библиотеки) на обоих версиях прошивки в Кубе (1.4.0 и 1.6.0) все работает. Возможно в новой версии разработчики где-то накосячили.