Микроконтроллер STM32F407VGT6, установленный на плате STM32F4DISCOVERY имеет, наверно, весь возможный набор возможностей для связи с внешним миром. И при желании, если по изгаляться, вс е они могут быть использованы для связи с компьютером.
Однако, более привычными способами обмена данными с компьютером являются COM-port, USB и Ethernet.
К сожалению, отладочная плата STM32F4DISCOVERY не предоставляет возможность обмениваться данными с компьютером через COM-port и Ethernet без подключения каких либо внешних устройств, дополнительных плат или оборудования. Зато STM32F4DISCOVERY имеет микро-USB и это значит что для организации обмена данными с компьютером первоначально можно ориентироваться именно на использование этого микро-USB.
В этом случае мне пока известны две возможности
К сожалению на сайте компании я не нашел примеров использования CDC и HID именно для STM32F4DISCOVERY. Есть какие то примеры, но они ориентированы на подключение дополнительных плат: STM32F4DIS-BB, STM32F4DIS-LCD, STM32F4DIS-CAM, которых у меня пока нет. Поэтому и примеры не работают, а для того что бы перелопатить эти примеры под STM32F4DISCOVERY нужно иметь достаточно знаний и опыт, которых тоже пока нет.
Я довольно долго искал рабочие примеры в интернет. Для CooCox мне вообще не попалось ничего, а вот под IAR EWARM в конце концов нашлось. Мне попалась на глаза статья "Примеры работы с USB Device для STM32F4-Discovery" на сайте easyelectronics.ru (http://firsthand.ru/node/308/). К ней прилагались примеры, которые у меня заработали сразу.
Используя эти примеры как основу и будет организовываться обмен STM32F4DISCOVERY с компьютером.
Но прежде чем перейти к конкретике, немного размышлений. Мне пока не известно, как будет организован обмен с компьютером в реальном устройстве. Возможно будет использован RS-485, может останется вариант с USB или, не исключено, будет Ethernet. Поэтому процесс обмена хочется организовать так, чтобы по минимуму вносить изменения в программу для микроконтроллера. А это, по моему возможно, когда между программой обработки данных в микроконтроллере и каналом передачи будут использоваться буферы.
То есть, сама программа обработки данных в микроконтроллере "берет" данные из входного буфера и после обработки, "кладет" в выходной буфер и ничего "не знает" как и откуда поступает во входной буфер и куда и как уходит из выходного буфера.
При такой организации, по моему, переход между COM-port, USB и Ethernet потребует минимальных изменений в коде для микроконтроллера.